Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DLL注入替换已知偏移量C++; 简单的问题,我不是很好用C++或Windows API,但我设法写一个DLL注入。基本上,我有一个已知的内存偏移量的一行,我想取代_C++_Assembly_Dll_Inject - Fatal编程技术网

DLL注入替换已知偏移量C++; 简单的问题,我不是很好用C++或Windows API,但我设法写一个DLL注入。基本上,我有一个已知的内存偏移量的一行,我想取代

DLL注入替换已知偏移量C++; 简单的问题,我不是很好用C++或Windows API,但我设法写一个DLL注入。基本上,我有一个已知的内存偏移量的一行,我想取代,c++,assembly,dll,inject,C++,Assembly,Dll,Inject,国际开发协会: .文本:0051CA30推送16D8h 从REC反编译: _推(5848) 5848或16D8h只不过是从文件中读取的值。我所要做的就是钩住偏移量并打印我自己的文本。这应该是非常简单的,但我无法为我的生活,我尝试的一切只是不断崩溃的程序。不幸的是,替换文件中的文本不是一个选项,因为它很容易被替换并用于作弊 我对刚才提到的所有函数替换都使用了迂回的方法,以备不时之需。如果要替换目标进程中的字符串,可以在注入的DLL中使用以下代码段 char* buffer = reinterpre

国际开发协会: .文本: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);
char*buffer=reinterpret\u cast(base+0x16D8);
长度=strlen(缓冲区)+1;
char myStr[length]=“…”;
德沃德·奥尔德普雷特;
VirtualProtect(缓冲区、长度、页面执行、读写和oldProtect);
memcpy(缓冲区、myStr、长度);
虚拟保护(缓冲区、长度、oldProtect、nullptr);

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

是否有某些原因需要插入DLL而不是使用写入其内存?我不必插入,但它必须与其他插入函数位于同一DLL中。如果与字符串在同一页上可能有代码(某些编译器将只读常量放入代码段),使用PAGE_EXECUTE_READWRITE,以防另一个线程在修补字符串时执行代码。
变量“length”的值不能用作常量。