frida使用学习
介紹:
Friad是一款跨平臺輕量級Hook和調(diào)試框架,可以輕松實現(xiàn)Windows、Linux、Android、IOS、Mac平臺的動態(tài)插樁需求,單從Android層面理解,它可以實現(xiàn)Java層和Native層Hook操作。
指令:
frida-ps -U
查看通過usb連接的android手機上的進程。?
準備
打開安卓模擬器
打開frida-server監(jiān)聽
adb devices #查看設備
adb connect ****** #
adb shell
cd /data/local/tmp
./frida-server
frida-hook
hook 函數(shù)
import frida #導入frida模塊 import sys #導入sys模塊jscode = """ const hitdata = ``; // beatmaps/chromevox/hitpoints const timeList = hitdata.split("\n").map((v, idx, arr) => {return parseInt(v.split(",")[1], 10); }); function awaitHook(){var ptr = Module.findBaseAddress("libd3mug.so");console.log(ptr);const update = new NativeFunction(ptr.add(0x0000780), "pointer", ["char"]);const instance = ptr.add(0x02D18);// runninginstance.writePointer(new NativePointer(0)); // init.for (const t of timeList) {update(t);}console.log(instance.readPointer().readCString()); } // D3CTF{Gb78e-7b04-4364-82d2-7f44} setImmediate(function(){setTimeout(awaitHook,10); })"""def on_message(message,data): #js中執(zhí)行send函數(shù)后要回調(diào)的函數(shù)print(message)process = frida.get_remote_device().attach('com.hello.hook') #得到設備并劫持進程com.example.testfrida(該開始用get_usb_device函數(shù)用來獲取設備,但是一直報錯找不到設備,改用get_remote_device函數(shù)即可解決這個問題) script = process.create_script(jscode) #創(chuàng)建js腳本 script.on('message',on_message) #加載回調(diào)函數(shù),也就是js中執(zhí)行send函數(shù)規(guī)定要執(zhí)行的python函數(shù) script.load() #加載腳本 sys.stdin.read()報錯:frida.ServerNotRunningError: unable to connect to remote frida-server
解決:端口轉(zhuǎn)發(fā)
adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27043使用frida—dexdump安卓脫殼
在安卓模擬器上運行要脫殼的軟件。
在此文件夾目錄下運行cmd程序.
執(zhí)行 python main.py
?會在當前的文檔下面生成一個新的文件夾
這就是脫殼后的結果。?
總結
- 上一篇: [ACTF新生赛2020]fungame
- 下一篇: Crypto-Danciling lin