我想创建一个程序来分析rend
文件的命令,并对内容做出一些决定。问题在于:我从程序文件夹(也使用C)中的C项目复制了.exe
。我将其扩展名从.exe
更改为.exe
并创建了此代码:
.txt
我的问题是这个程序也显示了“奇怪的”字符。该程序的作用是只获取可读部分。为什么会这样?
答案 0 :(得分:1)
我将其扩展名从.exe更改为.txt
这不会使实际文本。编译的可执行文件是二进制文件。 可能它们巧合地在英文字母的ASCII范围内包含一些可读字符,具体取决于您用来读取它们的编码。但那只是巧合。
只能通过重命名文件,无法将应用程序反编译为原始代码。
答案 1 :(得分:0)
如果这是一个Linux / Unix系统,很可能会有一个手册页来解释可执行文件的布局。例如:
man elf
您的系统可能还有一些工具可以对可执行文件进行基本分析,您可能会发现这些工具很有启发性:
man objdump
man readelf
也可能有一个C包含文件,可能#include <elf.h>
可能有助于编写您的程序。但要注意,你已经开始了一项艰巨的任务。如果可执行文件已被删除其符号,则更是如此。
以下是使用objdump进行反汇编的示例:
# objdump -d moai.2014.10.07
moai.2014.10.07: file format elf64-x86-64
Disassembly of section .init:
0000000000400e48 <_init>:
400e48: 48 83 ec 08 sub $0x8,%rsp
400e4c: e8 4b 03 00 00 callq 40119c <call_gmon_start>
400e51: e8 da 03 00 00 callq 401230 <frame_dummy>
400e56: e8 55 51 00 00 callq 405fb0 <__do_global_ctors_aux>
400e5b: 48 83 c4 08 add $0x8,%rsp
400e5f: c3 retq
...