當前位置:首頁 » 編程語言 » 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,前提是沒有語法錯誤。


熱點內容
mysql存儲的中文亂碼 發布:2024-11-23 03:58:42 瀏覽:887
怎麼搭建卡密伺服器 發布:2024-11-23 03:53:54 瀏覽:775
享壽演算法 發布:2024-11-23 03:46:26 瀏覽:666
兒童變編程 發布:2024-11-23 03:32:03 瀏覽:149
vb編程點餐 發布:2024-11-23 03:20:38 瀏覽:893
主要搞編程 發布:2024-11-23 03:10:25 瀏覽:570
常德php 發布:2024-11-23 03:07:17 瀏覽:574
dlink路由器密碼是多少 發布:2024-11-23 03:03:41 瀏覽:613
海科學編程 發布:2024-11-23 03:02:08 瀏覽:848
安卓怎麼控制索尼相機 發布:2024-11-23 02:54:56 瀏覽:281