本帖最后由 0xLuna 于 2026-3-24 11:39 编辑
研究仅供学习交流目的,请勿用于任何违法用途
基本分析
ida打开XXX-Win64-Shipping.exe,先通过ida的字符串查找拿到Gname
猜测 RVA : 8BC1A40 就是FNamePool,不确定,打开ce看一下。符合FNamePool的特征结构
随便转到一个Blocks元素,显然是加密了,正常情况下这里Name是None
猜测可能会在注册这里做加密操作,sub_3248EF0
跟进这个函数去分析,此处调用了一个非常可疑的函数 qword_8613B48(v29, v31);
1432401B0 - 140000000(ImageBase)得到该函数的RVA: 32401B0
最终来到了加密解密函数,直接说结论:byte_8BC181C是一个性能计数器值,但是被加密了, 当作它是异或密钥
对着汇编解密就行
代码实现
void ConvertCryptData(PBYTE pbBuffer, UINT uLen, UINT8 bCryptKey)
{
if (uLen)
{
int i = uLen;
do
{
UINT8 bStepOne = ((bCryptKey >> 1) & 8) | bCryptKey;
UINT8 bStepTwo = ((bStepOne & 8) + (bStepOne & 8)) ^ bStepOne;
UINT8 bStepThree = ((bStepTwo & 0x10) | 0xE) >> 1 ^ bStepTwo;
pbBuffer[i - 1] ^= bStepThree;
--i;
} while (i);
}
}
|