这真的是 IDA 无法解码的功能吗?

逆向工程 艾达
2021-06-13 07:41:41

我有以下 IDA 输出:

BEGTEXT:00415A2C read_dpc_sub_415928 endp
BEGTEXT:00415A2C
BEGTEXT:00415A2C ; ---------------------------------------------------------------------------
BEGTEXT:00415A2D                 align 10h
BEGTEXT:00415A30                 push    ebx
BEGTEXT:00415A31                 push    edx
BEGTEXT:00415A32                 mov     edx, eax
BEGTEXT:00415A34                 call    sub_41576C
BEGTEXT:00415A39                 mov     ebx, eax
BEGTEXT:00415A3B                 call    sub_415758
BEGTEXT:00415A40                 mov     eax, ebx
BEGTEXT:00415A42                 call    sub_4158C8
BEGTEXT:00415A47                 mov     eax, ebx
BEGTEXT:00415A49                 pop     edx
BEGTEXT:00415A4A                 pop     ebx
BEGTEXT:00415A4B                 retn
BEGTEXT:00415A4B ; ---------------------------------------------------------------------------

如您所见,IDA 认为这是一个代码块,但尚未将其设为函数。

你能解释一下应该如何处理这种情况吗?

即这到底是不是真正的代码,以及在制作函数时要考虑什么。

(如果这很重要,可执行文件是 32 位 Windows 的)

1个回答

您可以通过将光标置于反汇编视图中的地址 00415A2C 并按 来使其成为功能P如果这不起作用,您可以选择整个功能,然后再次按P有关此操作的文档位于此处如果所有这些都不起作用,请align 10h取消定义,按U生成的字节代码并重C试。

没有自动创建这个函数的原因有很多,包括但不限于:

  • 这个函数不是直接调用的
  • 这个函数根本没有被调用
  • IDA 自动分析无法找到将此函数作为函数的引用