精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用Frida在Windows中攔截C++函數

開發 前端
使用Frida可以訪問目標進程的內存空間,在目標程序運行時可以覆蓋一些功能,從導入的類中調用函數,在堆上可以查找對象實例并使用這些對象實例,并可以Hook、跟蹤和攔截函數等等。

1.摘要

Frida是一款基于Python+javascript的Hook框架, 可運行在Windows、Android、iOS、Linux、MacOS全平臺系統中,主要使用了動態二進制插樁技術。插樁技術是指將額外的代碼注入到目標程序中, 以實現收集目標運行時信息, 插樁技術主要分為兩種:源代碼插樁和二進制插樁, 源代碼插樁是將額外代碼注入到程序源代碼中,二進制插樁是將額外代碼注入到二進制可執行文件中。

使用Frida可以訪問目標進程的內存空間,在目標程序運行時可以覆蓋一些功能,從導入的類中調用函數,在堆上可以查找對象實例并使用這些對象實例,并可以Hook、跟蹤和攔截函數等等。

2.Frida的能力

Frida是一個非常強大的動態instrumentation框架,其主要能力包括:

  • 攔截(Hook)系統API調用:可以hook目標程序的各種系統API調用,如文件、網絡、進程、加密等,攔截和修改參數或返回值。
  • 注入JS代碼:可以實時向目標程序注入JavaScript代碼,調用其函數接口或修改程序運行邏輯。
  • 動態調試:可以動態地設置斷點、Dump內存、遍歷對象等,無需重啟程序。
  • 反混淆和脫殼:可以通過dump內存或hook相關函數的方式對加殼/混淆的目標程序進行反混淆和脫殼。
  • 適用范圍廣:支持Windows、Linux、macOS、iOS、Android等主流平臺。
  • 多語言綁定:提供Java、Python、C#等語言的綁定庫, 可以使用腳本語言進行交互。
  • 插件機制:支持擴展自己的插件,實現自定義功能。
  • 開源免費:Frida是完全開源免費的,社區活躍。

3.Frida常用語法

Frida在實戰使用過程中,經常使用的功能語法主要包括以下這些:

導入frida模塊:

const frida = require('frida');

附加/注入進程:

// 附加
const session = await frida.attach(pid);

// 注入
const session = await frida.spawn([path], options);

創建/加載/卸載腳本實例:

# 創建
const script = await session.createScript(source);

# 加載
await script.load();

# 卸載
await script.unload();

導出函數:

rpc.exports = {
   func1: (args) => {
      // ...
   }
}

Hook函數:

Interceptor.attach(target, {
  onEnter: function(args) {
    
  },
  
  onLeave: function(retval) {
  }
});

讀寫內存:

let buf = Memory.readByteArray(addr, len);
Memory.writeByteArray(addr, [1, 2, 3]);

枚舉/搜索模塊:

// 枚舉
Process.enumerateModules()

// 搜索
Process.findModuleByName()

枚舉/搜索導出函數:

// 枚舉
Module.enumerateExports()

// 搜索
Module.findExportByName()

調用函數:

let retval = Module.getExportByName()(args);

4.Frida安裝

這里以Windows10環境為基礎進行實驗, 首先在Windows搜索框中搜索:PowerShell, 以管理員權限打開, 并執行以下命令:

pip install frida-tools

注意:這里一定要以管理員權限打開PowerShell,否則可能會安裝失敗。

安裝成功后如圖所示:

圖片圖片

輸入命令frida --version 查看Frida的版本號,如果正常顯示版本號,則說明安裝成功, 如圖:

圖片圖片

5.編寫測試程序

編寫測試程序的目的是要驗證Frida能否成功Hook測試程序中的指定函數, 并將函數的每個參數內容進行打印。

我在這里的測試程序使用C++編寫, 主要完成2個函數, AES加密和解密算法, 設想的步驟是將AES加密算法和解密算法的兩個函數編譯成Dll,并將兩個函數導出, 然后再寫一個客戶端程序加載Dll并調用導出函數。

AES加密算法的C++代碼如下:

extern "C"  __declspec(dllexport) void AesEncrypt(unsigned char* plaintext, int plaintext_len, unsigned char* key, unsigned char* iv,
    unsigned char* ciphertext) {
    EVP_CIPHER_CTX* ctx;
    int len;
    int ciphertext_len;

    printf("AesEncrypt is at %p\n", AesEncrypt);

    ctx = EVP_CIPHER_CTX_new();

    EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv);

    EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len);
    ciphertext_len = len;

    EVP_EncryptFinal_ex(ctx, ciphertext + len, &len);
    ciphertext_len += len;

    EVP_CIPHER_CTX_free(ctx);
}

AES加密算法函數AesEncrypt包含了四個參數,分別為: 明文字符串、明文字符串長度、Key、iv向量。

AES解密算法C++代碼如下:

// AES解密
extern "C"  __declspec(dllexport) void AesDecrypt(unsigned char* ciphertext, int ciphertext_len, unsigned char* key, unsigned char* iv,
    unsigned char* plaintext) {
    EVP_CIPHER_CTX* ctx;
    int len;
    int plaintext_len;

    printf("AesDecrypt is at %p\n", AesDecrypt);

    ctx = EVP_CIPHER_CTX_new();
    EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv);
    EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len);
    plaintext_len = len;

    EVP_DecryptFinal_ex(ctx, plaintext + len, &len);
    plaintext_len += len;

    EVP_CIPHER_CTX_free(ctx);
}

同樣,AES解密算法函數AesDecrypt也提供了四個參數,分別為:密文文本、密文文本長度、Key、iv向量。

重新建立一個新的C++工程, 這里模擬了真實程序的業務場景,對明文字符串使用AES算法加密,為了防止程序運行太快退出,這里將主要程序邏輯放到一個while循環中,并使用暫停功能進行控制,方便后面的函數Hook實驗。為了方便操作, 我在中間插入了pause暫停, 方便后面手動控制函數的調用時機。

應用代碼如下:

typedef void(__stdcall* AES_ENCRYPT_TYPE)(unsigned char*, int, unsigned char*, unsigned char*,
    unsigned char*);

typedef void(__stdcall* AES_DECRYPT_TYPE)(unsigned char*, int, unsigned char*, unsigned char*,
    unsigned char*);

int main()
{
    while (1) {
        //std::cout << "Hello World!\n";
    //原文
        unsigned char plaintext[] = "This is a plaintext message";

        // 密鑰
        unsigned char key[32] = "suntiger20232021sdvdiuyt657uhjg";

        // 初始化向量
        unsigned char iv[16] = "9876kvdfdkkdfdf";

        // 密文緩沖區
        unsigned char ciphertext[128];

        memset(ciphertext, 0, 128);

        // 加密
        AesEncrypt(plaintext, strlen((char*)plaintext), key, iv, ciphertext);
        system("pause");

        unsigned char decryptedtext[128];
        memset(decryptedtext, 0, 128);
        AesDecrypt(ciphertext, strlen((char*)ciphertext), key, iv, decryptedtext);

        printf("%s\n", decryptedtext);

        system("pause");

        Sleep(1);
    }
}

將以上代碼編譯執行后,每按一次空格鍵, 程序便會依次向下執行, 如圖:

圖片圖片

6.編寫插樁程序

插樁程序代碼由Python和Javascript語言組合而成,功能非常強大, 以下代碼是我自己實現的對動態鏈接庫中的導出函數AesEncrypt進行Hook,建立一個Python工程,代碼如下:

import frida
import sys


def on_message(message, data):
    print(message)


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    local = frida.get_local_device()
    // 附加進程
    session = local.attach("test.exe")
    script = session.create_script("""
        var baseAddr = Module.findBaseAddress('aes.dll');
        // 查找函數模塊
        var aesEncryptAddr = Module.findExportByName("aes.dll", "AesEncrypt");
        Interceptor.attach(aesEncryptAddr, {
        onEnter: function(args) {
            send(args[0]);
            console.log('');
            console.log('[+]plaintext: ' + Memory.readUtf8String(args[0]));
            console.log('[+]plaintext len: ' + args[1].toInt32());
            console.log('[+]key:' + Memory.readUtf8String(args[2]));
            console.log('[+]iv:' + Memory.readUtf8String(args[3]));
        }
    });
    """)

    script.on('message', on_message)
    script.load()
    sys.stdin.read()
    session.detach()

在上面的Hook代碼中,我主要完成了以下操作:

  • 通過frida在本地查找進程test.exe,也就是我上面實現的客戶端測試程序進程。
  • 通過Javascript腳本在進程中查找模塊aes.dll, 這個動態鏈接庫是我上面實現的AES加解密測試程序。
  • 在動態鏈接庫中查找導出函數AES加密函數:AesEncrypt,并附加到該函數地址進行參數監控。
  • 打印每個參數的內容。

以下是我執行插樁程序后,獲取到的參數內容,如圖:

圖片圖片

可以看到,已經成功把解密函數的四個參數全部打印出來, C++函數Hook成功。

責任編輯:武曉燕 來源: 二進制空間安全
相關推薦

2011-08-22 17:13:00

LuaC++函數

2010-01-27 17:16:52

C++構造函數

2009-04-14 14:53:06

C++Lambda函數多線程

2010-01-26 10:42:26

C++函數

2010-02-02 13:15:00

C++ lambda函

2023-04-03 07:08:28

C++函數模板

2023-09-26 22:37:16

C++const

2010-01-11 15:29:13

引用C++語言

2010-01-25 09:50:58

C++函數對象

2010-01-19 13:43:59

C++函數

2010-01-25 14:00:27

C++類

2010-01-27 10:13:22

C++類對象

2021-04-01 11:28:44

C++ LinuxWindows

2023-09-12 07:38:36

C++getline函數

2010-03-10 19:18:10

Python scri

2010-01-27 14:00:50

CC++運行環境

2011-07-13 11:34:58

CC++時間函數

2010-02-04 16:39:26

C++析構函數

2010-02-02 17:39:31

C++構造函數

2012-04-28 15:28:21

JNI混合編程Java
點贊
收藏

51CTO技術棧公眾號

欧美精品一本久久男人的天堂| 色一情一乱一乱一91av| 亚洲一区二区三区视频| 九九视频免费观看| 欧美黄色录像| 欧美性做爰猛烈叫床潮| 天堂v在线视频| 亚洲狼人综合网| 久久大逼视频| 久久精品2019中文字幕| 91丨porny丨对白| 成人直播视频| 亚洲柠檬福利资源导航| 国产在线精品一区二区中文| 高潮毛片又色又爽免费| 中文在线日韩| 亚洲免费一在线| 91亚洲一区二区| 在线能看的av网址| 亚洲黄色av一区| 欧美国产综合视频| 99热这里只有精品3| 亚洲欧美日韩国产综合精品二区| 久久久国产一区二区三区| 人妻精品久久久久中文字幕| 外国成人毛片| 日韩欧美在线观看| japanese在线播放| 午夜视频在线观看网站| 26uuu另类欧美亚洲曰本| 91传媒视频在线观看| 曰批又黄又爽免费视频| 国产麻豆综合| 欧美精品久久久久久久| 日韩精品一区二区三区在线视频| 欧美日韩大片免费观看| 欧美一区二区三区日韩| 精品日韩久久久| 色一区二区三区| 一区二区在线看| 在线观看福利一区| 成人影视在线播放| 91美女视频网站| 国产精品av一区| 国产麻豆精品一区| 六月丁香综合在线视频| 国产精品精品视频| 懂色av蜜臀av粉嫩av分享吧最新章节| 亚洲激情国产| 欧美激情喷水视频| 黄色a级片在线观看| 99精品国产一区二区三区| 伊人精品在线观看| 丁香激情五月少妇| av在线不卡顿| 最近的2019中文字幕免费一页| 99久久久无码国产精品性| 婷婷精品在线| 国产视频欧美视频| 大又大又粗又硬又爽少妇毛片| 国偷自产视频一区二区久| 欧美xxxxxxxxx| 日韩精品――色哟哟| 精品亚洲a∨一区二区三区18| 欧美精品一二三区| 日本高清一区二区视频| 国产精品白丝久久av网站| 91精品久久久久久久91蜜桃| 国产5g成人5g天天爽| 欧美特黄不卡| 欧美成人a在线| 久久免费精品国产| 亚洲人成伊人成综合图片| 国产视频久久久久久久| 高清国产在线观看| 国产精品久久久久蜜臀 | 午夜视黄欧洲亚洲| av之家在线观看| 成人性生活视频| 欧美日免费三级在线| 亚洲一区二区三区观看| 中文字幕一区图| 精品在线小视频| 日韩免费成人av| 中出一区二区| 97久久超碰福利国产精品…| 天天干,天天干| 久久99热这里只有精品| 国产成人精品免费视频大全最热 | 欧美日韩综合色| 亚洲图片 自拍偷拍| 风间由美性色一区二区三区四区| 日韩精品视频在线观看网址| 天天躁夜夜躁狠狠是什么心态| 99re6这里只有精品| 欧美激情视频网| 国产免费av一区| 九九**精品视频免费播放| 99久久一区三区四区免费| 深夜福利在线观看直播| 国产精品视频麻豆| 日韩精品视频在线观看视频 | 欧美一级淫片免费视频魅影视频| 26uuu国产在线精品一区二区| 亚洲国产精品毛片| 丁香花在线高清完整版视频| 色呦呦一区二区三区| 国产精品自在自线| 日韩欧美美女在线观看| 日韩中文理论片| 久操免费在线视频| 日本欧美一区二区三区乱码| 成人资源av| h网站在线免费观看| 亚洲一二三专区| 中文字幕免费高清在线| 日本成人7777| 精品视频9999| 真实新婚偷拍xxxxx| 成人中文字幕在线| 2025韩国大尺度电影| 亚洲免费福利| 欧美大片一区二区三区| 欧美美女性生活视频| 亚洲免费网址| 丁香五月网久久综合| 日韩毛片久久久| 日韩欧美在线中文字幕| 国产一精品一aⅴ一免费| 日韩精品首页| 日韩av免费看| 四虎永久在线精品免费网址| 亚洲美女区一区| 999精彩视频| 国产99久久久国产精品成人免费 | 国产精品国产一区二区| 午夜激情视频在线观看| 色噜噜狠狠成人中文综合| 在线观看一区二区三区四区| 国产精品精品国产一区二区| 日韩免费观看av| 无码精品在线观看| 一区二区日韩电影| 99精品视频免费版的特色功能| 不卡一区综合视频| 国产精品999999| 九九热视频在线观看| 精品久久久久久久久久久| 亚洲一区二区三区黄色| 影音先锋亚洲一区| 国产精品国产一区二区| 久久av色综合| 日韩免费视频线观看| 精品99久久久久成人网站免费| 国产一区二区三区黄视频| 亚洲免费久久| 亚洲色图综合| 久久精品国产一区| h片在线免费看| 一二三区精品视频| 日韩综合第一页| 夜夜精品视频| 蜜桃av久久久亚洲精品| 亚洲天堂导航| 亚洲深夜福利视频| 中国女人一级一次看片| 中文字幕日韩精品一区| 免费在线观看污网站| 欧美阿v一级看视频| 国产精品二区三区四区| 美女网站在线看| 亚洲日韩欧美视频| 亚洲综合网av| 一区二区三区四区不卡在线| 亚洲色图欧美日韩| 新67194成人永久网站| 日韩av一区二区三区在线| 成人h在线观看| 久久精品国产一区二区电影| www日本视频| 亚洲国产成人av网| 国产一区二区三区四区五区六区| 日韩中文字幕麻豆| 特级黄色录像片| 成人av激情人伦小说| 欧美一级片在线播放| 超碰国产在线观看| 日韩精品一区二区在线| 无码人妻精品一区二区三区不卡 | 欧美一区二区三区日韩视频| 日本熟女一区二区| 国产日韩欧美a| 北条麻妃亚洲一区| 久久国产高清| 欧美性视频在线播放| 99re8这里有精品热视频免费| 欧美一级片免费在线| 国产理论在线观看| 亚洲精品国产精品久久清纯直播 | 欧美一区二区美女| 国产精品男女视频| 亚洲欧洲精品一区二区三区| 国产精品福利导航| 久久精品国产精品亚洲红杏| 日韩精品在线视频免费观看| 精品久久久久久久| 国产精品一区在线观看| 国产精品蜜月aⅴ在线| 97在线免费观看视频| 香蕉视频在线免费看| 亚洲国产精品va在线| 一级特黄色大片| 精品欧美一区二区三区| 色哟哟一一国产精品| 99r精品视频| 99精品视频国产| 日韩成人精品在线观看| 阿v天堂2017| 66久久国产| 日韩理论片在线观看| 免费福利视频一区| av免费观看久久| 日韩第二十一页| 欧美一级片一区| 白白色在线观看| 操日韩av在线电影| 超碰国产在线观看| 亚洲人成网站777色婷婷| 人妻偷人精品一区二区三区| 欧美一区二区三区的| 中文字幕日韩三级| 91久久精品一区二区二区| 日本少妇全体裸体洗澡| 亚洲精品免费播放| 国产精品 欧美激情| 国产精品久久久久久久久免费桃花| 亚洲人人夜夜澡人人爽| 成人18视频在线播放| 又大又长粗又爽又黄少妇视频| 久久成人久久鬼色| 性欧美videossex精品| 久久亚洲欧洲| 成人观看免费完整观看| 99成人在线| 久艹在线免费观看| 精品不卡视频| 国产欧美日韩小视频| 亚洲午夜在线| 波多野结衣av一区二区全免费观看| 91精品亚洲| 日韩视频一二三| 欧美激情视频一区二区三区免费| 欧美a级黄色大片| 综合激情在线| 97在线免费视频观看| 午夜日韩激情| 精品一区二区三区无码视频| 欧美日韩岛国| 精品人妻少妇一区二区| 99pao成人国产永久免费视频| 欧美视频免费看欧美视频| 亚洲美女网站| 国产成人无码一二三区视频| 久久久久国产一区二区| 免费涩涩18网站入口| 久热成人在线视频| 五月天国产视频| 成人免费黄色大片| 一女三黑人理论片在线| 久久久久久影视| 免费中文字幕av| 国产欧美一区二区在线| jizzjizzjizz国产| 亚洲摸摸操操av| 国产一级淫片a| 福利微拍一区二区| 最近日韩免费视频| 这里只有精品电影| 亚洲精品国产精品乱码不卡| 日韩av最新在线| avtt在线播放| 欧美国产日韩在线| 伊人久久综合一区二区| 国产精品主播视频| av不卡一区二区| 日本一区二区三区精品视频| 91亚洲国产成人久久精品| 久久av综合网| 久久久久久穴| 日本不卡一区二区在线观看| 国产99久久久精品| 中日韩精品一区二区三区| 中文字幕+乱码+中文字幕一区| 成人免费精品动漫网站| 亚洲国产wwwccc36天堂| 中文字幕观看在线| 亚洲精品在线观看视频| youjizz在线播放| 欧美国产视频一区二区| 日韩久久一区二区三区| 成人动漫视频在线观看免费| 国产尤物久久久| 国产尤物av一区二区三区| 久久青草久久| 伊人影院在线观看视频| 国产三级三级三级精品8ⅰ区| 激情五月婷婷在线| 欧美优质美女网站| 殴美一级特黄aaaaaa| 中文字幕视频一区二区在线有码 | 日本久久久精品视频| 国产一区二区三区四| 男女做爰猛烈刺激| 亚洲国产日韩av| 91禁在线观看| 国产一区二区三区四区福利| brazzers在线观看| 91在线精品播放| 教室别恋欧美无删减版| av在线播放亚洲| 国产精品1024| 成年人视频软件| 欧美视频专区一二在线观看| www.成人免费视频| 日韩中文在线视频| 浪潮色综合久久天堂| 国新精品乱码一区二区三区18| 午夜激情久久| www.涩涩涩| 国产亚洲人成网站| 可以免费看的av毛片| 精品国产一区二区三区久久影院| 国产精品一卡二卡三卡 | 精品国产一区二区三区四| 日韩精品中文字幕一区二区三区 | 色999韩欧美国产综合俺来也| 欧美高清性xxxxhd| 亚洲黄色三级| 东京热av一区| 亚洲国产aⅴ成人精品无吗| a级片在线免费看| 久久精品国产电影| 国产精品日韩精品在线播放 | 国产精品综合不卡av| 最新亚洲精品| 国产成人久久婷婷精品流白浆| 日本激情视频在线观看| 一二美女精品欧洲| 不卡福利视频| 精品一区二区日本| 99精品视频免费观看视频| 特级特黄刘亦菲aaa级| 一区二区不卡在线视频 午夜欧美不卡在 | 福利精品视频| 国产精品99久久| 亚洲制服中文字幕| 亚洲色图19p| 精品国产av一区二区| 欧美高清第一页| 成人福利一区| 欧美日本视频在线观看| 99在线热播精品免费| 日韩欧美一级视频| 亚洲女人天堂色在线7777| 国产 日韩 欧美一区| 亚洲第一导航| 国产制服丝袜一区| 激情综合网五月天| 日韩电影大全免费观看2023年上| 欧美天堂视频| 亚洲女人毛片| 国产精品一级在线| 懂色av.com| 亚洲三级 欧美三级| 日本黄色成人| 国产精品8888| 97aⅴ精品视频一二三区| 婷婷激情五月综合| 久久久精品日本| 国产欧美自拍一区| 日韩在线第三页| 亚洲图片你懂的| 免费av网站在线播放| 国产精品69av| 亚洲综合婷婷| 给我看免费高清在线观看| 欧美日韩免费观看一区三区| 四虎影视成人| 日本一区二区三区视频免费看| 老司机精品视频导航| 久久久久久国产精品免费播放| 日韩激情视频在线| 亚州精品国产| 黄色av网址在线播放| 国产精品欧美一区二区三区| 999久久久久| 欧美诱惑福利视频| 亚洲成人一区| 久久久久久国产精品无码| 在线观看91av|