0

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

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

来自 REC 反编译:_push(5848);

5848 或 16D8h 只不过是从文件中读取的值。我想要做的就是钩住偏移量并打印我自己的文本。这应该很简单,但我一生都无法弄清楚,我尝试的一切只会让程序崩溃。可悲的是,替换文件中的文本不是一种选择,因为它很容易被替换并用于作弊。

我对我刚才提到的所有功能替换都使用了弯路,以防万一。

4

1 回答 1

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);

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

于 2015-10-24T09:23:40.280 回答