【问题标题】:How to disambiguate instructions from data in the .text segment of a PE file?如何从 PE 文件的 .text 段中的数据中消除指令的歧义?
【发布时间】:2013-09-28 15:13:50
【问题描述】:

我有一个 PE 文件,我尝试反汇编它以获得它的说明。但是我注意到.text 段不仅包含指令,还包含一些数据(我使用 IDA 注意到了这一点)。示例如下:

.text:004037E4                 jmp     ds:__CxxFrameHandler3
.text:004037EA ; [00000006 BYTES: COLLAPSED FUNCTION _CxxThrowException. PRESS KEYPAD "+" TO EXPAND]
.text:004037F0 ;             
.text:004037F0                 mov     ecx, [ebp-10h]
.text:004037F3                 jmp     ds:??1exception@std@@UAE@XZ ; std::exception::~exception(void)
.text:004037F3 ; 
.text:004037F9 byte_4037F9     db 8Bh, 54h, 24h        ; DATA XREF: sub_401440+2o
.text:004037FC                 dd 0F4428D08h, 33F04A8Bh, 0F6B2E8C8h, 0C4B8FFFFh, 0E9004047h
.text:004037FC                 dd 0FFFFFFD0h, 3 dup(0CCCCCCCCh), 0E904458Bh, 0FFFFD9B8h
.text:00403828 dword_403828    dd 824548Bh, 8BFC428Dh, 0C833F84Ah, 0FFF683E8h, 47F0B8FFh
.text:00403828                                         ; DATA XREF: sub_4010D0+2o
.text:00403828                                         ; .text:00401162o
.text:00403828                 dd 0A1E90040h, 0CCFFFFFFh, 3 dup(0CCCCCCCCh), 50E0458Dh
.text:00403828                 dd 0FFD907E8h, 458DC3FFh, 0D97EE9E0h
.text:00403860                 db 2 dup(0FFh)
.text:00403862 word_403862     dw 548Bh

如何将此类数据与指令区分开来?我对这个问题的解决方案是简单地找到第一条指令(输入地址)并访问每条指令和所有被调用的函数。不幸的是,有一些代码块没有被直接调用,但它们的地址在一些数据中的.rdata段中,我不知道有效指令地址与数据有多么不同。

总结一下:有没有办法判断.text段中的某个地址是否包含数据或指令?或者有什么办法可以决定.rdata中的哪些潜在地址应该被解释为指令地址,哪些是数据?

【问题讨论】:

    标签: windows assembly disassembly portable-executable ida


    【解决方案1】:

    一般来说,你不能。 PE 文件的 .text 部分可以以任何作者喜欢的方式混合代码和常量。像 IDA 这样的程序试图通过从入口点开始然后反汇编来理解这一点,并查看哪些地址是跳转的目标,哪些是读取的目标。但是狡猾的程序可以在指令和数据之间“双关”。

    【讨论】:

    • 所以我可以确定正确反汇编的唯一指令是那些可以从入口点访问的指令?
    • @AdamSznajder:您可以确定的唯一指令是那些在程序的特定运行中实际上由 CPU 执行的指令。对于其他一切,您必须做出假设。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2015-06-26
    • 1970-01-01
    相关资源
    最近更新 更多