1. 程式人生 > >Android逆向進階(7)——揭開Hook的神秘面紗

Android逆向進階(7)——揭開Hook的神秘面紗

java字符串 一句話 -o block 模型 它的 寫法 tar 1-1

本文作者:i春秋作家——HAI_

0×00 前言

HAI_逆向使用手冊(想嘗試一下新的寫法)

其他 Android逆向進階 系列課程 <<<<<<<

人物說明

小白:已經掌握了一些基礎的逆向技能的菜鳥。
小紅:小白的女朋友。
大白:小白的師傅。

竹山(大白居)

師傅師傅,我今天下山聽見有人說,江湖中出現了一種為Hook的武林秘籍。據說十分厲害,可以攔截System。攔截程序猿開發的出來app。

小白啊,你知道什麽是Hook嗎。

聽說過,但是卻不明白什麽是hook。

Hook這個秘籍啊,說白了是對函數進行重寫。我們重寫這個函數,就可以實現我們想要的目的,攔截呀,還有其他的內容。

師傅,我想學這個Hook秘籍。

好好,我們慢慢來。

先說說我們今天學習的Hook技能吧。

技能(內容)

1.一個新的武器(Xposed框架)的使用
2.練習使用Hook的第一重內功(Android Studio 3.0 +Xposed)
3.木樁實戰練習
4.木樁f進階(小白的自我進步)

0×01 一個新的武器(Xposed框架)的使用

小白,認真學習哦,我們先來試試我們的新武器。Xposed,以後江湖闖蕩也有一個防身的技巧。

小白你等等,我去找找這個武器我放在哪了。所謂工欲善其事必先利其器。

好了,師傅你快去,別啰嗦了。

1. 武器 get

小白,要想使用這個武器,就要先打通經脈。

1.1 經脈(環境)

1.Root,手機root,無root不安卓。打通root經脈我們才能進行之後的操作。

2.Xposed框架安裝,想要使用Xposed這個武器,就要先能拿的起來才能談使用。

1.2武器

xposedBridgeApi-82.jar.jar。

這個就是我們的武器了,小白,來,我給你演示演示這個武器的基本使用方法。

2.武器演示

技術分享圖片

我們這裏使用Xposed武器攔截packageName,然後進行輸出。

其實這個武器還是搭配內功才能發揮最大的能力。

搭配內功,師傅,這個怎麽搞。

莫急莫急,我們一步一步來。

0×02 練習使用Hook的第一重內功(Android Studio 3.0 +Xposed)

小白,我先傳授你第一重內功的運行穴位。要好好聽哦。

Android Studio 3.0 基本配置

我們先來給內容運行提供一個環境。

(1)首先構建一個不需要Activity的項目

技術分享圖片

(2)然後導入jar包。並且右鍵add as Library。

技術分享圖片

(3)填寫Androidmanifest.xml文件。

技術分享圖片

  <meta-data
            android:name="xposedmodule"
            android:value="true" />
        <meta-data
            android:name="xposeddescription"
            android:value="Hook log test" />
        <meta-data
            android:name="xposedminversion"
            android:value="53" />

(4) 修改依賴方式

Xposed裏已有該jar包內容,再次打包進去會沖突。

技術分享圖片

(5)基本Xposed模型創建

使用alt+enter實現一個方法。

技術分享圖片

小白,聽我啰嗦兩句。

handleLoadPackage,這個方法用於在加載應用程序的包的時候執行用戶的操作。

LoadPackageParam loadPackageParam:,這個參數包含了加載的應用程序的一些基本信息。

內功實現

技術分享圖片

這裏一句話就可以實現。

XposedBridge.log(“HAI_app: ” + loadPackageParam.packageName);

這裏我們要進行思考了,什麽是 XposedBridge.log了。

posedBridge.log的打印會輸出到xposed框架的啟動程序的日誌功能中。這樣也更方便我們的查看。

我們來做配置的最後一步。設置開始地方。

新建assets目錄裏,新建一個file。file名稱為xposed_init。

寫入包名+類。

測試成果

Build APK

安裝進行測試。

手機安裝然後重新啟動即可。

技術分享圖片

思考

所謂師傅領進門,修行看個人。所以啊。

我知道了師傅,我們是不是可以通過這個簡單的來進行過濾啊。比如寫一個簡單的分析系統。或者是其他的東西,我們還可以對這個進行過濾。我先自己去試試。

小白的自我修行

通過這個運行路徑,對報名進行分析和過濾。

進行簡單的嘗試。

使用昨天學的java字符串的substring來進行對字符串過濾。

技術分享圖片

然後進行測試。

當然也可以針對這個進行更加詳細的說明。

0×03木樁實戰練習

小白,來來,師傅這裏給你找了一個木樁,我打給你看看。這個hook是怎麽法功的,怎麽打的。要學好哦。

知道了師傅。

木樁信息收集

1.基本信息

小白啊,用我們之前使用過的一個武器,來收集這些基本信息吧。

師傅,我們一般都收集什麽信息啊。

恩,我們一般要收集

1.木樁的包名
2.木樁的簡單的邏輯
….

小白,這個你就自己收集把。

小白的操作

首先是包名。使用武器,apkhelper。

技術分享圖片

獲取到包名信息。com.example.login

然後是簡單的邏輯手機。

技術分享圖片

2.反編譯信息收集

小白啊,收集玩了嗎?

收集完了師傅。

好,我們接下來收集反編譯信息。知己知彼,方能百戰不殆。

師傅的操作

首先我們來看看我們要收集的東西。

1.關鍵的類名。
2.關鍵的函數位置。

來用Android Killer武器反編譯木樁。

定位。

查看類名,進行記錄。

技術分享圖片

小白,看清楚,是這個樣子進行記錄。

原來是這樣。com/example/login/MainActivity;
但是我們要改成這樣的。com.example.login.MainActivity

現在就需要定位到關鍵函數了。

技術分享圖片

這個login就是我們要Hook住的函數啦。

Ljava/lang/String;Ljava/lang/String;從這裏我們可以看到是兩個輸入內容。並且類型是String。我們現在要做的就是要hook住這個輸出,然後對其進行輸出。

木樁實戰練習

環境搭建

好了,小白,前期資料收集的差不多了。我現在要發功了,要看清楚我的使用哦。

先把環境調整好。

然後先做一個簡單的過濾。

技術分享圖片

這個時候,收集的包名就排上用場了。

因為是hook的是方法,所以我們這裏使用一個方法。

技術分享圖片

第一個參數,要hook的包名+方法名,這個也是我們收集好的。

第二個參數不動

第三個參數方法名

第四個參數 輸入的參數

我們有兩個String類型的參數,所以才這樣寫

最後一個參數,就是做一個監聽。可以監聽這個方法的使用前和使用後。

f for木樁

小白,一切準備你就須,看為師給你f這個木樁。

技術分享圖片

小白,你看這第一招

XposedBridge.log("ZHUZHU520:LoginName:"+param.args[0]);

這一招搞它的第一個輸入。

然後再來看這一招

XposedBridge.log("ZHUZHU520 技術分享圖片 assward:"+param.args[1]);

這一招搞它的第二個輸入。

然後最後一招。

XposedBridge.log("ZHUZHU520:end???:"+param.getResult());

這一招就是攔截返回值。

小白啊,這裏有一個需要思考的內容。

這樣hook的意義或者作用是什麽?

小白的思考

師傅,我覺得首先,這樣可以攔截下輸入的參數,還有返回的值。如果在hook裏做一個轉發信息的技能。那不就可以成功的對登錄賬戶的人進行賬號和密碼的獲取。

這不就是和釣魚一樣了嘛。

我覺得這是一個很大的漏洞,如果登錄廠商沒有做相應的處理,那這裏我可以拿這個搞死他。

好了,小白,你說的很對,我們現在來對這個進行下測試吧。

f 木樁測試

技術分享圖片

小白啊,你看這裏我們就成功的攔截內容了。小白給你一個任務,用hook f掉這個木樁,我希望他能登錄成功,哪怕我輸入的對的。

0×04 木樁f進階(小白的自我進步)

XposedBridge.log("ZHUZHU520:end???:"+param.getResult());

思考一

師傅之前使用了一個param.getResult()獲取了返回值,那我是不是可以使用相同的set方法,重新對這個進行賦值啊。

根據各種方式,我們知道了這裏的返回值就是Z,也就是布爾型。

說幹就幹,爭取f掉木樁。

技術分享圖片

進行測試。

成功hook。

思考二

除了可以hook返回值,還可以hook輸入值。

但是這樣有點畫蛇添足的感覺。

0×05 結束語

小白啊,hook就學到這裏吧。有時間我們繼續學習hook 技能。回去多練練。

Android逆向進階(7)——揭開Hook的神秘面紗