decompile APK + eclipse to debug

Posted zhangjianying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了decompile APK + eclipse to debug相关的知识,希望对你有一定的参考价值。

反编译第三方APK.并且调试第三方APK


用的工具如下:

 dex2jar

 baksmali.jar

smali.jar

re-sign.jar

jd-gui.exe

1.反编译APK获取的源码

   先解压缩APK 获取classes.dex,使用 dex2jar 获取 能看懂的jar,再导出所有源码到outSource文件夹中

2.将获取到的classes.dex 使用 baksmali.jar编译成 *.smali文件

java -jar E:\\开发工具\\Smali2Java\\baksmali-2.0.3.jar -o classout/ classes.dex 

3.在入口Activity的OnCreate()方法中添加一句调试语句( 是smali文件哦)

a=0;// # virtual methods
a=0;// .method protected onCreate(Landroid/os/Bundle;)V
a=0;//     invoke-static , Landroid/os/Debug;->waitForDebugger()V
a=0;// 
a=0;//     .locals 1
a=0;//     .param p1, "savedInstanceState"    # Landroid/os/Bundle;
a=0;// 
a=0;//     .prologue
a=0;//     .line 11
a=0;//     invoke-super p0, p1, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

4.打包修改后的*.smali文件到新的dex (破解就在这步,修改相关方法再重新打包变成破解软件,smali文件不好读,结合前面导出的源码还是可以找到对应方法的)

java -jar E:\\开发工具\\Smali2Java\\baksmali-2.0.3.jar classout/ -o classes.dex   

5.将新的classes.dex添加到原来的APK包中

并使用re-sign.jar签名(re-sign.jar会自动使用debug签名)

6将应用安装到手机或模拟器(先要删除手机或模拟器上原版程序)

7新建eclipsejava工程引入outSource文件夹中的源码

8连接手机后再DDMS中观察到 应用监听的调试端口是多少


9 再启动Debug模式  Run> Debug -> Debug Configurations


就会发现 断点调试成功了



如果需要打正式包, 只要将第5步修改成 来完成签名即可 (该签名下不可以调试)

d2j-apk-sign  demo.apk   



以上是关于decompile APK + eclipse to debug的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse Decompiler不生效解决办法

Eclipse安装代码反编译插件Enhanced Class Decompiler

Eclipse Class Decompiler——Java反编译插件的安装和使用

Eclipse4.4 安装java反编译插件Eclipse Class Decompiler

Eclipse Class Decompiler——Java反编译插件的安装和使用

Eclipse Class Decompiler——Java反编译插件(转)