精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美成人精品| 黄色成人在线观看网站| eeuss影院一区二区三区| 78色国产精品| 久久久久亚洲精品成人网小说| 亚洲国产一区二区三区在线播| 一级黄色免费片| 国产精品草草| 国产午夜精品免费一区二区三区| 天堂av2020| 中文不卡1区2区3区| 国产精品久久久久久久第一福利 | 亚洲第一av| 一色桃子久久精品亚洲| 国产在线一区二区三区四区| 一区二区视频免费观看| 在线国产日韩| 色偷偷噜噜噜亚洲男人的天堂| 亚洲少妇一区二区| yw.尤物在线精品视频| 亚洲国产婷婷综合在线精品| 四虎永久国产精品| 少妇高潮一区二区三区99小说| 免费欧美在线视频| 97视频色精品| 好吊色视频在线观看| 欧美猛男做受videos| 欧美大胆人体bbbb| 看看黄色一级片| 羞羞影院欧美| 精品成人乱色一区二区| 四虎精品欧美一区二区免费| 成人高清网站| 99精品欧美一区二区蜜桃免费| 91精品视频免费| 一级特黄免费视频| 亚洲免费婷婷| 97超级碰碰碰| 日本熟妇毛茸茸丰满| 中文字幕一区二区三区乱码图片 | 成人黄色网址| 国产精品麻豆久久久| 欧美日韩一区在线观看视频| 免费观看黄色av| 国产精品一区在线观看乱码 | 国产精品视频入口| 成年人网站av| 成人av色网站| 在线视频你懂得一区| 日韩少妇内射免费播放18禁裸乳| 欧美日韩色网| 一区二区三区在线看| 亚洲精品偷拍视频| 国产欧美久久久久久久久| 欧美国产成人精品| 亚洲图色在线| 免费日本一区二区三区视频| 国产精品久久网站| 影音欧美亚洲| 国产理论在线观看| 亚洲精品免费在线观看| 中文字幕日韩精品久久| 欧美人xxx| 亚洲免费看黄网站| 97中文字幕在线| 亚洲淫性视频| 亚洲妇熟xx妇色黄| 日本免费不卡一区二区| 中文日产幕无线码一区二区| 色呦呦一区二区三区| 又色又爽又高潮免费视频国产| 唐人社导航福利精品| 一本色道久久综合亚洲aⅴ蜜桃| 欧美成人精品欧美一级乱| 九九热线视频只有这里最精品| 欧美色图在线视频| 九色91popny| 亚洲午夜剧场| 亚洲成人免费网站| 亚洲午夜福利在线观看| 久久人体视频| 欧美激情第6页| 你懂的国产在线| 久久精品国内一区二区三区| 亚洲一区二区三| 五月天婷婷在线观看| 日本一区免费视频| 警花观音坐莲激情销魂小说| 91超碰在线免费| 在线免费观看日本欧美| 手机精品视频在线| 日韩欧美影院| 久久精品人人爽| 日韩污视频在线观看| 日本欧美大码aⅴ在线播放| 91免费人成网站在线观看18| 欧美亚洲精品在线观看| 中文字幕第一区综合| 妞干网视频在线观看| 激情亚洲影院在线观看| 欧美精品 国产精品| 黑丝av在线播放| 999国产精品视频| 97视频国产在线| 国产精品一区二区av白丝下载| 成人在线视频一区二区| 四虎永久国产精品| rebdb初裸写真在线观看| 欧美图片一区二区三区| 99久久人妻精品免费二区| 99久久影视| 人九九综合九九宗合| 国产99视频在线| 中文字幕 久热精品 视频在线| av女优在线播放| 日韩欧美专区| 亚洲男人天堂古典| 国产精品23p| 国内精品久久久久影院一蜜桃| 久久久久久九九| 视频在线这里都是精品| 欧美日韩一卡二卡三卡| 国产精品福利导航| 狠狠噜噜久久| 91探花福利精品国产自产在线| 国产小视频福利在线| 亚洲成av人片在线观看| 国模大尺度视频| 91影院成人| 国产精品久久网| 欧美成熟毛茸茸| 性做久久久久久| 亚洲一区二区三区黄色| 欧美在线看片| 91深夜福利视频| 嫩草香蕉在线91一二三区| 欧洲精品一区二区| 一色道久久88加勒比一| 国产精品久久久一区二区| 国产精品yjizz| dy888亚洲精品一区二区三区| 欧美日韩精品三区| 极品蜜桃臀肥臀-x88av| 日韩1区2区3区| 日韩av免费电影| 丝袜美腿一区| 中文字幕日韩专区| 在线观看中文字幕av| 国产欧美日韩另类视频免费观看| 女人扒开屁股爽桶30分钟| 日韩av三区| 清纯唯美日韩制服另类| 毛片免费在线播放| 色噜噜狠狠色综合欧洲selulu| 搡老熟女老女人一区二区| 国产欧美日韩综合一区在线播放| 精品卡一卡二| 筱崎爱全乳无删减在线观看| 亚洲乱码国产乱码精品精天堂| www.日本精品| 国产亚洲一二三区| 国产aaaaa毛片| 色999日韩| 亚洲bt欧美bt日本bt| 日本h片在线| 亚洲精品国精品久久99热 | 青青草在线播放| 一本色道a无线码一区v| 国产又粗又黄又猛| 狠狠色丁香久久婷婷综合丁香| 特级黄色录像片| 91超薄肉色丝袜交足高跟凉鞋| 精品入口麻豆88视频| 欧美日韩成人在线视频| 东京干手机福利视频| 午夜电影一区二区| 久久精品视频18| 九九视频精品免费| 成人免费看片'免费看| 欧美人与动xxxxz0oz| 国产不卡av在线免费观看| 嫩草在线视频| 亚洲国产三级网| 欧美成人精品网站| 亚洲青青青在线视频| 日韩av无码一区二区三区不卡| 久久久夜夜夜| 亚洲成人动漫在线| 日韩av三区| 亚洲一区二区三区777| 麻豆免费在线| 深夜福利亚洲导航| 老牛影视av牛牛影视av| 欧洲国产伦久久久久久久| 久久久久久久久久久久久女过产乱| 97成人超碰视| 爱爱爱爱免费视频| 国产亚洲精品久久久久婷婷瑜伽| 亚洲精品久久区二区三区蜜桃臀| 中文字幕久久精品一区二区| 国产精品999| 高清电影在线免费观看| 伊人久久综合97精品| 国精产品一品二品国精品69xx| 欧美亚洲综合在线| 天海翼一区二区| 亚洲乱码日产精品bd| 中文字幕在线看高清电影| 国产一区二区三区av电影| 亚洲熟妇av一区二区三区| 欧美黄色一级视频| 一区二区三区四区五区精品| 精品人人人人| 亚洲伊人一本大道中文字幕| 春暖花开亚洲一区二区三区| 国内伊人久久久久久网站视频 | 啊v视频在线一区二区三区| 视频污在线观看| 日韩午夜精品电影| 在线观看中文字幕av| 日本道色综合久久| 成人午夜视频在线播放| 亚洲成年人影院| 成熟的女同志hd| 国产精品传媒在线| av电影在线不卡| 91婷婷韩国欧美一区二区| 在线观看视频在线观看| 久久精品免费看| 自拍偷拍 国产| 天堂在线亚洲视频| 夫妻免费无码v看片| 在线精品观看| 国产女主播自拍| 在线播放精品| 国产片侵犯亲女视频播放| 中文字幕乱码亚洲无线精品一区| 亚洲精品乱码视频| 日韩综合一区| 亚洲成人在线视频网站| 国产一区二区三区四区五区| 欧美精品一区在线发布| 西野翔中文久久精品字幕| 国产一区二区精品免费| 国语一区二区三区| dy888夜精品国产专区| 久久免费精品| 成人在线免费网站| 亚洲1区在线| 国产精品日韩一区二区三区| 91成人精品在线| 国产精品一区二区三区观看| 9l亚洲国产成人精品一区二三| 51成人做爰www免费看网站| 日本高清精品| 国产精品区二区三区日本| 激情小说一区| 欧美日韩亚洲在线| 日韩欧美三级| 波多野结衣激情| 欧美aⅴ99久久黑人专区| 日韩精品久久一区二区| 亚洲激情一区| 亚洲成熟丰满熟妇高潮xxxxx| 久久动漫亚洲| 狠狠干狠狠操视频| 国产精品白丝jk黑袜喷水| 妖精视频一区二区| 2020国产精品久久精品美国| 日韩人妻无码精品综合区| 国产精品乱码一区二三区小蝌蚪| 成年人网站在线观看视频| 亚洲欧洲综合另类| 日本免费一二三区| 91黄色激情网站| 国产免费的av| 亚洲精品短视频| www亚洲人| 欧美激情国产精品| 欧美特大特白屁股xxxx| 91中文字幕在线观看| 精品欧美午夜寂寞影院| 日韩欧美第二区在线观看| 欧美国产激情| 国产性生交xxxxx免费| 国产乱码一区二区三区| 粉嫩av懂色av蜜臀av分享| 中文在线一区二区 | 激情欧美一区二区三区| 欧美日韩激情视频在线观看| 日本大胆欧美人术艺术动态| 青青草精品在线| 91麻豆福利精品推荐| 亚洲综合久久av一区二区三区| 亚洲国产一区二区三区青草影视| 久久国产香蕉视频| 精品国产乱码久久久久久图片| 韩日在线视频| 久久男人av资源网站| 欧美xxxx性| 极品尤物一区二区三区| 亚洲成av人片乱码色午夜| 黄色片网址在线观看| 精品在线免费观看| 免费看黄色aaaaaa 片| 亚洲男人的天堂网| 国产又粗又猛又爽又| 精品成人私密视频| 免费av网站在线看| 国产成人福利视频| 白嫩白嫩国产精品| 永久免费精品视频网站| 日日摸夜夜添夜夜添亚洲女人| xxxxwww一片| 国产精品久久久久久久浪潮网站 | 爱情岛论坛亚洲入口| 日本欧美国产| 国产又大又硬又粗| 成人h动漫精品一区二| 麻豆网址在线观看| 欧美在线视频全部完| 偷拍自拍在线| 97在线观看视频国产| 秋霞影院一区| 警花观音坐莲激情销魂小说 | 国产精品视频精品| 久久不见久久见国语| www.日本少妇| 成人性视频免费网站| 欧美精品一区二区成人| 欧美精品vⅰdeose4hd| 8888四色奇米在线观看| 日韩av免费在线观看| 婷婷成人综合| 欧美v在线观看| 99re66热这里只有精品3直播 | 国产精品无码在线| 亚洲成av人片观看| 人妻一区二区三区免费| 色综合五月天导航| 亚洲精品观看| 免费的一级黄色片| 高清不卡在线观看| 久久午夜鲁丝片午夜精品| 日韩欧美中文一区| 伊人影院在线视频| 国产精品免费一区二区三区观看| 在线观看日韩av电影| 催眠调教后宫乱淫校园| 午夜一区二区三区在线观看| 手机看片1024日韩| 69av在线视频| 亚洲影院天堂中文av色| 久久久久久久久久久久久国产精品| 91麻豆swag| 波多野结衣家庭主妇| 在线精品播放av| 天天综合91| 久久久99精品视频| 国产精品主播直播| 日韩黄色在线视频| 亚洲男人天堂古典| 久久av影院| 二级片在线观看| 国产91色综合久久免费分享| 日韩男人的天堂| 亚洲午夜女主播在线直播| 高清av一区二区三区| 中文字幕一区二区三区四区五区 | 三级黄色片网站| 91福利在线导航| 成人国产免费电影| 精品国产免费久久久久久尖叫| 免费看黄裸体一级大秀欧美| 日本少妇xxxxx| 91精品国产乱码| а√在线中文网新版地址在线| 欧美另类视频在线| 激情综合色播五月| 日韩精品――中文字幕| 亚洲人成免费电影| 美女精品久久| 成年网站在线免费观看| 亚洲色图在线播放| 亚洲av毛片成人精品| 国产精品网红直播| 欧美三区视频| 亚洲精品视频久久久| 欧美二区乱c少妇| 欧美男人天堂| 最新精品视频| 久久一留热品黄| 国产成人毛毛毛片| 国产91精品网站| 国产一区久久| 丁香六月激情综合| 亚洲国产精品资源| 91精品麻豆| 青青青国产在线视频| 亚洲国产一区二区视频|