當前位置:首頁 » 編程語言 » java轉smali

java轉smali

發布時間: 2024-11-22 23:31:12

1. 如何運行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代碼語法高亮插件 。

2. apk反編譯後,有了smali文件,我用工具導出了java源碼後並修改了源碼,如何編譯打包回apk文件

https://github.com/ollide/intellij-java2smali


IntelliJ IDEA 或者android studio的一個插件。

可以把java轉smali,前提是沒有語法錯誤。


熱點內容
linux解壓bin 發布:2025-03-15 19:40:25 瀏覽:382
存儲數據為什麼只能使用兩種狀態 發布:2025-03-15 19:40:21 瀏覽:262
平方的運演算法則 發布:2025-03-15 19:38:57 瀏覽:969
江蘇省蘇州市社保卡初始登錄密碼是多少 發布:2025-03-15 19:38:55 瀏覽:514
安卓主板哪裡有賣 發布:2025-03-15 19:26:10 瀏覽:30
Q9源碼 發布:2025-03-15 19:24:21 瀏覽:176
芬蘭編程教育 發布:2025-03-15 18:59:46 瀏覽:427
網際網路的伺服器地址 發布:2025-03-15 18:53:01 瀏覽:893
手機實體店什麼配置好 發布:2025-03-15 18:32:35 瀏覽:169
攜帶型電腦的原始密碼是什麼 發布:2025-03-15 18:25:52 瀏覽:798