UNcrackable-Level1绕过root检测

工具下载链接:

JEB反编译:JEB Decompiler by PNF Software 官方版本,官方demo版功能会受限,需要使用pro版,但是需要money,所以想办法整吧。

切记,jeb在中文目录下不能正常启动,会报错,如下:

Visual Studio Code:Visual Studio Code - Code Editing. Redefined

测试软件:UNcrackable-Level1.apk:https://github.com/OWASP/owasp-mstg

路径:

签名软件:apk签名工具(dodo APKSign)下载_apk签名工具(dodo APKSign)官方下载-太平洋下载中心

还需要下载模拟器

打包好的软件:复制本段内容,打开「阿里云盘」APP ,链接:https://www.aliyundrive.com/s/BGYGmU2KdeT

0x01 模拟器安装软件

在模拟中安装Uncrackable1.apk,然后打开。

提示该应用不能在root环境下运行,点击ok后退出,说明应用会检测当前环境是否是root权限。那么如何绕过root检测。

0x02 Jeb反编译分析软件代码

  1. 将Uncrackable1.apk使用JEB打开,然后进行分析。

可以直接将Uncrackable1.apk拖到jeb_wincon.bat上就可以打开软件进行反编译等操作,也可以双击jeb_wincon.bat,然后打开jeb软件,再打开Uncrackable1.apk进行相关操作。

tips:
Disassembly:反汇编

2. 我们先查看androidmainfest.xml文件,寻找程序的入口,即首页,这里是Mainfest文件,双击Mainfest文件打开,可以看到,这里程序的入口是MainActivity

3. 然后打开MainActivity,打开后是反汇编界面,按下TEB键,会进行反编译操作。

4. 结合进入软件时的界面与代码进行分析,可以看到代码进行了root检测。分别调用了a(),b(),c()函数,只要有一个检测成功,就会提示“Root detected”。(||表示或)

5. 我们双击a()函数,进行跟踪,看到a(),b(),c()三个函数的内容。

解读:

a(): 获取环境变量然后进行分隔,将获取的环境变量获取出来进行拼接,检查是否有su存在。root下,环境变量有su存在。

b(): 检测TAGS里面是否有test-keys.在安卓中。做开发调试的时候,是可以把root烧进去的,而release版本的时候通常会把root删掉。检测是否是在模拟器中运行或者开发人员自己build的模拟器,自己build的通常会带test-keys。

c():检测一些常见的文件路径是否存在。

然后双击b.a(this.getxxxxxx)中的a

a(Context arg0):检查flag是否是2,具体原因不清楚。

0x03 解包修改软件

  1. 通过分析代码,我们可以将检测代码删除从而绕过root检测

先使用apktool对Uncrackable1.apk进行反编译,命令:

java -jar apktool.jar d Uncrackable1.apk

  • 然后使用 visual studio code打开反编译后的文件夹,然后对代码进行篡改。刚才在Jeb中看到MainActivity中有三个函数,将三个函数删除,以达到绕过的目的。

双击打开smali——uncrackable1——MainActivity.smali

通过与jeb中的代码对比,找出需要删除的部分:

删除后效果

  • 然后使用apktool重新build包,命令:

java -jar apktool.jar b UnCrackable-Level1

然后会在 UnCrackable-Level1——dist目录下生成新的apk

0x04 软件签名

1. 对app包进行签名,APK文件不签名是无法进行安装的。

打开Dodo APKsign,选择需要制作签名的apk以及签名文件保存的目录,然后制作签名。

2. 制作成功后,卸载原app然后安转篡改后的app,成功绕过root检测。

0x06 总结

第一次做逆向分析,总的来说不是很难,在搜集软件上花费了很多时间,尤其是jeb,换了好几个版本才行,这个过程中发现demo版本代码反编译不全,故只能使用pro版本。

小白路过,大神勿喷,欢迎斧正。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值