相关文章
安卓程序动态调试需要满足两个条件
1.在AndroidMainfest.xml文件中,在application标签下,Android:debuggable=true。
2.系统默认调式,在build.prop(boot.img),ro.debugable=1。
1.1 实例演示java层反调试
以“百度加固”为例。
1.将样本拖入jdax-gui中,进行反编译,来到加固程序的onCreate 里,如下图所示。
2.找到attachBaseContext方法,里面有一个判断,调用这个Debug. isDebuggerConnected函数来检测程序是否被调试反调,从而执行是否加载so库的逻辑操作,如下图所示。
1.2 绕过Java层反调试的方法
1.使用androidkiller进行反编译,然后搜索isDebuggerConnected,如下图所示。
2.过来后,修改判断条件,将nez改为eqz,如下图所示。
4.修改smali之后,将apk重新打包,编译,再签名即可。
小结
在本节课的学习当中,介绍了java层反调试的原理,通过一个反调试的例子,实操过掉Java层反调试。
如果你也对安卓逆向感兴趣,可以扫描如下二维码,或者微信搜索【宸道移动安全团队】,关注有惊喜哦!