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

92 天前
NouveauNom  NouveauNom

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

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

然后自己看看能不能在自己的 so 库中 hook 目标
Donaldo
Donaldo
92 天前
hook ,改 so 很难。
seers
seers
91 天前
字节不是有个 hook 框架,可以看看
653513754
653513754
91 天前
inlinehook
NouveauNom
NouveauNom
91 天前
@LLaMA2
@Donaldo
@seers
hook 倒是简单,但是现在这个需求只能直接改 so
Donaldo
Donaldo
91 天前
@NouveauNom #6 真没动手干过这种大规模的修补,直觉上来看,或许可以靠把你所要执行的逻辑写好汇编 patch 到 so 的某个位置(这个位置不能覆盖掉原本的程序?),然后再从跳转上入手。
nightwitch
nightwitch
91 天前
@LLaMA2 安卓现在 dlopen 有白名单,只允许 dlopen ndk 里的那些 so (当然这个机制也有办法可以绕过去,绕过去的话有上架 Google Play 的风险)
seers
seers
91 天前
@NouveauNom 在符号自己写个 bl 吧,然后找个空段填逻辑
653513754
653513754
91 天前
静态 patch
billccn
billccn
91 天前
把整个 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