8-__asm构建CALL代码

__asm构建CALL代码

思路:

在别的进程直接写入汇编太麻烦(因为是插入的机器码)

->在本地写C++的内联汇编放入函数中->将内联汇编的函数首地址作为写入函数的地址传入->将函数的汇编写入目标进程

注意问题

  • 程序改为release模式下执行

  • 安全检查关闭:由于安全检查会在函数前加入堆栈平衡的检测代码,影响最后的汇编指令结果,因此必须关闭

  • 优化,如果程序出现问题,关闭试试

DWORD __stdcall ThreadFunction(LPVOID lpThreadParameter)
{
unsigned index = 2;
unsigned damage = 99999;
unsigned dcall = 0x41fd40;
unsigned dBeActer = 0x4cef08;
__asm
{
push index //参数1入栈
push damage //参数2入栈
mov ecx,dBeActer //this指针传入寄存器
call dcall //调用程序内置函数
}
}

//使用WriteMemory函数将该函数的汇编指令写入到目标进程中,同时保存写入地址

//使用CreateRemoteThread函数创建线程并立刻执行写入地址的汇编代码