當前位置:編程學習大全網 - 源碼下載 - 如何運行Smali文件

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

  • 上一篇:杭州掌讀葉辰是什麽小說
  • 下一篇:外鏈圖片是什麽意思?
  • copyright 2024編程學習大全網