反编译、静态分析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.exeCrackMe.apk附件链接

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐