cmb反调试
2019-08-12 本文已影响0人
超威蓝猫l
根据帖子所说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反编译,原形毕露。
image.png image.png交叉引用
image.png查看交叉引用,果然,该壳 Hook 了 libart.so 的 _ZN3art3Dbg8GoActiveEv() 函数,在调试器附加的时候,该函数被调用,实际调用的是被 Hook 替换后的 sub_1B330() 函数,然后在 sub_1B330() 函数中使用 unix api kill() 结束自身。
查看交叉引用,果然,该壳 Hook 了 libart.so 的 _ZN3art3Dbg8GoActiveEv() 函数,在调试器附加的时候,该函数被调用,实际调用的是被 Hook 替换后的 sub_1B330() 函数,然后在 sub_1B330() 函数中使用 unix api kill() 结束自身。
image.png
这个操作在
image.png
image.png
保存在这里
adb push libCmbShield.so /sdcard/
adb shell
su
cp /sdcard/libCmbShield.so /data/app/cmb.pb-1/lib/arm/
然后push到手机上
当然。没法验证。因为我手机不知道为啥没有闪退