Android逆向基礎知識Smali

來源:互聯網
上載者:User

標籤:als   產生   引用   div   IV   false   and   代碼   開始   

什麼是Smali:

我們用工具反編譯一些APP的時候,會看到一個smali檔案夾,裡面其實就是每個Java類所對應的smali檔案。Android虛擬機器Dalvik並不是執行java虛擬機器JVM編譯後產生的class檔案,而是執行再重新整合打包後產生的dex檔案,dex檔案反編譯之後就是smali代碼,可以說,smali語言是Dalvik的反組譯碼語言

JAVA和Smali資料類型對比:

   JAVA                    Smali
V void Z boolean B byte S short C char I int J long F float D double 參考型別 L 對象 [ 數組

文法:

.field  定義變數.method  方法.parameter  方法參數.prologue  方法開始.line 12  此方法位於第12行invoke-super  調用父函數const/high16  v0, 0x7fo3  把0x7fo3賦值給v0invoke-direct  調用函數return-void  函數返回void.end method  函數結束new-instance  建立執行個體iput-object  對象賦值iget-object  調用對象invoke-static  調用靜態函數
smali跳躍陳述式“if-eq vA, vB, :cond_**” 如果vA等於vB則跳轉到:cond_**“if-ne vA, vB, :cond_**” 如果vA不等於vB則跳轉到:cond_**“if-lt vA, vB, :cond_**” 如果vA小於vB則跳轉到:cond_**“if-ge vA, vB, :cond_**” 如果vA大於等於vB則跳轉到:cond_**“if-gt vA, vB, :cond_**” 如果vA大於vB則跳轉到:cond_**“if-le vA, vB, :cond_**” 如果vA小於等於vB則跳轉到:cond_**“if-eqz vA, :cond_**” 如果vA等於0則跳轉到:cond_**“if-nez vA, :cond_**” 如果vA不等於0則跳轉到:cond_**“if-ltz vA, :cond_**” 如果vA小於0則跳轉到:cond_**“if-gez vA, :cond_**” 如果vA大於等於0則跳轉到:cond_**“if-gtz vA, :cond_**” 如果vA大於0則跳轉到:cond_**“if-lez vA, :cond_**” 如果vA小於等於0則跳轉到:cond_**

DEMO:

java代碼        private boolean show(){                boolean tempFlag = ((3-2)==1)? true : false;                if (tempFlag) {                    return true;                }else{                    return false;                }            }轉換smali代碼.method private show()Z    .locals 2    .prologue           //方法開始    .line 22    const/4 v0, 0x1     // v0賦值為1    .line 24    .local v0, tempFlag:Z    if-eqz v0, :cond_0            // 判斷v0是否等於0, 不符合條件向下走, 符合條件執行cond_0分支    .line 25    const/4 v1, 0x1            // 符合條件分支    .line 27    :goto_0    return v1    :cond_0    const/4 v1, 0x0            // cond_0分支    goto :goto_0.end method

參考:

http://blog.csdn.net/lostinai/article/details/48975661

http://blog.csdn.net/sjim_/article/details/50443860

Android逆向基礎知識Smali

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.