首页
社区
课程
招聘
未解决 使用Frida打印被Hook函数的参数个数及内容 50雪币
发表于: 2024-10-11 10:03 1620

未解决 使用Frida打印被Hook函数的参数个数及内容 50雪币

2024-10-11 10:03
1620

平台:Windows11 x64下Hook某个CPP写的应用程序调用的DLL,我使用Frida已经附加到该进程中,且已经load该DLL。

1
2
3
4
console.log("targetAddress is: ",targetAddress);
 Interceptor.attach(ptr(targetAddress), {
    onEnter: function (args) {.....},
    onLeave: function (retval) {......});

现在,我已经Hook到了该函数的地址。我希望把第二个参数和第三个参数都打印出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
已知该函数的原型如下:
int WINAPI iTest(HANDLE p_handle, tTestInfo *p_psInfo, tReturn *p_psStatus);
 
参数说明
p_hHandle   [in]
p_pstInfo   in out]
p_psStatus  [out]
 
第二个参数里面还包含有结构体:
typedef struct 
{
    BYTE        byType;         // [in]
    BYTE        byPos;          // [in]
    BYTE        abyable[8];     // [in]
    BYTE        abyPriority[8];     // [in]
    int         iTotalCount;        // [out]
    int         iUnknownCount;  // [out]
    tNumInfo        sNumInfo;       // [out] 这是个枚举类型的结构体
    tsInfo      sInfo;          // [out] 这是个枚举类型的结构体
    BYTE        abyReserved[32];    // 保留
} tTesttInfo;
 
第三个参数也是一个结构体指针:
typedef struct
{
    int         iLCode;             // [out] 
    int         iPCode;             // [out]
    int         iHandle;            // [out]
    int     iType;          // [out]
    char        acReturn[128];  // [out]
    char    acReserve[128];     // [out]
} tReturn;

但是无论在OnEnter还是OnLeave中,我都没有将该函数的参数值打印出来
console.log('[+] args[1] value: ' + Memory.readUtf8String(args[1]));
请大佬们帮忙分析一下,要如何才能将第二、三个复杂的参数打印出来?


[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 1121
活跃值: (687)
能力值: ( LV5,RANK:66 )
在线值:
发帖
回帖
粉丝
2
既然纯JS打印不出来,试试Python的方式?JS把参数传给Python,由Python打印。
6天前
0
雪    币: 2583
活跃值: (2208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
supertyj 既然纯JS打印不出来,试试Python的方式?JS把参数传给Python,由Python打印。
我只会python可以调用js代码,但是不知道如何把js的内容传递给ptyhon,请问大佬可以指点一下吗?
6天前
1
雪    币: 1447
活跃值: (3188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
直接创建 CMudle 写 C 代码 把数据精准的拿到再处理 
6天前
1
雪    币: 2583
活跃值: (2208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
iyue_t 直接创建 CMudle 写 C 代码 把数据精准的拿到再处理
请教一下大佬,我用Module.load()加载这个dll后续要如何操作?
4天前
0
雪    币: 149
活跃值: (3062)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
一个一个打印出来就行了,,+8,+16打印就行了
4天前
0
雪    币: 1447
活跃值: (3188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
xuri422 请教一下大佬,我用Module.load()加载这个dll后续要如何操作?
frida 支持直接编写C代码,处理结构体相对计算内存,无疑这个更简单
function c_example() {

  const cm = new CModule(`
#include <stdio.h>

int hello(int a, int b) {
  // printf("Hello World from CModule\\n");
  return a+b;
}
`);

  console.log(JSON.stringify(cm));

  const hello = new NativeFunction(cm.hello, 'int', ['int', 'int']);
  let sum = hello(5, 10);
  console.log(`sum:${sum}`)

}
3天前
0
雪    币: 10
活跃值: (131)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
iyue_t frida 支持直接编写C代码,处理结构体相对计算内存,无疑这个更简单 function c_example() { const cm = new CModule(` #include ...
感谢,才发现可以写C代码,,
3天前
0
雪    币: 10
活跃值: (131)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
iyue_t frida 支持直接编写C代码,处理结构体相对计算内存,无疑这个更简单 function c_example() { const cm = new CModule(` #include ...
亲测 IOS下无效
3天前
0
雪    币: 2583
活跃值: (2208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
iyue_t frida 支持直接编写C代码,处理结构体相对计算内存,无疑这个更简单 function c_example() { const cm = new CModule(` #include ...
感谢大佬,我昨天看了CModule部分,确实是可以写C++代码,但现在的问题是,我已经hook的这个函数,要在C++代码里面怎样才能获取已经Hook到的参数值呢?比如我的动态库是test.dll,函数是int hello(int a, int b);我需要hook到a和b的值以及返回值,这里没太弄明白。
3天前
0
雪    币: 1121
活跃值: (687)
能力值: ( LV5,RANK:66 )
在线值:
发帖
回帖
粉丝
11
xuri422 我只会python可以调用js代码,但是不知道如何把js的内容传递给ptyhon,请问大佬可以指点一下吗?
https://zhuanlan.zhihu.com/p/101401252
2天前
0
雪    币: 1121
活跃值: (687)
能力值: ( LV5,RANK:66 )
在线值:
发帖
回帖
粉丝
12
supertyj https://zhuanlan.zhihu.com/p/101401252
1.1.3,on_message,console直接输出了[object Object],无法输出其正常的内容,因为jni_env实际上是一个对象,但是使用send的时候会自动将对象转json格式输出。
2天前
0
游客
登录 | 注册 方可回帖
返回
//