Android 安全研究 hook 神器frida學習(一)


在進行安卓安全研究時,hook技術是不可或缺的,常用的有Xposed:Java層的HOOK框架,由於要修改Zgote進程,需要Root,體驗過Xposed,整個過程還是很繁瑣的,並且無法hook,native層的。作為一名安卓菜鳥,Frida明顯更方便,更適合我,結合現有的工具可以很容易的達到hook 的目的。

  本篇文章為第一篇,初體驗Frida。

  學習的前提:安卓開發基礎 ,推薦:https://www.runoob.com/w3cnote/android-tutorial-android-studio.html,(代碼敲一遍),java基礎,python基礎,js基礎。

 

  關於Frida的安裝,環境搭建:https://juejin.cn/post/6844904110706130952

 

  簡單體驗Frida,破解一個app。

  

 

   app很簡單,需要輸入密碼才能進入主頁面;破解思路,我們要找到檢查驗證碼的函數,進行hook. 

  找到hook點的思路,靜態分析代碼,借助工具進行動態調試。

  

 

   代碼1位置處可以看到securityCheck()函數進行校驗,如果返回值為true,驗證成功。在3位置可以看到,函數實在native,要想知道函數內容需要查看so文件。

  hook一個函數,是返回值為true,可以去hook函數的參數,提交正確的參數可返回true,或者hook函數的返回值,使函數的返回值永遠為true也可以。

  這里我們只從java層去hook,hook函數的返回值,使函數的返回值永遠為true即可

  開始寫hook代碼,我們只需要按照所給的代碼框架,寫入未入hook代碼即可。

    

 1 import frida

 2 import sys 3 4 jscode = """ 5 //這個地方寫js代碼,也是主要的hook代碼; 6 7 """ 8 9 def on_message(message, data): 10 if message['type'] == 'send': 11 print("[*] {0}".format(message['payload'])) 12 else: 13 print(message) 14 15 16 # 重點的4行代碼 17 process = frida.get_usb_device().attach('com.yaotong.crackme')//更改為要的app包名,.attach可改為spawn。spawn:以包名啟動進程並附加 ,attach:在app運行過程中去附加 18 script = process.create_script(jscode) 19 script.on('message', on_message) 20 script.load() 21 sys.stdin.read()

 

jscode 里要寫的內容為

console.log("Hello");
    function main() { console.log("Hello");//打印字符,證明hooK開始 Java.perform(function x() { var MainActivity = Java.use("com.yaotong.crackme.MainActivity"); //要想hook一個函數我們先要找到他的類,得到類以后可以就調用它里面的函數.Java.use(包名.類名)實現     //MainActivity即為我們hoook到的類,可以直接調用里面的函數,更改屬性值等操作,具體寫法如下(ps:該函數為普通方法,構造方法,重載方法寫法都不同) MainActivity.securityCheck.implementation = function (str) { //調用函數,function里面的參數要與原函數對應。 return true; //更改返回值,frida會檢測app進程,一旦該pp調用了MainActivity里面的securityCheck()函數,會自動更改返回值為true; }; }) } setImmediate(main);

 

 

運行腳本:

 

 

接着我們去輸入驗證碼的地方輸入任意值,調用該函數都會返回true

hook成功

 

 

 

 

 以上是Frida的初體驗,找到hook點,編寫hook的js代碼,啟動frida,調用該函數,hook成功。整個過程十分方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM