根據帖子所說https://www.52pojie.cn/thread-974881-1-1.html,調試器一附加,就會整個結束。
但是我這邊附加上去後啥事沒有,也沒退出,就只好根據他的帖子走一下。
查看死亡前的 logcat 果然找到了一些蛛絲馬跡:
2019-06-06 22:20:39.675 32678-32685/cmb.pb E/2g.out: libdvm_dvmDbgActive_stub called
2019-06-06 22:20:39.730 32678-32685/cmb.pb I/art: Debugger is active
2019-06-06 22:20:39.730 32678-32685/cmb.pb E/2g.out: kill:libdvm_dvmDbgActive_stub
根據文章所述,退出的時候會打這幾個log
ALT + T 搜索“ libdvm_dvmDbgActive_stub”,果然很快就找到了關鍵代碼,F5反編譯,原形畢露。
交叉引用
查看交叉引用,果然,該殼 Hook 了 libart.so 的 _ZN3art3Dbg8GoActiveEv() 函數,在調試器附加的時候,該函數被調用,實際調用的是被 Hook 替換後的 sub_1B330() 函數,然後在 sub_1B330() 函數中使用 unix api kill() 結束自身。
查看交叉引用,果然,該殼 Hook 了 libart.so 的 _ZN3art3Dbg8GoActiveEv() 函數,在調試器附加的時候,該函數被調用,實際調用的是被 Hook 替換後的 sub_1B330() 函數,然後在 sub_1B330() 函數中使用 unix api kill() 結束自身。
這個操作在
保存在這裏
adb push libCmbShield.so /sdcard/
adb shell
su
cp /sdcard/libCmbShield.so /data/app/cmb.pb-1/lib/arm/
然後push到手機上
當然。沒法驗證。因爲我手機不知道爲啥沒有閃退