安卓逆向--Smali語法基礎(一)


博文建議有安卓開發基礎的同學閱讀。

Smali是什么?

Smali是安卓系統里的Java虛擬機(Dalvik)所使用的一種.dex格式文件的匯編器,而Baksmali是反匯編器。其語法是一種寬松式的Jasmin/dedexer語法。

Smali語言其實就是一種面向Dalvik的匯編語言(匯編語言是一種用於電子計算機、微處理器、微控制器,或其他可編程器件的低級語言。在不同的設備中,匯編語言對應着不同的機器語言指令集。使用匯編語言編寫的源代碼,然后通過相應的匯編程序將它們轉換成可執行的機器代碼。這一過程被稱為匯編過程。),我們用smali語言寫的代碼通過匯編器就轉換成Dalvik可以執行的dex文件。

對應的有兩個工具,smali.jar將Smali文件轉換為dex文件,baksmali.jar則是將dex文件轉換為smali文件。apktool能反編譯出smali文件就是因為它里面用了baksmali工具。
Smali語法

 

簡寫 含義
B byte
C char
D double (64 bits)
F float
I int
J long (64 bits)
S short
V void 只能用於返回值類型
Z boolean

 

對象類型

表現形式:L對象所在包位置/對象名稱;

一般形式:Ljava/lang/String;

數組類型

表現形式:[數組內容

一般形式:[Ljava/lang/String

方法

表現形式:L表示對象;->i(L第一個參數;L第二個參數;)I

一般形式:Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

字段

表現形式:L對象類型;->字段名稱:L字段類型;

一般形式:ff = "aa"; 轉換后是 Lcom/example/reforceapk/MyLog;->ff:Ljava/lang/String


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM