assembly 十六进制机器码的逆向工程

rfbsl7qr  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(101)

我的作业是逆向工程。教师提供了一些目标文件(.o)和一个可执行文件。好像那些文件都是十六进制机器码。目标是编写将编译为此机器码的c代码。
代码如下所示(文件摘录):

7f45 4c46 0201 0100 0000 0000 0000 0000
0200 3e00 0100 0000 3004 4000 0000 0000
4000 0000 0000 0000 7819 0000 0000 0000
0000 0000 4000 3800 0900 4000 1f00 1e00
0600 0000 0500 0000 4000 0000 0000 0000
4000 4000 0000 0000 4000 4000 0000 0000
f801 0000 0000 0000 f801 0000 0000 0000
0800 0000 0000 0000 0300 0000 0400 0000
3802 0000 0000 0000 3802 4000 0000 0000
3802 4000 0000 0000 1c00 0000 0000 0000
1c00 0000 0000 0000 0100 0000 0000 0000
0100 0000 0500 0000 0000 0000 0000 0000
0000 4000 0000 0000 0000 4000 0000 0000
d407 0000 0000 0000 d407 0000 0000 0000
0000 2000 0000 0000 0100 0000 0600 0000
100e 0000 0000 0000 100e 6000 0000 0000
100e 6000 0000 0000 1c02 0000 0000 0000

字符串
我只学会了阅读和对汇编代码进行逆向工程。我该如何处理这些十六进制代码?(PS.我在一个windows笔记本电脑)有没有什么方法可以把它变成汇编代码?或者有没有什么方法可以运行它,这样我就可以看到输入和输出了?
非常感谢您的帮助!

uxhixvfz

uxhixvfz1#

您的文件看起来像Linux的可执行64位ELF。为了在Windows笔记本电脑上使用Linux工具,您可能需要首先安装模拟器WSL。然后在WSL控制台中使用readelf检查文件的格式:

$ readelf Vicky -aW --hex-dump=.text
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x400430
  Start of program headers:          64 (bytes into file)
  Start of section headers:          6520 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         9
  Size of section headers:           64 (bytes)
  Number of section headers:         31
  Section header string table index: 30
readelf: Error: Reading 1984 bytes extends past end of file for section headers
readelf: Error: Section headers are not available!
readelf: Error: Too many program headers - 0x9 - the file is not that big

字符串
它报告Error,因为提供的代码不完整。使用完整的任务文件尝试file Vicky,如果它说程序是ELF 64可执行文件,请使用objdump -drwC -Mintel Vicky反汇编它,正如@Peter Cordes所建议的那样。
你的家庭作业中更困难的部分将是理解反汇编指令的含义并制定一个等效的C代码。

相关问题