[wip]分析黑雷模拟器

先上样本。跑的包里WeChat和WeChat_bak是同一份文件。我将其中一份头部修改为ARM64方便分析,下载链接在此:

https://www.jianguoyun.com/p/DfEoUoQQkezgBhjcnGc
https://www.jianguoyun.com/p/DbWuv4oQkezgBhjjnGc

Stage1

X64版拉入IDA解析为无效指令,推测为障眼法,实际运行时应该是用定制的loader作为ARM64加载,然而ida两种CPU都无法正常完整反编译。具体待研究

查看MachO的Load Commands, 找到一个可疑条目

手上无黑雷镜像,待提供后继续。

之前群里某位老铁说认识那边技术技术说是黑雷自己转的,目前看来并不是这样,二进制并不是AppStore版,也没有做静态翻译.
(静态翻译二进制的第一步是找到二进制里的所有代码,而这已经被祖师爷图灵在一百年前证实为NP完全问题)

之前去年暑假这玩意儿刚公布时我在群里讨论过这东西可能的实现方式:

Stage2

直接试图搜索libxosvm无果,目前试图提取文件。虚拟机镜像本身为魔改过的macOS10.12无法进入系统,下一步研究修复文件系统进macOS调试。

VMWare官方提供了vmdk解包工具,我没有Windows环境,等win同行们解压进行下一步。工具地址https://www.vmware.com/support/ws55/doc/ws_disk_manager_running.html

libxosvm.dylib (2.8 MB)
:kissing:几维的类vmprotect加壳

F5C8A33B422F89CC5A747B07B49A5368

BBFA3544773FCFAFB53FD1E0F64783D0

静态分析不太可能,如果有人有对抗虚拟化和macOS下符号执行反混淆的话当我没说。当然几维的控制流混淆还没有光强(小声BB)

Stage 3 (TODO:)

修复vmdk,使用修改过的内核从syscall层面进行监控。静态搜索特殊指令(VMWare预留了一系列类似于后门的指令用于跟宿主侧沟通,所谓的VMWare Tools基于这套机制)

2 个赞

mark观望。

mark学习下

来膜张总(prpr

膜,给张总续一秒

不知道我pay不pay膜张总

mark 膜

静态分析不太可能,如果有人有对抗虚拟化和macOS下符号执行反混淆的话当我没说。当然几维的控制流混淆还没有光强(小声BB)

没看明白这里说的是哪一块东西,libxosvm.dylib?另外libkvmrt.dylib能提供一份不

是的,你下下来看就知道了。强ollvm
libkvmrt.dylib是啥

1 个赞

那个libxosvm.dylib里链的一个库

; Imports from @rpath/libkvmrt.dylib
UNDEF:00000000002BD310 ;
UNDEF:00000000002BD310 ?? ?? ?? ?? ?? ?? ?? ?? extrn __imp__llvm_lifetime_end_p0i8:qword
UNDEF:00000000002BD310 ; DATA XREF: __got:__imp__llvm_lifetime_end_p0i8_ptr↑o
UNDEF:00000000002BD310 ; __la_symbol_ptr:_llvm_lifetime_end_p0i8_ptr↑o
UNDEF:00000000002BD318 ?? ?? ?? ?? ?? ?? ?? ?? extrn __imp__llvm_lifetime_start_p0i8:qword
UNDEF:00000000002BD318 ; DATA XREF: __got:__imp__llvm_lifetime_start_p0i8_ptr↑o
UNDEF:00000000002BD318 ; __la_symbol_ptr:_llvm_lifetime_start_p0i8_ptr↑o
UNDEF:00000000002BD320 ?? ?? ?? ?? ?? ?? ?? ?? extrn __imp__kiwisec_vm_interpreter:qword
UNDEF:00000000002BD320 ; DATA XREF: __la_symbol_ptr:_kiwisec_vm_interpreter_ptr↑o

他们自己搞的llvm混淆 intrinsics调用没删干净,lol
文件本身grep一下看看我这也是静态分析的

mark 膜

libxosvm.dylib中还加载了这么个玩意儿

WX20180806-135200