您好,登錄后才能下訂單哦!
最近在看一些手機端appstore的下載方面的交互流程,需要用到反編譯的東西,從而最終實現PC端下載app。
反編譯的方法目前用到的有dex2jar,apktool,dexdump,baksmali(smali)。
一、反編譯Apk得到Java源代碼
首先要下載兩個工具:dex2jar和JD-GUI
前者是將apk中的classes.dex轉化成Jar文件,而JD-GUI是一個反編譯工具,可以直接查看Jar包的源代碼。以下是下載地址:
dex2jar:https://code.google.com/p/dex2jar/
JD-GUI:http://java.decompiler.free.fr/?q=jdgui
具體步驟:
首先將apk文件,將后綴改為zip,解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的;
解壓下載的dex2jar,將classes.dex復制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄
運行
dex2jar.bat classes.dex
生成
classes.dex.dex2jar.jar
用JD-GUI查看即可,為了方便,可以通過另存為,生成一個壓縮包,解壓后得到的JAVA文件可以copy到eclipse中查看。
二、反編譯apk生成程序的源代碼和圖片、XML配置、語言資源等文件
這次用apktool:https://code.google.com/p/android-apktool/downloads/list
根據環境下載apktool工具,有一個文件時jar包,必須下載。
具體步驟:
將下載的兩個包解壓到同一個文件夾下,應該會有三個文件:aapt.exe,apktool.bat,apktool.jar
在命令行下定位到apktool.bat文件夾,輸入以下命令:apktool d C:\*.apk C:\*文件夾,如下圖:
命令行解釋:apktool d [apk文件 ] [輸出文件夾]
將反編譯完的文件重新打包成apk,很簡單,輸入apktool b c:\***文件夾
apktool有時會出現失敗的情況。(拿到手機里的framework-res.apk文件,apktool if framework-res.apk 在反編譯我們的apk,apktool d -t apk)
三、dexdump
前兩天裁剪出了這個文件,才知道也可以用來反編譯,是把所有smali文件放到一塊。
dexdump -d *.apk > 1
四、baksmali,smalid
在apktool失敗的時候,這個時候可以用baksmali.jar,和smali.jar。
下載地址:https://code.google.com/p/smali/
下載baksmali.jar和smali.jar
java -jar baksmali.jar -o classout/ classes.dex, 由classed.dex文件生成classout文件夾,相應smali文件在里面。
java -jar smali.jar classout/ -o classes.dex 生成classes.dex,添加到原先apk包中,重新簽名過后可以安裝了。未修改,不需要重新簽名。
五、apk修改
如果需要對apk進行更改,植入廣告什么的,或者其它什么操作,就需要對smali文件修改了。
也就是在apk中調用自己的方法。
首先,自己建個工程,寫出自己的方法, 自己調用一下自己的方法。生成apk,然后反編譯,查看smali文件中,自己調用方法的語句。比如com.example.dump
copy example文件夾到別人的com下,然后再別人的smali語句中就可以插入調用自己方法的語句了。
smali語法:http://my.oschina.net/xiahuawuyu/blog/57146。
六、工作記錄
73手機端,下載地址直接在源碼中,看一下即可,全局搜索一下URL。
samsung端,由于下載地址有規律,所以,暴力下載。httprequest,有序的發一個東西過去,即可拿到相應的url。wireshark抓包拿到一些user-angent,content-type,cookie,,,post。有個地方直接post過去,立即拿到返回值,httprequest類的。
amazon,javascript。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。