安卓逆向与java_安卓逆向之java层反调试

本文介绍了安卓应用的反调试技术,重点讲解了Java层的反调试原理,通过百度加固的实例展示了如何检测调试器,并提供了绕过Java层反调试的方法,包括修改Smali代码以避免加载SO库。
摘要由CSDN通过智能技术生成

很多同学都问反调试是什么?今天小编就和大家一起去了解什么是反调试,java层反调试,然后一起学习学习!

反调试:

反调试技术是一种常见的反检测技术,因为恶意软件总是企图监视自己的代码以检测是否自己正在被调试。为做到这一点,恶意软件可以检查自己代码是否被设置了断点,或者直接通过系统调用来检测调试器

目录:

Java层反调试的原理介绍

以百度加固实例演示java层反调试

绕过java层反调试的方法

Java层反调试原理介绍

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

2、系统默认调试,在build.prop(bort.img),ro.debugable=1.

我们都知道安卓程序动态调试需要满足两个条件,一是在AndroidMainfest.xml文件中在application标签下,Android:debuggable=true。第二是系统默认调试,在build.prop(bort.img),ro.debugable=1。

以百度加固实例演示java层反调试

会调用这个Debug.isDebuggerConnected函数去检测程序是否被调试反调。

1、将样本拖入jdax-gui里面进行反编译

我们首先先把样本拖入到jdax-gui里面进行反编译,去看看他的现象是怎么样的。我们把准备好的程序拖入到jdax-gui里面去。e76d8dd68b6137cfc496c3fc1800c3bd.png

拖进去以后我们在这一个方法中来去找一个类449fed408b9fcb7b5b798910922bfd49.png

我们先来到这manifest.xml中去找一下程序的入口点。e5c117a5f2d46357c287a6d504282bbc.png

然后我们按照包名去找一下,这里面有一个contextfaa4bc9f94237615158f2f87fdde07e3.png

dbc1d9b105f165401a007aea90f22820.png

然后我们在去oncreate,oncreat里面有一个attachBaseContext方法f7b205e53ad22579c02fc6656545c1f8.png

在attachBaseContext里面有一个if判断也就是debug.isdebuggerConnected,如果不为真的话,对它的一个取法就会加载so库,否则就不会有so库,也就是说,这个程序会在这里去进行一个判断,用isdebuggerConnected这个函数来检测这个程序是否被反调试或者有没有被调试。

从而去执行是否加载so库的逻辑操作。ec9dd497f639158358b981c60106fc0f.png

我们点进去看一下,在这里它执行了一个so库。548ba0ab6dc454a6efe8b1a23340e440.png

以上呢就是java反调试的一个现象。

绕过java层反调试的方法

使用Androidkiller进行反编译,然后搜索isDebuggerConnected,修改此次判断的samil代码即可

我们在之前已经把他进行一个发编译。1c5e7e99d3e9cd02218d58e43acab19b.png

然后我们去到工程搜索里面,我们直接搜索isDebuggerf6071133b671700a5c683aa190466c0b.png

搜索到了,我们去看一下搜索到的地方,而我们搜索到的地方就是对应着这个jdax-gui里面进行一个判断的一个操作。72dab015e6fe85fa2596601a68524ae4.png

那我们该怎么去绕过这个反调试呢?我们这里在这里去找到if-nez,把这个if-nez,它根据这里的一个判断。实现这里的代码执不执行,那我们直接把这个nez给它改成一个eqza22e1b030f0ae74432e79568e84d3947.png

它以前是不相等就跳,我们改成相等就跳,和0比较相等就跳,和v0比较相等就跳,那么我们修改过smail之后呢,我们去把这个程序进行一个保存,然后重新打包反编译,就可以绕过反调试了,当然我们不要忘记了签名。

今天小编给大家介绍了java层反调试的原理,然后讲解一个反调试例子,并且过掉java层反调试,不知道朋友们是否听懂呢?没听懂的话赶快来找小编吧,小编给你细细的在说一遍。当然小编也给大家准备了学习大礼包和课程,私信我就可领取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值