OSX 恶意软件中的 FEEDFACE

逆向工程 恶意软件 操作系统
2021-06-15 08:12:34

为了好玩,我对“危机”中的一段代码进行了逆向工程,我遇到了以下情况:-

__INIT_STUB_hidden:00004B8F                 mov     eax, 8FE00000h
__INIT_STUB_hidden:00004B94
__INIT_STUB_hidden:00004B94 loc_4B94:                               
__INIT_STUB_hidden:00004B94                 mov     ebx, 41424344h
__INIT_STUB_hidden:00004B99                 cmp     dword ptr [eax], 0FEEDFACEh
__INIT_STUB_hidden:00004B9F                 jz      short loc_4BB9
__INIT_STUB_hidden:00004BA1                 add     eax, 1000h
__INIT_STUB_hidden:00004BA6                 cmp     eax, 8FFF1000h
__INIT_STUB_hidden:00004BAB                 jnz     short loc_4B94

这里应该发生什么?为什么FEEDFACE在地址8FFF00008FFF1000? 我知道feedface/feedfacf是 Mach-O 幻数——但是为什么它们会出现在这些地址上?

2个回答

这是 Mach-O 标头魔术。来自mach-o/loader.h

/* Constant for the magic field of the mach_header (32-bit architectures) */
#define MH_MAGIC        0xfeedface      /* the mach magic number */
#define MH_CIGAM        0xcefaedfe      /* NXSwapInt(MH_MAGIC) */

在 OS X 中,Mach-O 标头通常作为__TEXT段的一部分包含在内,因此它被映射到内存中。该代码正在搜索映射到该地址范围内某处的 Mach-O 文件 - 可能是某个系统库 - 可能因此它可以搜索需要调用的函数(枚举 Mach-O 加载命令以定位符号表等)。

Crisis 试图在该段代码中定位 dyld 位置:32 位 dyld 通常位于 8FE00000 - 如果我没记错的话,它使用它来解决符号。

如果您还没有,请查看我的危机分析