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

來源:互聯網
上載者:User

標籤:載入   列印   目的   作者   ring   https   應用   分享圖片   strong   

本文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的神秘面紗

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.