为什么Hex-rays认为32bit PE是16bit?

逆向工程 艾达 反编译
2021-07-08 06:09:54

我正在使用 IDA 6.1 32 位版本。

我对 IDA 和 Hex 射线反编译很陌生。我的目标是从 32 位 PE 可执行文件生成一些 C 源代码。我知道这个文件是 32 位 PE 可执行文件。我在十六进制编辑器中查看了标头结构,并确认它具有 PE​​ 标头段。当我在 IDA Pro 中反汇编该文件时,它识别出它是一个 x86 PE 可执行文件。

此外,IDA 在分析头段后产生以下输出:

; Format      : Portable executable for 80386 (PE)
; Imagebase   : 400000
; Section 1. (virtual address 00001000)
; Virtual size                  : 011DAC9D (18721949.)
; Section size in file          : 011DB000 (18722816.)
; Offset to raw data for section: 00001000
; Flags 60000020: Text Executable Readable
; Alignment     : default
; OS type         :  MS Windows
; Application type:  Executable 32bit

但是,当我选择一个函数并尝试F5打开 Pseudocode 窗口时,我收到了一条无用的消息:

反编译失败:FFFFFFFF:不支持16位函数

请参阅手册以找到适当的操作

所以,我参考了手册,这也无济于事:

消息文本说明了一切。虽然反编译器本身可以微调以反编译 16 位代码,但目前这不是优先事项。可能在未来它会支持 16 位代码。

问题是这不是 16 位代码。我究竟做错了什么?


PS如果我需要提供更多信息来帮助回答这个问题,请告诉我。我对 IDA/Hex 射线很陌生,我不确定这里还有什么有用的。

0个回答
没有发现任何回复~