NouveauNom
V2EX  ›  Android

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

  •  
  •   NouveauNom · Nov 23, 2024 · 6843 views
    This topic created in 563 days ago, the information mentioned may be changed or developed.

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

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

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