frida、Objection插件學習


https://www.python.org/ftp/python/3.9.7/python-3.9.7-amd64.exe

python 3.9.7

https://github.com/frida/frida/

frida-server

https://codechina.csdn.net/explore

國內GitHub鏡像庫,更新速度有點慢,新版的frida向下兼容frida-server。

 

frida使用

本機安裝工具版本為:

  1. Python 3.9.7
  2. frida 15.1.8
  3. 雷電模擬器3.114.0(模擬器測試失敗)
  4. pixel 3 XL Android 10

 

啟動frida-server提示未開啟,通過排查,使用adb shell連接模擬器getprop ro.product.cpu.abi命令查看后,模擬器為X86架構,非X86-64,所以造成啟動失敗。

 

使用命令修改權限為755並啟動frida-server

adb shellcd /data/local/tmp/chmod 777 frida-server

./frida-server

端口映射

adb forward tcp:27042 tcp:27042

adb forward tcp:27043 tcp:27043

更換frida-server后,通過frida-ps -R指令可以連接。

 

安裝編寫的測試demo程序,輸入值相加。

 

 

hook獲取其add參數值,得到參數值,改變其提示結果。

  

學習編寫frida hook腳本:

https://blog.csdn.net/zhy025907/article/details/89512096

java代碼相關hook代碼中相關部分,達成獲取其輸入值,改變其提示結果。

com.example.myapplication.MainActivity.add

編寫frida hook腳本達成目的,進程名與包名不同,hook一直失敗,嘗試編譯apk

if(Java.available){
    Java.perform(function(){ 
        var Class = Java.use("com.example.myapplication.MainActivity");
        if (Class != undefined){
            console.log('開始hook app');
            Class.add.implementation=function(){
                var JavaString =Java.use("java.lang.String");
                var ret = this.add.apply(this, arguments);
                console.log("a1=" + arguments[0]);
    console.log("a2=" + arguments[1]);
    var ret=this.add(123,123);
    console.log("result=",ret);
                
                return ret;
            }  
        }
    });
}

        通過firda運行 hook腳本,達成hook結果,通過console.log("a1=" + arguments[0]);

    console.log("a2=" + arguments[1]);獲取輸入的值,通過修改var ret=this.add()傳入的值,達成修改計算結果。

 

- frida工具Objection

  • 只是提供了各種供我們調用,在此基礎之上可以實現具體的功能,比如禁用證書綁定之類的腳本,就是使用的各種來組合編寫而成。於是有大佬將各種常見、常用的功能整合進一個工具,供我們直接在命令行中使用,這個工具便是。
  • 功能強大,命令眾多,而且不用寫一行代碼,便可實現諸如內存搜索、類和模塊搜索、方法打印參數返回值調用棧等常用功能,是一個非常方便的,逆向必備、內存漫游神器。

 

 

幾個基本操作:

help指令:在當前命令前加比如,,回車之后會出現當前命令的解釋信息;

空格:不知道輸入什么就按空格,會有提示出來,上下選擇之后再按空格選中,又會有新的提示出來;

jobs:作業系統很好用,建議一定要掌握,可以同時運行多項作業;

 

使用objection需要在手機上啟動frida-sesver,再使用objection注入需要hook的應用

objection -g <包名> explore

 

Memory 指令
    memory list modules               //枚舉當前進程模塊
    memory list exports [lib_name]    //查看指定模塊的導出函數
    memory list exports libart.so --json /root/libart.json //將結果保存到json文件中
    memory search --string --offsets-only                  //搜索內存

android heap 指令
    //堆內存中搜索指定類的實例, 可以獲取該類的實例id
    search instances search instances com.xx.xx.class
     
    //直接調用指定實例下的方法
    android heap execute [ins_id] [func_name]
     
    //自定義frida腳本, 執行實例的方法
    android heap execute [ins_id]

android 指令
    android root disable   //嘗試關閉app的root檢測
    android root simulate  //嘗試模擬root環境
    
    android ui screenshot [image.png]    //截圖
    android ui FLAG_SECURE false         //設置FLAG_SECURE權限

內存漫游
    android hooking list classes    //列出內存中所有的類
     
    //在內存中所有已加載的類中搜索包含特定關鍵詞的類
    android hooking search classes [search_name] 
     
    //在內存中所有已加載的方法中搜索包含特定關鍵詞的方法
    android hooking search methods [search_name] 
     
    //直接生成hook代碼
    android hooking generate simple [class_name]

hook 方式
    /*
        hook指定方法, 如果有重載會hook所有重載,如果有疑問可以看
        --dump-args : 打印參數
        --dump-backtrace : 打印調用棧
        --dump-return : 打印返回值
    */
    android hooking watch class_method com.xxx.xxx.methodName --dump-args --dump-backtrace --dump-return
     
    //hook指定類, 會打印該類下的所有調用
    android hooking watch class com.xxx.xxx
     
    //設置返回值(只支持bool類型)
    android hooking set return_value com.xxx.xxx.methodName false

Spawn 方式 Hook
    objection -g packageName explore --startup-command '[obejection_command]'

activity 和 service 操作
    android hooking list activities                   //枚舉activity
    android intent launch_activity [activity_class]   //啟動activity
    android hooking list services                     //枚舉services
    android intent launch_service [services_class]    //啟動services

任務管理器
    jobs list            // 查看任務列表
    jobs kill [task_id]  // 關閉任務

關閉 app 的 ssl 校驗
    android sslpinning disable

監控系統剪貼板
    // 獲取Android剪貼板服務上的句柄並每5秒輪詢一次用於數據。 
    // 如果發現新數據,與之前的調查不同,則該數據將被轉儲到屏幕上。
    help android  clipboard

執行命令行
    help android shell_exec [command]

 

 

https://www.jianshu.com/p/c443ad5ace9bhttps://blog.csdn.net/freeking101/article/details/107749541

 

查看當前可用的activity或者service

android hooking list activities/services

直接啟動activity或者服務

android intent launch_activity com.android.settings.DisplaySettings

這個命令比較有趣的是用在如果有些設計的不好,可能就直接繞過了密碼鎖屏等直接進去。


免責聲明!

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



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