本帖最后由 iamok 于 2023-10-17 16:19 编辑
之前自己写winmm.dll来劫持修改时一直是使用下面的方式来修改内存:
[C++] 纯文本查看 复制代码 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, GetCurrentProcessId());
if (hProcess)
{
WriteProcessMemory(hProcess, addr1, realSub1, strlen((char*)realSub1), NULL);
WriteProcessMemory(hProcess, addr2, realSub2, strlen((char*)realSub2), NULL);
CloseHandle(hProcess);
}
按我的理解上面的代码应该也可以用memcpy来写:
[C++] 纯文本查看 复制代码 memcpy(addr1, realSub1, strlen((char*)realSub1);
memcpy(addr2, realSub2,strlen((char*)realSub2));
但实际情况是有些程序好像可以这么写,有些执行到memcpy函数时,进程就异常退出了。
测试的程序是010editor,大佬们看看是什么原因造成不能用memcpy函数来写呢?
附件放一个生成的失败dll
|