C++内联汇编中jmp指令的问题

C++语言 码拜 7年前 (2015-11-13) 1852次浏览
本人用的是vs2015,本人需要对某进程注入一些代码,使得最后执行完后跳会原来地址,目前已知 该进程中 欲跳回代码地址是004B2FF3 ,
于是本人写成这样:

DWORD Address_m = 0x004B2FF3;
inline _declspec(naked) static void MyAsm()
{
	_asm
	{
		jmp Address_m
	}
}

最后再用writeprocessmemory等去调用

PVOID Address_Write= VirtualAllocEx(Handle_My, NULL, 0xffff, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
	WriteProcessMemory(Handle_My, (LPVOID)Address_Write,&MyAsm, 0xffff,0);
	CreateRemoteThread(Handle_My, NULL, NULL, (LPTHREAD_START_ROUTINE)Address_Write, NULL, NULL, NULL);

但问题是这样写反汇编出来 跳转的地址根本不对,该怎么写呢
另一个问题:有没可能直接在内联汇编中直接插入机器码或载有机器码的变量(目前本人测试下来好像不行)

解决方案:40分
	_asm
	{
		mov eax, 004B2FF3H
		jmp eax
	}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++内联汇编中jmp指令的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)