動態調試APK-超實用

  經過兩天的苦逼奮戰,終於得到想要的東西了,出現的磕磕碰碰的心情,在出結果的那一刻,無以言表,所有資料來源於網絡,我稍稍整理一下。

1. 工具

2.反編譯apk 並 生成新apk

  • 用apktool 反編譯apk
    java -jar apktool_2.0.0b9.jar d -d xxx.apk -o out

    其中 -d 選項中在反編譯後的文件後綴爲.java,而不是.smali。
    反編譯過程中可能會出現錯誤,不要着急,可能是apktool版本不正確,多下幾個版本試試,我下了4個版本的,終於在第五個成功了。
    生成的源文件在 out目錄下的smali中
    修改out目錄下的AndroidManifest.xml文件,找到application項,在其中添加 android:debuggable="true" 選項

    這裏寫圖片描述

  • 用apktool 重新生成apk
    java -jar apktool_2.0.2.jar b -d out -o debug.apk
    重新生成過程中可能會出現錯誤,多試幾個版本的apktool,反編譯和重新生成用到的apktool可能會不同。

  • 對重新生成apk進行簽名
    keytool工具在 Java\jdk1.7.0_75\jre\bin 目錄下
    keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
    jarsigner 工具在 Java\jdk1.7.0_75\bin 目錄下,
    jarsigner -verbose -keystore <用keytool生成的簽名> -signedjar <生成簽名apk名>.apk <重新生成的apk>.apk demo.keystore
    上面 jarsigner 中沒有<>號哦,具體詳細自行百度哦

3.分析調試

  • 打開idea 新建java空項目, 把反編譯out目錄下smali的文件全部拷貝到java項目中的src目錄下
    這裏寫圖片描述

  • 安裝apk,打開eclipse,在DDMS->Devices中查看apk的端口(我這裏是8607)
    這裏寫圖片描述

  • 在idea中新建遠程調試Run -> edit configurations 設置端口和項目
    這裏寫圖片描述

  • 開啓apk應用, 運行 ‘Debug Unnamed’
    這裏寫圖片描述

  • 在項目中要打斷點的地方進行調試
    這裏寫圖片描述

如果不出現什麼意外情況,就可以調試了,心情有沒有小小的激動一下下。

感謝前輩們踩過的坑,才讓我少走了很多,其實我嘗試過其它方法,不過都不好使。

相關文檔

http://www.kanxue.com/bbs/showthread.php?p=1338639
http://bbs.125.la/thread-13817285-1-1.html

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