编辑可执行文件代码

从事网络安全项目:

在c中编辑.exe文件的代码时,可以编辑其他exe文件的代码,但不能编辑exe文件本身。这会导致分段错误。

反正有解决这个问题的方法吗?

产生细分错误的代码:

sandbox.c

#include <stdio.h>

int main(){
FILE *fp2 = fopen("sandbox","r+");
char cbuffer [100000];
int exe_len = fread(cbuffer,1,sizeof(cbuffer),fp2);

fwrite (cbuffer,sizeof(char),fp2);

static char a[10000] = "hello goodbye";
printf("%s\n",a );

return 0;
}

没有错误的代码,也是sandbox.c:

#include <stdio.h>

int main(){
FILE *fp2 = fopen("readme",a );

return 0;
}

Error: Segmentation fault (core dumped)

youyou_1125 回答:编辑可执行文件代码

无法打开当前以“ r +”模式运行的exe文件。这就是为什么在打开另一个不同名称的文件时会产生段错误的原因。而是执行以下工作:

使用其他名称保存文件,然后使用mv更新名称,并使用chmod创建可执行文件:

FILE *fp3 = fopen("x.x","w+");
fwrite (ebuffer,sizeof(char),sizeof(ebuffer),fp3);
fclose(fp3);
system("mv x.x readme; chmod +x readme");

这最终解决了。这需要#include <stdlib.h>

本文链接:https://www.f2er.com/3140333.html

大家都在问