编码/补丁变量在其他.exe
Encoding/patching variable in other .exe
我不知道该怎么做:
我们有一个文件,命名为test。exe,
它有const int value = 5;在它里面,它所做的一切就是计数<<价值;
我想创建其他可执行文件,修补test.exe,所以它现在输出10而不是5。我希望在运行前完成。
我试过关闭ASLR,获得该变量的地址,然后修补,但磁盘和内存中的地址不同。
对不起,这句话假设你在Windows系统上工作。如果没有,我相信对于其他可执行的图像格式,您可以遵循类似的方法。
假设您试图询问如何更改目标中的数据,而不是如何更改屏幕输出,在这个特定的示例中…
你考虑过查看可执行映像的PE头吗?一旦加载到内存中,你可以将特定数据块的地址转换为PE文件中的偏移量,但请查看相关图像的PE Header中的IMAGE_SECTION_HEADER结构。
首先,计算内存中数据的RVA。这是数据相对于它所在的部分的地址。
第二,通过将可执行文件的头读入缓冲区,在可执行文件的PE头内部的IMAGE_SECTION_HEADER结构中进行索引。一旦将这个头文件加载到内存缓冲区中,就可以使用指针对其进行处理。一样,
IMAGE_NT_HEADERS* pImageHeader = &peHeaderBuffer[0];
找到包含你的数据的正确的IMAGE_SECTION_HEADER后,你可以访问结构的PointerToRawData成员,它将给你从PE文件开始的偏移量,如果你添加RVA,你将得到从你的数据所在的文件开始的偏移量。
显然,我的回答没有解释如何通过section头索引,因为这是一个相当乏味的任务,需要一段时间来解释。我建议您从简单的调试器(如OllyDbg)中查看可执行文件的PE头文件,并参考MSDN关于PE头文件的文档-可以在这里找到:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms680336%28v=VS.85%29.aspx如果您想要做的只是将此信息从目标中反转过来,那么使用OllyDbg非常容易。只需浏览PE Header视图,直到看到与数据对应的部分,OllyDbg将在那里列出PointerToRawData成员,您可以将其添加到RVA中。
通过签名查找:在值5周围获得8-16字节,然后在.exe二进制文件中搜索它们。
还要注意const int值通常内联到汇编代码中,所以如果你有2个或更多的语句引用它,你必须修补它们。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 终端不会为C++文件创建.exe文件吗
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 缓冲区溢出到其他 exe 的内存中?还是从远程桌面程序到 csrss.exe?
- 使用 mfc 的 EXE(调试)不能在其他 PC 上运行
- 如何将opencv和其他dll文件链接到visual studio 2013的输出exe
- 如何使Visual Studio 2013生成的.exe在其他计算机上运行
- 我的版本.exe无法在其他电脑上运行
- 在Windows 7和8下,其他应用程序无法启动openfiles.exe
- 在其他计算机 MVCP100d 中打开 EXE 需要什么文件
- 错误LNK2019:由其他类组成的主类使用带有多个头和源的DLL的EXE
- 编码/补丁变量在其他.exe
- 如何使用CryptoAPI和SignerSign签名带有其他证书的EXE
- 我如何使exe可以在没有其他安装的windows上运行
- 在其他机器上运行请求管理员权限的EXE文件
- 有没有其他方法可以从 Java 运行.exe