iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 7
0
Security

Android System Security系列 第 7

[Day 7] Android Reverse Application - SMALI

Hey

終於又來到同樣的單元

當每天打開電腦打文章變成一種習慣時的感覺...

...

我不知道 因為我還沒習慣

最近陪看醫生系列的韓劇

看著看著都想當醫生惹

好想進合大醬料

今天就來介紹APP的本體
smali code

簡單說明一下
smali是一種ASM-like的中介語言
是從Dalvik VM的操作碼轉成人類可讀的語言

先來看看其中一個檔案

首先在開頭的部分
.class 的部分表示他是在 tw/com/123/newlbs/的其中一類別
.super 的話則表示他是繼承Object
.source 是指源檔是R.java

也因為這檔案是R.id
表示這裡都記載著每個element的唯一碼
這也是為什麼在layout完時
要在java file裡指定哪個元件
讓每個物件在使用元件的時候都有自己的對象

再來就是MainActivity$MyLocationListener.smali
這個檔名很有意思
大概講一下
$在這裡的意思
MyLocationListener是在MainActivity的裡面的一個類別

可以看到這裡面有一個方式onLocationChanged
這也是MyLocationListener裡面必須實做的一個方法
另外
.method public onLocationChanged(Landroid/location/Location;)V
這裡面可以看到 Landroid/location/Location 前面有個L 這表示後面接的是一個對象Object
最後面有個V 在這裡V的位置是return value, 也就是return void type

參考一下format就大概會知道了
Function-Name (type variable1; type variable2; type variable3; ...)Return value type

.method public onStatusChanged(Ljava/lang/String;ILandroid/os/Bundle;)V
所以這就表示這是一個帶參數(String, Bundle)且return void的一個public function: onStatusChanged

那今天就大概熟悉一下smali code

我是來世胸胸的...
我們下次見


上一篇
[Day 6] Android Reverse Application - META-INF
下一篇
[Day 8] Android smali compare with java code
系列文
Android System Security30

尚未有邦友留言

立即登入留言