我本质上想要做的是让另一个程序将数据写入这个“空白空间”,以便可执行文件在
我想过在应用程序上附加一个签名,然后写入数据,稍后搜索它,但这听起来不太对......
现在,其他重要的事情......我知道应该可以通过使用如下代码来创建代码洞穴:
void function(void) {
__asm {
nop
nop
nop
nop
};
}
然后,即使这实际上是相同的(除了它将在 .data 部分中,因此不可执行):
const char data[3];
问题是其他应用程序没有明确的地址可以写入。
最佳答案
至少对于 PE 和 ELF,您可以将数据附加到可执行文件的末尾,而根本不会影响程序。
标准方法是将您的数据附加到可执行文件,然后附加一个数字以指示已附加了多少字节。可执行文件然后打开自身进行读取,查看表示数据长度的最后 N 个字节,然后seek
s backwards by the value, to the beginning of the appended data.
This article详细介绍了如何使用上述方法制作自解压可执行文件。这与您想要的有点不同,但读取可执行文件中包含的数据的原理保持不变。
关于linux - 如何在确定地址(gcc,linux)的可执行文件中创建 "empty"空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1505132/