我有一个ELF文件,我想将其反编译成C代码,并对生成的C代码进行简单的更改,并将其重build为ELF。
反编译的C代码不需要完全可读。 例如,如果variables和函数名称混淆,那就没问题了。
我可以使用哪些工具在Linux上完成此操作?
PS:如果反编译C是不可能的或者不容易的,我愿意考虑将汇编语言反汇编,尽pipe调整汇编源代码对我来说是非常困难的。
Linux ELF文件:对于静态和dynamicELF程序,哪个字节会有所不同?
.so在linux下注入:如何查找dlopen()的地址?
在共享库中重定位条目
更新:您可能会认为我正在使用以下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; }
为什么LD_PRELOAD没有使用没有shebang的脚本?
在Linux上制作可移植的专有ELF二进制文件
如何将elf中的地址转换为物理地址
objdump --disassemble <elf file>
我之所以说,几乎是因为输出包含一些注释,如二进制文件位置标记,不能直接作为汇编程序的输入,但它是接近的。
你为处理器编写一个模拟器,然后通过模拟处理器运行精灵指令。 这通常不是太多的任务,因为即使是CISC处理器也有相对较小的包含指令集来执行简单的操作。
当你有这个工作,看看更有效的解决方案,如输出C代码来匹配指令。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。