這篇文章主要講解了“Android逆向進階的方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android逆向進階的方法是什么”吧!
小白,要想使用這個武器,就要先打通經脈。
1.Root,手機root,無root不安卓。打通root經脈我們才能進行之后的操作。
2.Xposed框架安裝,想要使用Xposed這個武器,就要先能拿的起來才能談使用。
xposedBridgeApi-82.jar.jar。
這個就是我們的武器了,小白,來,我給你演示演示這個武器的基本使用方法。
我們這里使用Xposed武器攔截packageName,然后進行輸出。
其實這個武器還是搭配內功才能發揮最大的能力。
搭配內功,師傅,這個怎么搞。
莫急莫急,我們一步一步來。
小白,我先傳授你第一重內功的運行穴位。要好好聽哦。
我們先來給內容運行提供一個環境。
(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來進行對字符串過濾。
然后進行測試。
當然也可以針對這個進行更加詳細的說明。
小白,來來,師傅這里給你找了一個木樁,我打給你看看。這個hook是怎么法功的,怎么打的。要學好哦。
知道了師傅。
小白啊,用我們之前使用過的一個武器,來收集這些基本信息吧。
師傅,我們一般都收集什么信息啊。
恩,我們一般要收集
1.木樁的包名
2.木樁的簡單的邏輯
....
小白,這個你就自己收集把。
首先是包名。使用武器,apkhelper。
獲取到包名信息。com.example.login
然后是簡單的邏輯手機。
小白啊,收集玩了嗎?
收集完了師傅。
好,我們接下來收集反編譯信息。知己知彼,方能百戰不殆。
首先我們來看看我們要收集的東西。
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類型的參數,所以才這樣寫
最后一個參數,就是做一個監聽??梢员O聽這個方法的使用前和使用后。
小白,一切準備你就須,看為師給你f這個木樁。
小白,你看這第一招
XposedBridge.log("ZHUZHU520:LoginName:"+param.args[0]);
這一招搞它的第一個輸入。
然后再來看這一招
XposedBridge.log("ZHUZHU520:Passward:"+param.args[1]);
這一招搞它的第二個輸入。
然后最后一招。
XposedBridge.log("ZHUZHU520:end???:"+param.getResult());
這一招就是攔截返回值。
小白啊,這里有一個需要思考的內容。
這樣hook的意義或者作用是什么?
師傅,我覺得首先,這樣可以攔截下輸入的參數,還有返回的值。如果在hook里做一個轉發信息的技能。那不就可以成功的對登錄賬戶的人進行賬號和密碼的獲取。
這不就是和釣魚一樣了嘛。
我覺得這是一個很大的漏洞,如果登錄廠商沒有做相應的處理,那這里我可以拿這個搞死他。
好了,小白,你說的很對,我們現在來對這個進行下測試吧。
小白啊,你看這里我們就成功的攔截內容了。小白給你一個任務,用hook f掉這個木樁,我希望他能登錄成功,哪怕我輸入的對的。
XposedBridge.log("ZHUZHU520:end???:"+param.getResult());
師傅之前使用了一個param.getResult()獲取了返回值,那我是不是可以使用相同的set方法,重新對這個進行賦值啊。
根據各種方式,我們知道了這里的返回值就是Z,也就是布爾型。
說干就干,爭取f掉木樁。
感謝各位的閱讀,以上就是“Android逆向進階的方法是什么”的內容了,經過本文的學習后,相信大家對Android逆向進階的方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。