Android 逆向工程 —— Smali 語法樣例分析

Android 程序是基于 Dalvik 虛擬機運行的裙品,在逆向安卓程序時,一般會選擇 Smali 的語法格式孟抗。大部分的 Dalvik 指令和 Smali 語法都是很容易理解的震叮,但是也有一些不是那么直觀的指令和語法,下面結(jié)合具體例子加以理解舅世。

這個例子是我們 Android 開發(fā)課中我寫的一次作業(yè)旦委,要是雷同就只能說太巧了...

其對應(yīng)的 Smali 語法如下:

第 48 行表明以下是描述虛函數(shù)的
第 49 行將 onCreate 標識為帶有一個 Bundle 類型參數(shù)的 protected void 方法奇徒,其中最后一個字母 V 代表void
第 50 行表明該方法有 7 個局部變量
第 51 ~ 54 行說明了形參 p1 的名字為 saveInstanceState,而且它是用 @android/support/annotation/Nullable 的標注標注的缨硝。留意到這里是 p1摩钙,因為 p0 通常用于指代 this
第 56 行表明以下是函數(shù)的主體
第 58 行使用的 Dalvik 指令是 invoke-super,后面緊跟的大括號中有兩個參數(shù) p0 和 p1查辩,由于 onCreate 函數(shù)不是靜態(tài)的(指令本身也不是用于調(diào)用靜態(tài)函數(shù))腺律,因此 p0 是指調(diào)用 onCreate 函數(shù)的對象,在這里就是 this宜肉;緊接著的 Landroid/support/v7/app/AppCompatActivity 表明 p0 此時的類型是 AppCompatActivity匀钧,這很好理解,因為 this 是 MainActivity 的引用谬返,而 MainActivity 繼承于 AppCompatActivity之斯;
第 61 行將 v4 的值賦為 0x7f040019,這是一個資源的編號遣铝,在這里就是 R.layout.layout
第 63 行的 invoke-virtual 表明調(diào)用了一個虛函數(shù)佑刷,調(diào)用者為 p0,此時 p0 的身份為 MainActivity酿炸,調(diào)用的函數(shù)為 setContentView瘫絮,該函數(shù)以一個整數(shù)(v4)為參數(shù),并返回 void

下面看一個涉及內(nèi)部類的例子

其對應(yīng)的 Smali 語法如下:

第 146 行將 v4 的值賦為 "\u63d0\u793a"填硕,即中文 “提示”
第 148 ~ 149 行用 v0(局部變量 alertDialog)調(diào)用 setTitle 函數(shù)麦萤,該函數(shù)返回一個與 alertDialog 同為 AlertDialog.Builder 類型的對象,因此在源代碼中可以在調(diào)用完 setTitle 后馬上調(diào)用 setPositiveButton
第 151 行將 148 ~ 149 行中返回的 AlertDialog.Builder 類型的對象賦給 v4扁眯,方便 setPositionButton 的調(diào)用
第 155 行實例化了一個 MainActivity$2 的對象壮莹,并賦給 v6;這里的 $2 是指在 MainActivity 中的一個匿名內(nèi)部類姻檀,對應(yīng)的是源代碼中第 35 行 setPositionButton 的第二個參數(shù)命满,該參數(shù)實現(xiàn)了一個匿名類,并實例化了一個該類的對象绣版,這個類的實現(xiàn)細節(jié)保存在 MainActivity$2.smali 中胶台,其中較為重要的細節(jié)如下:

可以看到,在這個匿名類中使用了 Toast 來輸出信息

第 157 ~ 158 行將 155 行的對象進行初始化
第 160 ~ 162 行用 v4(AlertDialog.Builder 類型) 以 v5(CharSequence 類型) 和 v6(DialogInterface.OnClickListener 類型) 作為參數(shù)調(diào)用了 setPositiveButton 函數(shù)

這個例子主要是用于熟悉 Smali 語法杂抽,涵蓋的 Dalvik 指令不多诈唬,但是稍微沒那么直觀,先記下來以后還可以回來看

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末默怨,一起剝皮案震驚了整個濱河市讯榕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖愚屁,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件济竹,死亡現(xiàn)場離奇詭異,居然都是意外死亡霎槐,警方通過查閱死者的電腦和手機送浊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丘跌,“玉大人袭景,你說我怎么就攤上這事”帐鳎” “怎么了耸棒?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長报辱。 經(jīng)常有香客問我与殃,道長,這世上最難降的妖魔是什么碍现? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任幅疼,我火速辦了婚禮,結(jié)果婚禮上昼接,老公的妹妹穿的比我還像新娘爽篷。我一直安慰自己,他們只是感情好慢睡,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布逐工。 她就那樣靜靜地躺著,像睡著了一般一睁。 火紅的嫁衣襯著肌膚如雪钻弄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天者吁,我揣著相機與錄音,去河邊找鬼饲帅。 笑死复凳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的灶泵。 我是一名探鬼主播育八,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赦邻!你這毒婦竟也來了髓棋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎按声,沒想到半個月后膳犹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡签则,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年须床,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渐裂。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡豺旬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柒凉,到底是詐尸還是另有隱情族阅,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布膝捞,位于F島的核電站坦刀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏绑警。R本人自食惡果不足惜求泰,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望计盒。 院中可真熱鬧渴频,春花似錦、人聲如沸北启。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咕村。三九已至场钉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間懈涛,已是汗流浹背逛万。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留批钠,地道東北人宇植。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像埋心,于是被迫代替她去往敵國和親指郁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 Android采用的是java語言進行開發(fā)拷呆,但是Android系統(tǒng)有自己的虛擬機Dalvik和ART,代碼編...
    風澈vio閱讀 12,399評論 5 115
  • 之前做了一段時間的安卓手游破解正版驗證工作闲坎,總結(jié)一些基本的方法和知識疫粥,便于分享交流。破解的目的是讓國內(nèi)一些“被閹割...
    RockerLee閱讀 32,599評論 6 25
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程腰懂,因...
    小菜c閱讀 6,424評論 0 17
  • 內(nèi)容摘要:不管是新站梗逮,還是有歷史的網(wǎng)站,做SEO優(yōu)化都需要先做好規(guī)劃方案∶趸校現(xiàn)國內(nèi)常見SEO優(yōu)化基礎(chǔ)規(guī)范步驟:關(guān)鍵詞...
    Liming亮閱讀 776評論 1 3
  • 你生活的始終還是太被動库糠,你總是在走那鋪好的一條路。 有句話說的太好涮毫,我們策劃要培養(yǎng)中國少年的能力瞬欧。似乎我們只要能夠...
    LAMEMORY閱讀 132評論 0 0