WindowApp开发调用native c++

时间:2022-09-01 12:17:33

可以用的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 ...
}