因为是动态库劫持,用来激活Windows的,未见恶意行为
以下为分析过程:
入口点(DllEntryPoint):
[Asm] 纯文本查看 复制代码 .text:0000000231921113 ; BOOL __stdcall DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
.text:0000000231921113 public DllEntryPoint
.text:0000000231921113 DllEntryPoint proc near ; DATA XREF: .pdata:000000023192300C↓o
.text:0000000231921113 ; .pdata:0000000231923018↓o
.text:0000000231921113 mov eax, 1
.text:0000000231921118 retn
.text:0000000231921118 DllEntryPoint endp
直接返回1了,什么也没做;
导出表大多数都是转发到原动态库了,重点函数为:SLGetLicensingStatusInformation(获取许可状态信息)
[C++] 纯文本查看 复制代码 HRESULT __stdcall SLGetLicensingStatusInformation(
HSLC hSLC,
const SLID *pAppID,
const SLID *pProductSkuId,
PCWSTR pwszRightName,
UINT *pnStatusCount,
SL_LICENSING_STATUS **ppLicensingStatus)
{
__int64 v6; // rsi
HRESULT v8; // r12d
SL_LICENSING_STATUS *v9; // rbx
v6 = 0;
v8 = SLGetLicensingStatusInformation_0(hSLC, pAppID, pProductSkuId, pwszRightName, pnStatusCount, ppLicensingStatus);
if ( v8 == 0 )
{
while ( *pnStatusCount > (unsigned int)v6 )
{
if ( (*ppLicensingStatus)[v6].eStatus != SL_LICENSING_STATUS_UNLICENSED
&& (unsigned int)sub_231921000(a1: hSLC) == 0 )
{
v9 = &(*ppLicensingStatus)[v6];
*(_QWORD *)&v9->eStatus = 1;
*(_QWORD *)&v9->dwTotalGraceDays = 0;
v9->qwValidityExpiration = 0;
}
++v6;
}
}
return v8;
}
sub_231921000 这个函数是获取产品 SKU 信息的,也是调用的原动态库
[C++] 纯文本查看 复制代码 __int64 __fastcall sub_231921000(void *a1, const SLID *a2)
{
unsigned int v2; // r12d
UINT cchMax; // [rsp+34h] [rbp-24h] BYREF
PBYTE ppbValue; // [rsp+38h] [rbp-20h] BYREF
cchMax = 0;
ppbValue = nullptr;
v2 = SLGetProductSkuInformation(
hSLC: a1,
pProductSkuId: a2,
pwszValueName: L"Name",
peDataType: nullptr,
pcbValue: &cchMax,
&ppbValue);
if ( v2 != 0 )
{
LocalFree(hMem: ppbValue);
return 0;
}
else if ( StrStrNIW(pszFirst: (PCWSTR)ppbValue, pszSrch: "G", cchMax) != nullptr )
{
LocalFree(hMem: ppbValue);
return 1;
}
else
{
LocalFree(hMem: ppbValue);
}
return v2;
} |