参考:http://blog.csdn.net/jiangwei0910410003/article/details/51456735
总体思路:apktool反编译APK修改为可调试并加入断点,apktool回编译APK并signapk加签名,安装,以调试状态打开app,端口转发
baksmali反编译APK得到源代码,用androidstudio打开并设置sourceroot和远程调试端口设置,打好断点就可以开始调试。
一、配置插件
下载插件smalidea
地址: https://bitbucket.org/JesusFreke/smali/downloads
下载smalidea-0.03.zip
下载完成后,打开Android studio的Settings | Plugins,选择 Install plugin from disk
二、反编译apk,修改AndroidManifest.xml中的debug属性并在oncreate()打好断点
java -jar apktool_2.0.0rc4.jar d -d AliCraceme_1.apk -o out
修改AndroidManifest.xml中的android:debuggable=”true”
找到入口Activity之后,我们直接在他的onCreate方法的第一行加上waitForDebugger代码即可,找到对应的MainActivity的smali源码:
然后添加一行代码:
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
这个是smali语法的,其实对应的Java代码就是:android.os.Debug.waitForDebugger();
修改完成之后,回编译apk并且进行签名安装
java -jar apktool_2.0.0rc4.jar b -d out -o debug.apk
然后对APK重新进行签名
java -jar .\sign\signapk.jar .\sign\testkey.x509.pem .\sign\testkey.pk8 debug.apk debug.sig.apk
签名之后就可以进行安装了
安装上面重新签名得到的apk应用
apk install AliCrackme_1.apk
创建目录Smali/src,并且使用baksmali反编译输出到该目录下
创建目录SmaliDebug/src
java -jar baksmali-2.0.8.jar AliCrackme_1.apk -o SmaliDebug/src
3、使用Android Studio导入该目录SmaliDebug
4、选择Create project from existing sources,之后一直选择next
5、成功导入工程后右键点击 src 目录,设定Mark Directory As->Sources Root
6、配置远程调试的选项,选择Run–>Edit Configurations:
7、增加一个Remote调试的调试选项,端口选择:8700
8、设置端口号
9、选择File–>Project Structure 配置JDK
10、以调试状态启动app
adb shell am start -D -n com.example.simpleencryption/.MainActivity
11、下好断点之后Run->Debug
12、调试程序