首页
社区
课程
招聘
c++ 嵌入汇编代码 问题
发表于: 2010-9-1 09:57 4995

c++ 嵌入汇编代码 问题

2010-9-1 09:57
4995
复制了一个系统函数,写到自己的函数中,编译不能通过,请大家帮忙看下:

DWORD WINAPI myDbgUiRemoteBreakin( LPVOID lpParameter)
{

        DWORD hh=0;
        _asm
        {
               
                                PUSH 8
                        PUSH 0x7C971E58
                        CALL 0x7C92E8CB
                        MOV  EAX,FS:[18]
                        MOV  EAX,DS:[EAX+30]
                        CMP  DS:[EAX+2],0
                        JNZ  0x7C971E2F
                        TEST DS:[0x7FFE02D4],2
                        JE   0x7C971E4F
                        AND  SS:[EBP-4],0
                        CALL DbgBreakPoint
                        JMP  0x7C971E4B                       
                        XOR  EAX,EAX
                                                INC  EAX
                                mov  hh,eax
               
        }
        return hh;

}

错误提示;

            “MOV  EAX,FS:[18]”  error C2415: improper operand type
                  “XOR  EAX,EAX”      error C2415: improper operand type

如何解决?

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习下,期待高手解决!
2010-9-1 10:00
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
call 和 jmp指令后面不能跟立即数

你这样做
DWORD addr1 = 0x12345678;

mov eax, addr1
jmp eax
2010-9-1 15:35
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
杯具了....
2010-9-1 15:36
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
JMP  0x7C971E4B
在你使用
mov eax,0x7c971e4b
jmp eax
以后,
还是不要使用为好。
绝对地址0x7c971e4b
最好不要引用,换个环境就可能地址变化,会崩溃的。
2010-9-1 16:46
0
雪    币: 459
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最好用相对地址,不要用绝对地址。
2010-9-1 17:40
0
雪    币: 155
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习了,谢谢各位。
2010-9-3 16:40
0
游客
登录 | 注册 方可回帖
返回
//