Java层反调试

安卓程序动态调试须要知足两个条件。java

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

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

一: 实例演示java层反调试

以“百度加固”为例。ide

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

Java层反调试

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

Java层反调试

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

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

Java层反调试

2.过来后,修改判断条件,将nez改成eqz,以下图所示。调试

Java层反调试

3.修改smali以后,将apk从新打包,编译,再签名便可。xml

小结

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

相关文章
相关标签/搜索