DLL注入替换已知偏移量C++处的字符串

DLL inject replace a string at known offset C++

本文关键字:C++ 字符串 偏移量 注入 替换 DLL      更新时间:2023-10-16

简单的问题是,我对c++或windows api不是很好,但我设法写了一个dll来注入。基本上,我有一行的已知内存偏移量,我想替换。

IDA:.text:0051CA30推16D8h

从REC分解文件:_推动(5848);

5848或16D8h只不过是从文件中读取的值。我想做的就是勾选偏移并打印我自己的文本。这应该很简单,但我一辈子都想不出来,我所做的一切都让程序崩溃了。遗憾的是,替换文件中的文本不是一个选项,因为它很容易被替换并用于作弊。

我对刚才提到的所有功能替换都使用了迂回道,以防有帮助。

如果要替换目标进程中的字符串,可以在注入的DLL中使用以下代码段。

char* buffer = reinterpret_cast<char*>(base + 0x16D8);
size_t length = strlen(buffer) + 1;
char myStr[length] = "...";
DWORD oldProtect;
VirtualProtect(buffer, length, PAGE_EXECUTE_READWRITE, &oldProtect);
memcpy(buffer, myStr, length);
VirtualProtect(buffer, length, oldProtect, nullptr);

注意:新字符串的长度必须小于或等于原始字符串的长度。