Firda入門


什么是Frida:

Frida是一款基於python + js的Hook框架,適用於android

ios等平台,由於是基於腳本的交互,因此相比xposed和substrace cydia更加便捷。Frida的官網為:http://www.frida.re/

frida環境的搭建主要分為兩個部分, 一部分是運行在系統上的交互工具 frida,另一部分是運行在Android機器上的注入工具 frida-server。

Frida的環境搭建需要兩個部分,分別為Frida和Frida-server。

  • 安裝Frida:
pip install frida-tools
  • Frida-server安裝
下載地址:
https://github.com/frida/frida/releases

下載前,需要查看當前手機架構信息,在adb shell中使用如下命令進行查看

C:\Users\Administrator>adb shell #進入手機底層安卓操作系統
shell@X3:/ $ su                  #切換到root權限
root@X3:/ # cat /proc/cpuinfo    #查看架構信息
Processor       : AArch64 Processor rev 2 (aarch64)  #架構為AMD64
processor       : 0
model name      : AArch64 Processor rev 2 (aarch64)
BogoMIPS        : 26.00
Features        : fp asimd aes pmull sha1 sha2 crc32
fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: AArch64
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 2
Hardware        : MT6795T

根據手機版本安裝即可

Android 設備的CPU類型(通常稱為"ABIs")
1.armeablv-v7a:第7代及以上的ARM處理器,2011年5月以后生成的大部分android都使用它
2.arm64-v8a:第8代64位ARM處理器
3.armeabi:第5代。第6代ARM處理器,早期的手機用的比較多
4.x86:平板,模擬器用的比較多
5.x86_64:64位的平板

之后解壓處理 將文件push 進 /data/local/tmp 這個目錄

命令:adb push frida-server-12.2.18-android-arm /data/local/tmp/frida-server

之后需要設置權限,就可以 測試frida

測試命令:./frida-server

使用如下命令轉發android TCP端口到本地:

adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
之后另外開啟一個命令窗口運行命令:frida-ps -U

入口看到下面這樣“frida-ps 不是內部或外部命令” ,需要再安裝frida-tools

命令:pip install frida-tools
安裝完再次執行測試命令:frida-ps -U

===============
可參考具體的業務編寫hook代碼
示例:

import frida,sys

jscode = '''
Java.perform(function () {
    var MainActivity = Java.use('com.example.seccon2015.rock_paper_scissors.MainActivity');
    MainActivity.onClick.implementation = function (v) {
        send("開始Hook");
        this.onClick(v);
        this.n.value = 0;
        this.m.value = 2;
        this.cnt.value = 999;
        send("Hook成功!")
    }
});
'''

def on_message(message, data):
    if message['type'] == 'send':
        print("[*] {0}".format(message['payload']))
    else:
        print(message)

process = frida.get_usb_device().attach("com.example.seccon2015.rock_paper_scissors")
script = process.create_script(jscode)
script.on("message",on_message)
script.load()
sys.stdin.read()


免責聲明!

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



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