请问已经编译的安卓 so 文件添加比较复杂的逻辑代码

34 天前
 NouveauNom

简单的修改逻辑,比如把 a==0 改成 a!=0 这种是可以的,但是添加复杂的逻辑应该是怎么操作

2743 次点击
所在节点    Android
11 条回复
wnpllrzodiac
34 天前
arm 汇编大神啊。前提是 so 没加固
LLaMA2
34 天前
自己写自己的 so 库 dlopen 加载已有的 so 库,

然后自己看看能不能在自己的 so 库中 hook 目标
Donaldo
33 天前
hook ,改 so 很难。
seers
33 天前
字节不是有个 hook 框架,可以看看
653513754
33 天前
inlinehook
NouveauNom
33 天前
@LLaMA2
@Donaldo
@seers
hook 倒是简单,但是现在这个需求只能直接改 so
Donaldo
33 天前
@NouveauNom #6 真没动手干过这种大规模的修补,直觉上来看,或许可以靠把你所要执行的逻辑写好汇编 patch 到 so 的某个位置(这个位置不能覆盖掉原本的程序?),然后再从跳转上入手。
nightwitch
33 天前
@LLaMA2 安卓现在 dlopen 有白名单,只允许 dlopen ndk 里的那些 so (当然这个机制也有办法可以绕过去,绕过去的话有上架 Google Play 的风险)
seers
33 天前
@NouveauNom 在符号自己写个 bl 吧,然后找个空段填逻辑
653513754
33 天前
静态 patch
billccn
33 天前
把整个 so 当成外部库写进新逻辑里,然后编译的时候作为静态引用,就能合并进新的 so 里面了。稍微手写一个工具确保新项目引用一下原 so 里面每一个 symbol.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1091955

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX