warbird obfuscator
1.0.0
MSVC编译器中的Warbird Obfuscation的简要概述
Warbird是微软在其DRM技术中使用的混淆框架。它支持多种形式的混淆,包括代码包装和虚拟机器混淆。它用于保护关键组件,例如PatchGuard和varressers的许可信息。
当使用SystemControlFlowTransition (185)信息类提供时,Warbird功能还通过NtQuerySystemInformation System Call暴露。它派遣到WbDispatchOperation ,在该功能上支持并在堆上执行签名的Feistel Cipher有效载荷。有关它的更多信息,请参见Alex Ionescu的演讲。其他研究为保护客户许可和代码完整性图像提供了洞察力。
鉴于微软的普遍用法,应该很好奇,以调查是否在MSVC编译器中发现任何参考。字符串引用可以在后端编译器( c2.dll )和Linker( link.exe )图像中发现。
在ProcessLinkerSwitches中,内部使用了几个与Warbird相关的链接标志:
/wbrdcfg/wbrddll/wbrdlog/wbrdreporterrors/wbrdschema/wbrdsummary/wbrdtestencrypt如果在可执行文件的构建过程中提供了配置和DLL WARBIRD链接器标志,则将称为Warbird::CWarbirdServer::CreateObfuscator2 。该例程将加载标志提供的DLL,并调用带有链接标志参数,计算机类型和obfuscator base的名为CreateObfuscator2的导出函数。
其他Warbird函数名称显示,存在类似于前面提到的代码转换。
void __fastcall Enclave::CObfuscationEnclave::Initialize (Enclave::CObfuscationEnclave * this )
{
if ( ( int ) Enclave::CEnclave::AddRuntimeSymbol ((__int64) this , (__int64) " NtQuerySystemInformation " , 0 , 2 ) >= 0
&& ( int ) Enclave::CEnclave::AddRuntimeSymbol ((__int64) this , (__int64) " WarbirdRuntime::EnclaveWrapper " , 1 , 1 ) >= 0 )
{
Enclave::CEnclave::AddRuntimeSymbol ((__int64) this , (__int64) " WarbirdRuntime::g_ulSubSystemCallID " , 2 , 3 );
}
}cl / Zi .examplemain.cpp / link / wbrddll:warbird - obfuscate.dll / wbrdcfg:wbrd.cfgcl.exe: aa9374078fcdce84bca034fd1bb395fdd3825614656e898017435ced17ff1061link.exe: 849e7bd1f234957b5e9be65f94a864e45ea4e05fea598b2164523b398603f61514.28.29336.0