将 dll 文件注入 UWP



我使UWP应用程序和桌面应用程序变得简单。此代码将 ConsoleApplication1.dll 文件注入桌面是正常的,但我无法注入到 UWP 应用。 我有两个问题: 为什么此代码无法注入到 UWP 应用? 以及如何解决它?

此代码注入一个 DLL 文件

#include "pch.h"
#include <vector>
#include <string>
#include <windows.h>
#include <Tlhelp32.h>
using std::vector;
using std::string;
int main(void)
{
while (true)
{
vector<string>processNames;
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
HANDLE hTool32 = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
BOOL bProcess = Process32First(hTool32, &pe32);
if (bProcess == TRUE)
{
while ((Process32Next(hTool32, &pe32)) == TRUE)
{
processNames.push_back(pe32.szExeFile);
if (strcmp(pe32.szExeFile, "ConsoleApplication4.exe") == 0 || strcmp(pe32.szExeFile, "UWP.exe") == 0)
{
printf("Hooked %s, %d n", pe32.szExeFile, pe32.th32ProcessID);
char* DirPath = new char[MAX_PATH];
char* FullPath = new char[MAX_PATH];
GetCurrentDirectory(MAX_PATH, DirPath);
sprintf_s(FullPath, MAX_PATH, "%s\..\ConsoleApplication1\ConsoleApplication1.dll", DirPath);
FILE *pFile;
if (fopen_s(&pFile, FullPath, "r") || !pFile)
{
OutputDebugString("[Hook] File name or file does not exist");
OutputDebugString(FullPath);
return -1;
}
fclose(pFile);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
LPVOID LoadLibraryAddr = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
LPVOID LLParam = (LPVOID)VirtualAllocEx(hProcess, NULL, strlen(FullPath), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
bool result = WriteProcessMemory(hProcess, LLParam, FullPath, strlen(FullPath), NULL);
CreateRemoteThread(hProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibraryAddr, LLParam, NULL, NULL);
CloseHandle(hProcess);
delete[] DirPath;
delete[] FullPath;
OutputDebugString("[Hook] Hooked success");
system("pause");
return 0;
}
}
}
CloseHandle(hTool32);
}
return 0;
}

谢谢

DLL 注入 UWP 应用与注入 Win32 程序没有什么不同;相同的技术和通用 DLL 注入器适用于 UWP 应用。但是,如果只是尝试将任何常规 DLL 注入到 UWP 应用中,则 DLL 可能不会加载。这是因为"所有应用程序包"组必须对注入的 DLL 具有读取和执行权限。

要手动设置这些权限:右键单击DLL,进入属性,转到安全选项卡,点击编辑,单击添加,在弹出的对话框中键入"ALL",然后点击确定。在英语系统上,这会将所有应用程序包添加到默认情况下启用读取/执行的权限列表中;对于非英语系统,该组将被命名为不同的名称。

https://www.unknowncheats.me/forum/general-programming-and-reversing/177183-basic-intermediate-techniques-uwp-app-modding.html

谢谢

这是针对 UWP 进程设计的。UWP 应用容器不允许动态加载不属于部署包的代码。

最新更新