V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NouveauNom
V2EX  ›  Android

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

  •  
  •   NouveauNom · 18 天前 · 2300 次点击

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

    11 条回复    2024-11-23 21:35:19 +08:00
    wnpllrzodiac
        1
    wnpllrzodiac  
       18 天前 via Android
    arm 汇编大神啊。前提是 so 没加固
    LLaMA2
        2
    LLaMA2  
       18 天前
    自己写自己的 so 库 dlopen 加载已有的 so 库,

    然后自己看看能不能在自己的 so 库中 hook 目标
    Donaldo
        3
    Donaldo  
       18 天前
    hook ,改 so 很难。
    seers
        4
    seers  
       18 天前 via Android
    字节不是有个 hook 框架,可以看看
    653513754
        5
    653513754  
       18 天前
    inlinehook
    NouveauNom
        6
    NouveauNom  
    OP
       18 天前
    @LLaMA2
    @Donaldo
    @seers
    hook 倒是简单,但是现在这个需求只能直接改 so
    Donaldo
        7
    Donaldo  
       18 天前
    @NouveauNom #6 真没动手干过这种大规模的修补,直觉上来看,或许可以靠把你所要执行的逻辑写好汇编 patch 到 so 的某个位置(这个位置不能覆盖掉原本的程序?),然后再从跳转上入手。
    nightwitch
        8
    nightwitch  
       18 天前
    @LLaMA2 安卓现在 dlopen 有白名单,只允许 dlopen ndk 里的那些 so (当然这个机制也有办法可以绕过去,绕过去的话有上架 Google Play 的风险)
    seers
        9
    seers  
       18 天前 via Android   ❤️ 1
    @NouveauNom 在符号自己写个 bl 吧,然后找个空段填逻辑
    653513754
        10
    653513754  
       18 天前
    静态 patch
    billccn
        11
    billccn  
       18 天前   ❤️ 1
    把整个 so 当成外部库写进新逻辑里,然后编译的时候作为静态引用,就能合并进新的 so 里面了。稍微手写一个工具确保新项目引用一下原 so 里面每一个 symbol.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   866 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:19 · PVG 05:19 · LAX 13:19 · JFK 16:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.