首页
社区
课程
招聘
[旧帖] vc内联汇编 求助 0.00雪花
发表于: 2010-5-1 13:14 4128

[旧帖] vc内联汇编 求助 0.00雪花

2010-5-1 13:14
4128
用vc内联汇编 四个寄存器都有值 要call一个地址应该怎么写?
一个call的话可以这样写
_asm
{
  mov eax,0x000000
  call eax
}

现在如果是 eax,ecx,ebx,edx都有值 并且要call一个地址应该怎么去写
请高手指点一二
早上这样操作了一下没有成功
_asm
{
  mov eax,0x000000
  mov ecx,0x000000
  mov ebx,0x000000
  mov edx,0x000000

//想用堆栈进行传值
push ebp
  mov esp,ebp
  add esp,4
  mov [esp-4],0x000000
  call esp-4
  pop ebp
//遮样也不能通过
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 2513
活跃值: (545)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
还可以用其他的寄存器么……
mov esi,地址
call esi
2010-5-1 13:20
0
雪    币: 177
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
esi也不能用 没有其他的办法吗
2010-5-1 14:06
0
雪    币: 177
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
咋么没有人回答呢
2010-5-1 20:05
0
雪    币: 622
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你的意思是寄存器都不能用吗 那就用堆栈

push xxxx
call [esp]

我晕 你申请个 变量不就都办了 在内嵌里 也可以用的
2010-5-1 20:21
0
雪    币: 76
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ixq
6
是不是 call [esp-4] 啊?
2010-5-3 17:09
0
雪    币: 217
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
试试用push ret 代替call;
char strHelloWorld[] = "Hello World!\n";

__asm
        {
                push offset strHelloWorld; //全局变量用offset,局部变量用lea
                push label;
                push printf;
                ret;
label:
                add esp,4;
        }
2010-5-3 17:57
0
雪    币: 35
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
如果你不想动寄存器就只有用全局变量了  比如全局变量 int wumingshuaige;
__asm
{calll wumingshuaige}
编译出来 对应标准汇编 call [****]
对应机器码 FF15 ****
****就是全局变量的地址 这个全局变量wumingshuaige=无名帅哥 哈哈哈哈
2010-5-4 12:52
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=jdflash;800428]
//想用堆栈进行传值
push ebp
  mov esp,ebp  
  add esp,4
  mov [esp-4],0x000000
  call esp-4
  pop ebp
[/QUOTE]

你的这段代码错误很多诶,肯定不能执行啊
2010-5-4 15:11
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
__asm
{calll 变量}
编译出来 对应汇编 call [xxxx 为变量地址]
2010-5-5 06:21
0
雪    币: 213
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
DWORD temp=0x000000
_asm
{
  mov eax,0x000000
  mov ecx,0x000000
  mov ebx,0x000000
  mov edx,0x000000

call temp
}
2010-5-6 10:57
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
没懂你意思,
是不这样的?
__asm
{
      push eax;
      push ebx
      push   ecx
      push   edx
      mov eax,?
      mov ecx,?
      mov  edx,?
      mov ebx,?
      call   ?????
       pop edx
       pop ecx
       pop ebx
        pop eax
}
汇编call内容单独写,然后再调用
要在文件头声明 extern "c"  fun1(......................)
2010-5-6 11:39
0
游客
登录 | 注册 方可回帖
返回
//