社区
汇编语言
帖子详情
在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
{
}
的时候需要怎么传输这个参数
...全文
242
5
打赏
收藏
在VC中汇编嵌套中的结构参数传递问题
我最近分析一个软件,找到一个我需要的函数 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 { } 的时候需要怎么传输这个参数
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
你要在运行时改变这个参数么?
vc
内联
汇编
内联
汇编
提供C++的 C里面差不多在 Visual C++
中
使用内联
汇编
一、优点使用内联
汇编
可以在 C/C++ 代码
中
嵌入
汇编
语言指令,而且不需要额外的
汇编
和连接步骤。
在 Visual C++
中
,内联
汇编
是内置的编译器,因此不需要配置诸如 MASM 一类的独立
汇编
工具。这里,我们就以 Visual Studio .NET 2003 为背景,介绍在 Visual C++
中
使用内联汇的相关知识(如果是早期的版本,可能会有些许出入)。
内
VC
中
使用内联
汇编
一、内联
汇编
的优缺点 因为在Visual C++
中
使用内联
汇编
不需要额外的编译器和联接器,且可以处理Visual C++
中
不能处理的一些事情,而且可以使用在C/C++
中
的变量,所以非常方便。内联
汇编
主要用于如下场合: 1.使用
汇编
语言写函数; 2.对速度要求非常高的代码; 3.设备驱动程序
中
直接访问硬件; 4."Naked" Call的初始化和结束代码。 //(
在
VC
++
中
使用 内联
汇编
From:https://blog.csdn.net/root19881111/article/details/8450266
VC
++内联
汇编
(MSDN相关内容完整翻译):http://www.cppblog.com/xingkongyun/archive/2008/12/21/70003.html 调 call 和 偷功能 时,
VC
中
内联
汇编
容易产生的错误:https://www.5...
【逆向工程】C/C++的反
汇编
表示详解(1)函数调用,栈平衡,变量与参数的内存布局
很多人学完
汇编
,去看C/C++的反
汇编
就会很懵,发现单独看一条指令看的明明白白,但连在多条指令连在一起就不知道有什么作用了,如 push ebp mov ebp,esp sub esp,40h lea edi,[ebp-40h] mov ecx,10h mov eax,0CCCCCCCCh rep stos dword ptr [edi] 这里用
VC
6.0是最好的,更能看出本质,VS系列也可以,VS的话
VC
程序与Delphi程序之比较
delphi
中
默认的函数调用约定为register,即前三个参数可以放入相应的寄存器
中
,其他的也是推入到堆栈
中
,这样效率更高,参数传入顺序也是从右到左的,例程自己负责对参数的清栈(但帮助手册上说是从左到右的,我通过
汇编
查看发现是从右到左的) 而对于
vc
中
默认的函数调用约定为__cdecl,它所有参数是从右到左推入到堆栈
中
的,调用者负责对参数的清栈。ebp+0Ch这个地址是关键,它代表就是调用函数传入进来b参数的值,为什么要+0c呢,其实很简单,上层函数的堆栈地址肯定比内层函数的地址要高。
汇编语言
21,500
社区成员
41,618
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章