Android逆向分析初体验

案头见蠹鱼,犹胜凡俦侣。这篇文章主要讲述Android逆向分析初体验相关的知识,希望能为你提供帮助。
一、      准备知识 

1.                        懂java android开发。
2.                        懂NDK ,C 语言 Android 动态链接库.SO开发。
3.                        懂Android反编译Smali 语法。
4.                        懂adb 和 jdb 等等工具使用。
5.                        懂IDA 调试(远程动态调试APK和本地静态调试.SO文件)
6.                        懂Arm汇编语法(因为移动设备芯片是Arm架构的,不是Intel的芯片,不是x86汇编,是Arm汇编)。
7.                        懂APK的打包解包流程。
8.                        其他工具使用(改之理,Apk killer,Android模拟器)等等等等。
9.                        懂文件格式类似PE格式,例如:ELF,和Android文件格式等等。
 
以上的均为Android 逆向的基本条件,想学的童鞋,可以按照上面的学习,也可以自行查找!
 
以上内容哪里不会只能自己补充知识啦,太多,讲不完!!!
二、      入门逆向分析 因为我们是入门分析,所以以上准备知识,先懂一些就行,不必要都懂,知识是慢慢积累的,慢慢学习!!!
1)            先看看我们APK Demo(没有加壳)。
Android逆向分析初体验

文章图片
Android逆向分析初体验

文章图片
   
2)            随便输入提示错误,我们可以解压这个APK看看。 
Android逆向分析初体验

文章图片

直接鼠标右键解压到….不需要修改后缀名也可以的。
 
Android逆向分析初体验

文章图片

解压出来是这个样子的,这是Android的文件目录,具体每个文件夹是什么作用可以自行查找一下,看到没有lib类似的目录说明没有.SO这样的动态链接库,那么这个软件就比较容易逆向分析,因为都是Smali 和 Java代码比较容易看懂。
3)            用改之理打开这个APK。 
打开后如下图所示。
 
Android逆向分析初体验

文章图片

4)            找关键处。如下图搜索要破解APK的字符串。
 
Android逆向分析初体验

文章图片

Android逆向分析初体验

文章图片

5)            继续搜索关键字因为这是一个xml格式的文本,successed 对应的 恭喜您,所以有可能是突破口,所以继续搜索successed。
 
Android逆向分析初体验

文章图片

找到一个id,因为Android程序里面就是这样分配的,所以我们接下来查找id的值也就是0x7f05000c。
 
Android逆向分析初体验

文章图片

找到一句const v1, 0x7f05000c 这是Smali语法,和汇编类似,是把0x7f05000c放到v1寄存器里面,所以v1就为恭喜您这句话。
6)            同样的方法,查找unsuccessed,做好注释如下图。 
Android逆向分析初体验

文章图片

7)            找到之后用#注释下,方便查看。如上图那个 if-nez 由名字可知道 他的意思是 如果 v0 这个寄存器不等于0就跳转。就跳转到了cond_0这个位置,刚好调到恭喜您的位置,所以我们让这个跳转实现就可以了,方法好多。我们也可以结合源码分析。
点击按钮(如下图)。
 
Android逆向分析初体验

文章图片

会出现源码,可以结合分析。
 
8)            代码修改。 
Android逆向分析初体验

文章图片

只要把if-nez 改成 if-eqz就行啦。
9)            然后编译一下,安装执行。 
Android逆向分析初体验

文章图片

 
显示已注册,成功破解。
Android逆向分析初体验

文章图片

三、      总结Android逆向分析入门,这个比较简单,容易学习。
因为无壳无.SO分析起来较为容易,适合入门。
入门:先学会Smali语法,学会改之理的使用,最好会写Android程序。
【Android逆向分析初体验】 

    推荐阅读