Untitled

Untitled

die先瞅一下,发现是裸奔exe,应该是白加黑,直接丢ida看。

Untitled

这里原文件做了一个虚拟机检测,这里的1最开始是0x7ff,我直接patch改为1这样就能丢虚拟机里运行了,sub_401650是一个多字节异或,void(*)此处是指针执行v3,v3就是我们需要定位的shellcode,虚拟机里动态调试拉取v3出来。

Untitled

Untitled

Untitled

或者自己根据偏移从pe文件里的拉出来自己重新写一个多字节异或还原shellcode。

Untitled

对memcpy下断点,定位到内存rdx处,然后从内存展开的内存布局里dump出.data段,算出对应偏移进行截取(即r8,1b3ce9的大小,相对偏移则是403040-4000为40),即可拿到第一次执行的shellcode。

Untitled

Untitled

丢入die里发现他运用的是文件捆绑的思路,释放了三个pe文件,那么先提取出来。这里因为文件有签名,所以直接根据给的偏移提容易出现问题,所以采用dos文件头MZ做分割线分离出三个文件。

Untitled

其中一个文件提取出来后类型为驱动,所以修改后缀为sys,三个文件如下。

Untitled

大致可以根据图标判断,这里应该是用wegame的虚拟化冲突来关掉核晶,应该是tgp_dameon那个exe,3.exe应该也是有签名的所以这里提取出来的exe可能签名被破坏掉了,但是都不重要,直接看1.exe逻辑。

Untitled

先通读exe的main逻辑,发现确实是释放了tgp_dameon,这里我们要想拿到原来无损的白文件exe也可以执行后拿他释放的exe就行了,没必要自己去看pe文件进行修复。