DLL注入替换已知偏移量C++; 简单的问题,我不是很好用C++或Windows API,但我设法写一个DLL注入。基本上,我有一个已知的内存偏移量的一行,我想取代
国际开发协会: .文本:0051CA30推送16D8h 从REC反编译: _推(5848) 5848或16D8h只不过是从文件中读取的值。我所要做的就是钩住偏移量并打印我自己的文本。这应该是非常简单的,但我无法为我的生活,我尝试的一切只是不断崩溃的程序。不幸的是,替换文件中的文本不是一个选项,因为它很容易被替换并用于作弊DLL注入替换已知偏移量C++; 简单的问题,我不是很好用C++或Windows API,但我设法写一个DLL注入。基本上,我有一个已知的内存偏移量的一行,我想取代,c++,assembly,dll,inject,C++,Assembly,Dll,Inject,国际开发协会: .文本:0051CA30推送16D8h 从REC反编译: _推(5848) 5848或16D8h只不过是从文件中读取的值。我所要做的就是钩住偏移量并打印我自己的文本。这应该是非常简单的,但我无法为我的生活,我尝试的一切只是不断崩溃的程序。不幸的是,替换文件中的文本不是一个选项,因为它很容易被替换并用于作弊 我对刚才提到的所有函数替换都使用了迂回的方法,以备不时之需。如果要替换目标进程中的字符串,可以在注入的DLL中使用以下代码段 char* buffer = reinterpre
我对刚才提到的所有函数替换都使用了迂回的方法,以备不时之需。如果要替换目标进程中的字符串,可以在注入的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);
char*buffer=reinterpret\u cast(base+0x16D8);
长度=strlen(缓冲区)+1;
char myStr[length]=“…”;
德沃德·奥尔德普雷特;
VirtualProtect(缓冲区、长度、页面执行、读写和oldProtect);
memcpy(缓冲区、myStr、长度);
虚拟保护(缓冲区、长度、oldProtect、nullptr);
注意:新字符串的长度必须小于或等于原始字符串的长度。是否有某些原因需要插入DLL而不是使用写入其内存?我不必插入,但它必须与其他插入函数位于同一DLL中。如果与字符串在同一页上可能有代码(某些编译器将只读常量放入代码段),使用PAGE_EXECUTE_READWRITE,以防另一个线程在修补字符串时执行代码。
变量“length”的值不能用作常量。
?