首页
社区
课程
招聘
在VC中汇编嵌套中的结构参数传递问题[求助]
发表于: 2007-4-13 17:12 5101

在VC中汇编嵌套中的结构参数传递问题[求助]

2007-4-13 17:12
5101
我最近分析一个软件,找到一个我需要的函数
005718C1  |.  52            push    edx                              ;   参数1
005718C2  |.  55            push    ebp
005718C3  |.  E8 38F30100   call    00590C00                        

其中参数1(也即edx实际是一个连续结构参数,比如他在地址中的分配为
参数1_1(DWORD型) 参数1_2(DWORD型)参数1_3(DWORD型)
请问在写
_asm
{
}
的时候需要怎么传输这个参数

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
啊哦。看来大家都不感兴趣啊。。看来是太简单了。但偶不懂,呵呵。麻烦各位了。我现在补充下问题:
我完整的补充下该段代码:
005718BD  |> \8B5424 10     mov     edx, dword ptr [esp+10]          ;  参数1
005718C1  |.  52            push    edx                              ;  1
005718C2  |.  55            push    ebp
005718C3  |.  E8 38F30100   call    00590C00                         ;
005718C8  |.  83C4 08       add     esp, 8
005718CB  |.  5D            pop     ebp
005718CC  |.  5B            pop     ebx

是这样。比如这个函数的地址 0x00590C00  ,他的作用是实现是输入3个参数,x,y,type,然后根据type的类型对x,y做运算,当type==0,函数就实现x+y ,ypte==1,则实现x*y
                     
我现在要做的就是HOOK到该程序,然后直接调用 0x00590c00这个函数,实现参数自定义,也就是说我需要传入的参数为x,y,type

通过分析该程序的汇编代码,可以看到如下:
005718C1  |.  52            push    edx                              ;   参数1
005718C2  |.  55            push    ebp
005718C3  |.  E8 38F30100   call    00590C00  
其中ebp就是type的传入,这个问题不大。
而edx就是x,y的传入,但他是一个连续参数,也就是说从反汇编上分析看到的edx实际只是一个地址(比如为 0x00555550),那地址0x00555550的值就是x,0x00555554的值就是y,
我通过程序嵌入操作也需要传输这样一个值。呵呵,不过第一次遇上这种,实在不知道该怎么定义并且传入这个值

有就是在VC里写这么段函数
void ::calXY()
{
_asm
{
   push ebp
   push edx
   mov ebp,1
   mov edx,...这里我就不会弄了
   mov eax,0x00590c00
   call eax
   pop edx
   pop ebp
}
}

上面只是我单方面写的代码,可能本身方法就没对,也麻烦大家给指点下。谢谢了
2007-4-13 20:12
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
结贴,已经解决了。偶真糊涂
2007-4-13 21:04
0
游客
登录 | 注册 方可回帖
返回
//