【安卓逆向快速入门】反编译、静态分析crackMe
反编译、静态分析crackMe本人接触Android不久,但Android开发不是我的主要目的,工作上需要用到逆向,现本文尝试分析CrackMe程序,我相信在逆向方面会有一些基础了解。本次Crack过程,希望可以帮助到您,本人水平有限,若您发现有错误之处,恳请指正。0、准备工作电脑: Window10手机: AndroidPhone(Version >=5.0)本人使用Mate 30环境:
反编译、静态分析crackMe
本人接触Android不久,但Android开发不是我的主要目的,工作上需要用到逆向,现本文尝试分析CrackMe程序,我相信在逆向方面会有一些基础了解。本次Crack过程,希望可以帮助到您,本人水平有限,若您发现有错误之处,恳请指正。
0、准备工作
电脑: Window10
手机: AndroidPhone(Version >=5.0)本人使用Mate 30
环境: Java 1.8.X
反编译:Android Killer V1.3.1.0
0.1 将apk软件安装到手机上
可通过adb命令安装,命令:adb install CSDN_CrackMe_1.0_2021.apk
或
直接下载到手机上从文件管理处安装。
0.2 打开APP
0.3 任意输入字符,提示校验码错误
0.4 这么能忍?
搞它
1、反编译
1.1 打开反编译工具AndroidKiller V1.3.1.0
1.2 将apk文件拖进反编译工具,自动完成进行反编译
注意:APK反编译完成后,可能会出现卡在反编译源码的情况,只需要关闭AndroidKiller,重新打开,点击历史工程即可。
关闭Android Killer
重新打开,选择历史工程打开
点击--》是
1.3 分析完成
双击调用处
2、关注点
2.1 关注Activity
可以看到CrackMe有两个Activity,无其他组件
点击工程管理器
点击AndroidManifest.xml文件,我们也可以看到只注册了两个Activity
关注这两个smali文件
3、开始静态分析
3.1 MainActivity.smali
PS:如果不熟悉smali语法,建议多用Android killer自带的提示功能,将鼠标放在smali方法上,即可显示smali方法的注释
Smali语法都是很好理解的,无需害怕
Smali语法,可参考这里
3.2 Login.smali
查看方法的引用(调用的地方)
下方窗口显示调用处
双击调用处
继续分析
分析到此处,我们可以发现,checkCode函数返回的结果p1,当它 等于1时,校验通过,我们返回到checkCode函数定义,查看到是p1与v0比较,并将结果赋值给布尔类型的p1,而v0 = “xdmDianGeZan”,v0会不会就是正确的校验码呢?
4、Crack结果
我们回到APP中的校验码输入框,输入xdmDianGeZan,点击校验,看是否正确。
您太棒了
很幸运,校验通过。自动退出APP
5、总结
本次Crack的app比较简单,CrackMe程序未将校验码存在so文件,经过简单的反编译后,稍作smali代码静态分析,就可以轻松Crack She。
PS:在开始分析静态代码时,我们看到注册文件AndroidManifest.xml中,只注册了两个Activity,且主入口是MainActivity,所以我们很容易想到直接分析第二个Activity即Login,就能快速得到Crack结果,但我们学习并不仅仅是希望得到Crack的结果,分析smali代码对我们有较大帮助,不是呢?
6、重要
个人刚接触Android,水平有限,对于博客有错误的地方,恳请您积极纠正,谢谢您!
7、附件
若本文对您有帮助,方便请点个赞。Android Killer.exe和CrackMe.apk附件链接
更多推荐
所有评论(0)