获取程序背后的代码

时间:2016-01-06 13:32:07

标签: c readfile

我想创建一个程序来分析rend文件的命令,并对内容做出一些决定。问题在于:我从程序文件夹(也使用C)中的C项目复制了.exe。我将其扩展名从.exe更改为.exe并创建了此代码:

.txt

我的问题是这个程序也显示了“奇怪的”字符。该程序的作用是只获取可读部分。为什么会这样?

2 个答案:

答案 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  
     ...