可以用的window api:
API Sets for Universal Windows Platform (UWP) apps
https://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/mt186421.aspx
Hololens develop documents
https://developer.microsoft.com/en-us/windows/holographic/documentation
三种方式轻松绕过Windows App Certification Kit (WACK)的API检测(UWP, C++)
转自:http://hjc.im/3-ways-to-bypass-wack/
项目示例与源码: https://github.com/hjc4869/WACKBypass
微软在UWP中提供了一组丰富的API能够满足99%的应用的需求
,然而在那剩下1%的情况下找不到桌面API的替代品是很棘手的,正如我上一篇文章里提到的CreateFile,就不属于微软在UWP中允许使用的API。
实际上WACK的API检测是个没什么用的东西,因为它是通过读取PE导入表,以及 .NET程序的P/Invoke签名的方法来判断一个App是否使用了不允许使用的API。因此只要调用LoadLibrary就能轻松绕过。
问题在于LoadLibrary(Ex)本身不被允许调用,微软表示替代品是LoadPackagedLibrary,而这个API在调用时会检测路径是否在appx内,如果不在就直接报错。(
太愚蠢了
)因此首先我们要设法获得LoadLibraryEx的地址,在此之前先获取kernel32.dll或kernelbase.dll的地址。
方法1:使用VirtualQuery获取
MEMORY_BASIC_INFORMATION info = {};
if (VirtualQuery(VirtualQuery, &info, sizeof(info)))
{
auto kernelAddr = (HMODULE)info.AllocationBase;
auto loadlibraryPtr = GetProcAddress(kernelAddr, "LoadLibraryExW");
// load your library here ...
}