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   



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章