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

miky131499 2007-04-13 05:10:51
我最近分析一个软件,找到一个我需要的函数
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
{
}
的时候需要怎么传输这个参数
...全文
210 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
miky131499 2007-04-13
  • 打赏
  • 举报
回复
有就是在VC里写这么段函数
void ::calXY()
{
_asm
{
push ebp
push edx
mov ebp,1
mov edx,...这里我就不会弄了
mov eax,0x00590c00
call eax
pop edx
pop ebp
}
}
miky131499 2007-04-13
  • 打赏
  • 举报
回复
是这样。比如这个函数的地址 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,
我通过程序嵌入操作也需要传输这样一个值。呵呵,不过第一次遇上这种,实在不知道该怎么定义并且传入这个值
大熊猫侯佩 2007-04-13
  • 打赏
  • 举报
回复
如果只是调试时可以直接该edx寄存器的值,我不太明白你的意思
miky131499 2007-04-13
  • 打赏
  • 举报
回复
我是要直接运行call 00590C00
现在需要传输参数
大熊猫侯佩 2007-04-13
  • 打赏
  • 举报
回复
你要在运行时改变这个参数么?

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧