【发布时间】:2013-01-14 22:37:00
【问题描述】:
我想将此 c++ 函数移植到 NASM。
DWORD WINAPI Generic(LPVOID lpParameter) {
__asm {
mov eax, [lpParameter]
call eax
push 0
call ExitThread
}
return 0;
}
我在理解 lpParameter 在这里的工作原理时遇到了一些问题,当我在 NASM 上编译时我遇到了错误。
这是我当前的代码:
BITS 32
global _start
_start:
mov eax, [lpParameter]
call eax
push 0
call exitfunk
exitfunk:
mov ebx, 0x0A2A1DE0
push 0x9DBD95A6
call ebp
cmp al, byte 6
jl short goodbye
cmp bl, 0xE0
jne short goodbye
mov ebx, 0x6F721347
goodbye:
push byte 0
push ebx
call ebp
谁能帮帮我?
【问题讨论】:
-
所以,首先要了解您遇到了什么错误...
-
我想错误是 lpParameter 未定义。上面示例中的编译器通过解析这些变量并允许在 C 和 ASM 中混合引用来提供很大帮助。我还可以想象 lpParameter 是 C 函数的地址,所以 __asm 代码将地址放在 EAX 中,然后通过 EAX 调用它。
-
对不起,就像马克说的那样,lpParameter 是未定义的,函数会这样做。
-
这些神奇的常数是什么?
-
只是退出函数的一部分。