微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将ELF可执行文件转换为C代码? 生成的C代码不需要是人类可读的

我有一个ELF文件,我想将其反编译成C代码,并对生成的C代码进行简单的更改,并将其重build为ELF。

反编译的C代码不需要完全可读。 例如,如果variables和函数名称混淆,那就没问题了。

我可以使用哪些工具在Linux上完成此操作?

PS:如果反编译C是不可能的或者不容易的,我愿意考虑将汇编语言反汇编,尽pipe调整汇编源代码对我来说是非常困难的。

Linux ELF文件:对于静态和dynamicELF程序,哪个字节会有所不同?

在可执行二进制文件中更改一个特定的共享库

.so在linux下注入:如何查找dlopen()的地址?

简单的方法来重新sortingELF文件部分

在共享库中重定位条目

更新:您可能会认为我正在使用以下C程序来获取我的a.out ELF。 现在,进一步假设我已经失去了这个原始的C源代码。 所以,现在我想反编译它(可能是混淆的) C源代码,我至less能够改变诸如string"world" , "Hello"和"Bye"类的小事物,或者能够颠倒if语句的意义等

#include <stdio.h> #include <string.h> char buf[256]; const char *Hello = "Hello"; const char *Bye = "Bye"; const char *Who = "world"; char * greet(const char *greeting,const char *str) { strcpy(buf,greeting); strcat(buf,","); strcat(buf,str); strcat(buf,"!"); return buf; } int main(int argc,char *argv[]) { int sayHello = 0; if(sayHello) { printf("%sn",greet(Hello,Who)); } else { printf("%sn",greet(Bye,Who)); } return 0; }

在C中加载用户间的ELF文件

如何重新映射一个符号来调用不同的函数

为什么LD_PRELOAD没有使用没有shebang的脚本?

在Linux上制作可移植的专有ELF二进制文件

如何将elf中的地址转换为物理地址

这将给你(几乎)一个汇编代码翻译:

objdump --disassemble <elf file>

我之所以说,几乎是因为输出包含一些注释,如二进制文件位置标记,不能直接作为汇编程序的输入,但它是接近的。

你为处理器编写一个模拟器,然后通过模拟处理器运行精灵指令。 这通常不是太多的任务,因为即使是CISC处理器也有相对较小的包含指令集来执行简单的操作。

当你有这个工作,看看更有效的解决方案,如输出C代码来匹配指令。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐