Java层反调试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java层反调试相关的知识,希望对你有一定的参考价值。

安卓程序动态调试需要满足两个条件。

1.在androidMainfest.xml文件中,在application标签下,Android:debuggable=true。

2.系统默认调式,在build.prop(boot.img),ro.debugable=1。

一: 实例演示java层反调试

以“百度加固”为例。

1.将样本拖入jdax-gui中,进行反编译,来到加固程序的onCreate 里,如下图所示。

技术图片

2.找到attachBaseContext方法,里面有一个判断,调用这个Debug. isDebuggerConnected函数来检测程序是否被调试反调,从而执行是否加载so库的逻辑操作,如下图所示。

技术图片

二:绕过Java层反调试的方法

1.使用androidkiller进行反编译,然后搜索isDebuggerConnected,如下图所示。

技术图片

2.过来后,修改判断条件,将nez改为eqz,如下图所示。

技术图片

3.修改smali之后,将apk重新打包,编译,再签名即可。

小结

介绍了java层反调试的原理,通过一个反调试的例子,实操过掉Java层反调试。

以上是关于Java层反调试的主要内容,如果未能解决你的问题,请参考以下文章

反调试手法之CreateProcess反调试

Frida反调试

反调试——6——附加进程反调试

过反调试

一种基于TLS的高级反调试技术

ios逆向笔记之反调试 以及反反调试 和反反反调试 ptrace篇