但是这里我们可能会遇到一个问题,就是如果应用程序太大的话,这个打开的过程中会很慢的,有可能IDA停止工作,所以要慢慢等啦:
打开之后,我们可以看到我们的类和方法名,这里还可以支持搜索类名和方法名Ctrl+F,也可以查看字符串内容(Shirt+F12):
我们发现IDA也是一个分析Java代码的好手,所以说这个工具太强大了啦啦~~
上面讲解了静态分析的破解技术,那么下面就开始使用一个例子来看看静态分析的技术。
第一、静态分析Java(smail)代码
首先我们拿到我们需要破解的Apk,使用apktool.jar工具来反编译:
java -jar apktool.jar d xxx.apk
这个apk很是容易就被反编译了,看来并没有进行任何的加固。那就好办了,我们这里来改一下他的AndroidManifest.xml中的信息,改成可调式模式,这个是我们后面进行动态调试的前提,一个正式的apk,在AndroidManifest.xml中这个值是false的。
我们看看他的AndroidManifest.xml文件:
我们把这个值改成true.在回编译,这时候我们就可以动态调试这个apk了,所以在这点上我们可以看到,静态分析是动态分析的前提,这个值不修改的话,我们是办法进行后续的动态调试的。
修改成功之后,我们进行回编译:
cd C:\Users\jiangwei\Desktop\静态分析\apktool_2.0.0rc4
del debug.sig.apk
java -jar apktool.jar b -d 123 -o debug.apk
java -jar .\sign\signapk.jar .\sign\testkey.x509.pem .\sign\testkey.pk8 debug.apk debug.sig.apk
del debug.apk
adb uninstall com.shuqi.controller
adb install debug.sig.apk
adb shell am start -n com.shuqi.controller/.Loading
pause
这里是为了简单,写了一个批处理,首先进入到目录,然后使用命令进行回编译:
java -jar apktool.jar b -d sq -o debug.apk
sq是之前反编译的目录,debug.apk是回编译之后的文件
这时候,debug.apk是不能安装运行的,因为没有签名,Android中是不允许安装一个没有签名的apk
下面还要继续签名,我们用系统自带的签名文件即可签名:
java -jar .\sign\signapk.jar .\sign\testkey.x509.pem .\sign\testkey.pk8 debug.apk debug.sig.apk
注:其实我们在用IDE工具开发android项目的时候,工具就是用这个签名文件进行签名的,只是这个过程IDE帮我们做了。
后面就是直接安装这个apk,然后运行这个Apk。这个过程中我们只需要知道应用的包名和入口Activity名称即可,这个信息我们在AndroidManifest.xml中也是可以获取到的,当然我们用:adb shell dumpsys activity top 命令也可以得到: