为了方便 有时候在汇编里面直接引用 函数的参数 这样是可行的 但是要注意 编译器默认使用 ebp 作为标准来寻址 所以
需要前面加上
push ebp
mov ebp,esp
才行
比如下面的代码
BOOL __declspec(naked) __stdcall Detour_CreateProcessInternalW(HANDLE hToken,
LPCWSTR lpApplicationName,
LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCWSTR lpCurrentDirectory,
LPSTARTUPINFOW lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation,
PHANDLE hNewToken)
{
__asm{
push ebp
mov ebp,esp
push hNewToken
push lpProcessInformation
push lpStartupInfo
push lpCurrentDirectory
push lpEnvironment
push dwCreationFlags
push bInheritHandles
push lpThreadAttributes
push lpProcessAttributes
push lpCommandLine
push lpApplicationName
push hToken
call jmp_back
pop ebp
retn 0x30
}
}