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

时间:2013-08-11 04:58:43

标签: c++ assembly dll inject

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

来自IDA: .text:0051CA30推16D8h

来自REC Decompile: _push(5848);

5848或16D8h只不过是从文件中读取的值。我想做的就是挂钩偏移并打印我自己的文本。这应该是非常简单的,但我无法弄清楚我的生活,我尝试的一切只是让程序崩溃。替换文件中的文本不是一个令人遗憾的选择,因为它很容易被替换并用来作弊。

我使用弯路进行所有功能替换我刚才提到的以防万一。

1 个答案:

答案 0 :(得分:0)

如果要替换目标进程中的字符串,可以在注入的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);

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