gpt4 book ai didi

c - 编辑可执行文件代码时出现段错误

转载 作者:行者123 更新时间:2023-11-30 14:34:58 24 4
gpt4 key购买 nike

从事网络安全项目:

在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), sizeof(cbuffer), fp2);

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

return 0;
}

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

#include <stdio.h>

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

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

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

return 0;
}

错误:段错误(核心已转储)

最佳答案

无法打开当前以“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>

关于c - 编辑可执行文件代码时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58760284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com