1. apk反編譯後smali文件怎麼查看
1,首先得下載SublimeText
2,安裝好後,需要去給它安裝一個插件包
3,點擊Install Now 按鈕後進入,然後復製版對應的版本下的代碼權
4,打開SublimeText 按下快捷鍵 ctrl+~,或者打開菜單欄View點擊Hide Console 顯示控制台,並將第3步中復制的代碼粘貼到控制欄並按Enter鍵確認,然後重新開啟SublimeText
5,打開SublimeText,我們可以看到在Preferences下多了一個菜單Package Control,好了那麼就點擊這個菜單(Package Control)就會彈出界面
6,在彈出框中點擊Package Control:Install Package這一行,就會彈出提示,然後直接輸入smali
7,搜到後就直接點擊Smali這一行,它就已經裝了,然後分分鍾後就好了,你可以隨意打開一個反編譯的apk文件中的smali文件了,還自帶高亮顯示哦!
2. android反編譯怎麼修改游戲道具
需要的工具
jdk:必須的
baksmali:classes.dex反編譯為smali格式(文本文件,可修改)
smali:smali格式編譯打包為classes.dex
但由於smali格式類似匯編,比較難閱讀,所以用dex2jar進行輔助
dex2jar:classes.dex轉為jar包
jdgui:jar反編譯並閱讀
以上工具可以在 http://liye111111.ys168.com/ 下載
好了,順序就是把apk用zip解開,裡面的classes.dex分別用baksmali處理為smali,用dex2jar處理成jar,然後用jdgui看代碼,找好java文件中要改的位置後,在smali里找對應的位置修改,改完了用smali再編譯為classes.dex,覆蓋原來apk里的同名文件,最後重新簽名。注意安裝時要先刪除原來手機里的版本,因為簽名不同了,我第一次再這里卡了好久。
以「捕魚達人海底撈」為例
下載這個游戲的apk,fishing_joy_1.apk,和工具放在一起
用zip解開fishing_joy_1.apk
classes.dex到baksmali的同一目錄
用baksmali處理為smali
java -jar baksmali-1.2.6.jar -x classes.dex
得到out目錄,裡面是smali文件
用dex2jar處理classes.dex為jar包
dex2jar-0.0.7.10-SNAPSHOT\dex2jar.bat classes.dex
得到classes.dex.dex2jar.jar
這時我們的工作目錄下面是這樣
用jdgui打開classes.dex.dex2jar.jar
好了,可以看代碼,但還不能直接修改,需要對比著來修改smali文件
比如我們通過對比找到控制魚被打到幾率的代碼在FishLayer.smali
Java代碼
3. 360加固保mp出來的dex怎麼修復
通常二次打包的步驟是:解包(反編譯)-->插入/篡改代碼-->生成新包-->重簽名-->運行。
首先可以通過使用ApkTool、Jeb、baksmali/smali等反編譯工具,反編譯apk安裝包,圖1為調用baksmali文件的截圖。
解包後可以看到所有文件列表,找到需要修改的smali文件,這里修改的是MainActivity.smali,如圖2。
解開MainActivity.smali文件後,在裡面插入一段篡改代碼,修改登錄界面中「Button」按鈕上的文本,圖3和圖4是修改前後smali文件中的代碼。
修改後再調用smali.jar文件,將smali重新打包成dex文件,如圖5所示。
接下來再將新生成的classes.dex文件替換原安裝包中的classes.dex,並進行重新簽名,就生成了一款盜版應用。運行該款盜版應用時會發現登錄界面的登錄按鈕被修改替換成了「Fake Btn」,如圖6、圖7所示。
通過簡單的幾個操作步驟,一款未經加固保護的APP就被盜版了,一個團隊一年的勞動成果幾分鍾內就被輕易竊取。通常,盜版應用會通過插入/替換廣告SDK賺取廣告收入、修改支付渠道截取開發者收入、插入病毒/木馬程序盜取用戶信息等形式出現,操作步驟與上面介紹的類似,嚴重侵害了開發者和用戶的利益。
要想保護手機APP,避免被盜版,就要從源頭進行加固保護,讓破解者無從下手。圖8是使用360加固保對APP進行加固前後的對比,加固後再調用baksmali.jar進行反編譯,可以看到代碼文件全部被隱藏,暴露的只是加固程序的一些代碼,破解者自然無法再對源程序進行篡改了。
360加固保基於360核心加密技術,對安卓應用進行加固保護,能有效避免應用被惡意破解、反編譯、二次打包、內存抓取等。同時給應用提供數據加密、簽名校驗、防內存修改、完整性校驗、盜版監測等保護功能,給予安卓應用最強保護,從源頭消滅惡意盜版應用。作為移動互聯網安全服務行業的領跑者,360加固保將持續關注手機應用安全的發展,不斷完善加固保服務,切實保護開發者收入和權益。
4. 如何獲得android程序的.smali文件
smali 是Android 應用程序(*.apk)反編譯生成的文件格式, 是一種類似於匯編語言的底層計算機語言。閱讀和書寫smali語法都需要極大的耐心和勇氣, 本文將介紹如何反編譯和運行第三方的程序(smali)代碼。
什麼是smali 文件
Android程序文件, 即apk文件, 其實是一個zip壓縮包, 其文件結構如下:
其中, classes.dex是程序的核心文件,是java語言的代碼編譯後的二進制位元組碼程序。這種位元組碼程序是編譯專供機器閱讀的, 類似於匯編語言的機器碼。然而如果想直接閱讀這部分程序, 最好的方法就是將該文件轉化為smali文件。
apktool
著名的反編譯工具 apktool 就可以完成這部分工作。 它將classes.dex文件反編譯成一堆的smali文件, 這些文件按源碼的包結構保存在各自的文件夾中。如下所示:
另外, apktool 工具強大之處在於它不僅可以反編譯apk文件, 而且可以根據現有的smali 文件生成新的apk文件。 這就給漢化apk或者去除apk內嵌廣告提供了可能。
smali語法類似於匯編語言的語法, 涉及寄存器的直接操作, 可以直接閱讀, 但羞澀難懂, 尤其是在代碼混淆之後。
dex2jar
有人做了一個專門的工具 dex2jar 將classes.dex 轉化為jar 文件, 通過 jd-gui 閱讀。
但dex2jar 並不健全, 反編譯出的java文件大部分都有編譯錯誤。可以簡單的閱讀和分析, 但若是涉及到很細致的內容, 則還是需要依賴smali。 smali 文件的編輯器推薦使用 sublime + sublime-smali , 具體請參考文章 為Sublime Text安裝smali代碼語法高亮插件 。