我对IDA和Hex-rays反编译非常陌生。我的目标是从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打开伪代码窗口时,我收到一条无用的消息:
反编译失败:FFFFFFFF:16位不支持的功能
请参考手册以找到适当的操作
因此,我参考了该手册,该手册也无济于事:
消息文本说明了一切。虽然可以对反编译器本身进行很好的调整,以对16位代码进行反编译,但目前这并不是优先事项。将来可能
它将支持16位代码。
事实是这不是16位代码。我在做什么错?
PS如果我需要提供更多信息以帮助回答这个问题,请告诉我。我是IDA / Hex-ray的新手,我不确定这里还有什么用。
评论
链接到实际文件的副本会有所帮助(并且您是否已验证文件未损坏?)我可以运行该文件,这样它就不会损坏。我无权粘贴该文件的副本。如果您将我引向您要寻找的方向,我也许可以粘贴点点滴滴的信息。我主要是想了解为什么Hex-rays认为这是16位应用程序,而它显然是32位。
在“细分视图”(Shift + F7)中查看细分时,AD字段显示16还是32?
我发现一个应用程序可以完全做到这一点,每个函数(其中30000个)都是FFFFFFFF:不支持反编译16位函数似乎是混淆IDA的混淆器?
从反汇编中找出给定摘录的内容,例如受影响的函数或该段的开头,可能会容易得多。