mirror of
https://github.com/HolographicHat/Yae.git
synced 2025-12-15 10:58:13 +08:00
lib update
This commit is contained in:
@@ -6,6 +6,7 @@
|
|||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<ApplicationManifest>res\app.manifest</ApplicationManifest>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -70,6 +70,9 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableUAC>false</EnableUAC>
|
<EnableUAC>false</EnableUAC>
|
||||||
</Link>
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>copy $(TargetPath) $(ProjectDir)..\bin\Debug\net6.0</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@@ -94,10 +97,14 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableUAC>false</EnableUAC>
|
<EnableUAC>false</EnableUAC>
|
||||||
</Link>
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>copy $(TargetPath) $(ProjectDir)..\bin\Debug\net6.0</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="src\framework.h" />
|
<ClInclude Include="src\framework.h" />
|
||||||
<ClInclude Include="src\pch.h" />
|
<ClInclude Include="src\pch.h" />
|
||||||
|
<ClInclude Include="src\util.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\dllmain.cpp" />
|
<ClCompile Include="src\dllmain.cpp" />
|
||||||
@@ -105,6 +112,7 @@
|
|||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\util.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|||||||
BIN
lib/lib/detours/detours-x64.lib
Normal file
BIN
lib/lib/detours/detours-x64.lib
Normal file
Binary file not shown.
1227
lib/lib/detours/detours.h
Normal file
1227
lib/lib/detours/detours.h
Normal file
File diff suppressed because it is too large
Load Diff
27
lib/lib/detours/detver.h
Normal file
27
lib/lib/detours/detver.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Common version parameters.
|
||||||
|
//
|
||||||
|
// Microsoft Research Detours Package, Version 4.0.1
|
||||||
|
//
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#define _USING_V110_SDK71_ 1
|
||||||
|
#include "winver.h"
|
||||||
|
#if 0
|
||||||
|
#include <windows.h>
|
||||||
|
#include <detours.h>
|
||||||
|
#else
|
||||||
|
#ifndef DETOURS_STRINGIFY
|
||||||
|
#define DETOURS_STRINGIFY_(x) #x
|
||||||
|
#define DETOURS_STRINGIFY(x) DETOURS_STRINGIFY_(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VER_FILEFLAGSMASK 0x3fL
|
||||||
|
#define VER_FILEFLAGS 0x0L
|
||||||
|
#define VER_FILEOS 0x00040004L
|
||||||
|
#define VER_FILETYPE 0x00000002L
|
||||||
|
#define VER_FILESUBTYPE 0x00000000L
|
||||||
|
#endif
|
||||||
|
#define VER_DETOURS_BITS DETOURS_STRINGIFY(DETOURS_BITS)
|
||||||
@@ -1,8 +1,43 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
|
void Run(HMODULE* phModule) {
|
||||||
switch (ul_reason_for_call) {
|
AllocConsole();
|
||||||
|
freopen_s((FILE**)stdout, "CONOUT$", "w", stdout);
|
||||||
|
HWND unityWnd = 0;
|
||||||
|
while (
|
||||||
|
GetModuleHandle("UserAssembly.dll") == nullptr ||
|
||||||
|
(unityWnd = FindMainWindowByPID(GetCurrentProcessId())) == 0
|
||||||
|
) {
|
||||||
|
printf("Wait game initialize...\n");
|
||||||
|
Sleep(1000);
|
||||||
|
}
|
||||||
|
MessageBox(unityWnd, "YaeAchievementLib injection test on 原神 Beta (CNCBWIN2.7.53)", "", MB_OK | MB_ICONERROR | MB_SYSTEMMODAL);
|
||||||
|
//init_il2cpp();
|
||||||
|
//HookManager::install(app::Unity_RecordUserData, OnRecordUserData);
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
//app::Application_RecordUserData(i, nullptr);
|
||||||
|
}
|
||||||
|
HANDLE hPipe = CreateFile(R"(\\.\pipe\genshin-checksum)", GENERIC_WRITE, 0, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||||
|
if (hPipe == INVALID_HANDLE_VALUE) {
|
||||||
|
printf("Failed to open pipe: %d\n", GetLastError());
|
||||||
|
ExitProcess(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ConnectNamedPipe(hPipe, nullptr);
|
||||||
|
DWORD written;
|
||||||
|
//WriteFile(hPipe, (checksum + "\n").c_str(), checksum.length() + 1, &written, nullptr);
|
||||||
|
DisconnectNamedPipe(hPipe);
|
||||||
|
CloseHandle(hPipe);
|
||||||
|
ExitProcess(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// DLL entry point
|
||||||
|
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ulReasonForCall, LPVOID lpReserved) {
|
||||||
|
switch (ulReasonForCall) {
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
|
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Run, new HMODULE(hModule), 0, NULL);
|
||||||
|
break;
|
||||||
case DLL_THREAD_ATTACH:
|
case DLL_THREAD_ATTACH:
|
||||||
case DLL_THREAD_DETACH:
|
case DLL_THREAD_DETACH:
|
||||||
case DLL_PROCESS_DETACH:
|
case DLL_PROCESS_DETACH:
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
#define PCH_H
|
#define PCH_H
|
||||||
|
|
||||||
// 添加要在此处预编译的标头
|
// 添加要在此处预编译的标头
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
#include "framework.h"
|
#include "framework.h"
|
||||||
|
|
||||||
#endif //PCH_H
|
#endif //PCH_H
|
||||||
|
|||||||
37
lib/src/util.cpp
Normal file
37
lib/src/util.cpp
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
#pragma region FindMainWindowByPID
|
||||||
|
|
||||||
|
struct HandleData {
|
||||||
|
DWORD pid;
|
||||||
|
HWND hwnd;
|
||||||
|
};
|
||||||
|
|
||||||
|
BOOL IsMainWindow(HWND handle) {
|
||||||
|
return GetWindow(handle, GW_OWNER) == (HWND)0 && IsWindowVisible(handle) == TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL IsUnityWindow(HWND handle) {
|
||||||
|
TCHAR name[256];
|
||||||
|
GetClassName(handle, name, 256);
|
||||||
|
return _strcmpi(name, "UnityWndClass") == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CALLBACK EnumWindowsCallback(HWND handle, LPARAM lParam) {
|
||||||
|
HandleData& data = *(HandleData*)lParam;
|
||||||
|
DWORD pid = 0;
|
||||||
|
GetWindowThreadProcessId(handle, &pid);
|
||||||
|
if (data.pid != pid || !IsMainWindow(handle) || !IsUnityWindow(handle))
|
||||||
|
return TRUE;
|
||||||
|
data.hwnd = handle;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
HWND FindMainWindowByPID(DWORD pid) {
|
||||||
|
HandleData data = { pid, 0 };
|
||||||
|
EnumWindows(EnumWindowsCallback, (LPARAM)&data);
|
||||||
|
return data.hwnd;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma endregion
|
||||||
3
lib/src/util.h
Normal file
3
lib/src/util.h
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
HWND FindMainWindowByPID(DWORD pid);
|
||||||
78
res/app.manifest
Normal file
78
res/app.manifest
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||||
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||||
|
<security>
|
||||||
|
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<!-- UAC 清单选项
|
||||||
|
如果想要更改 Windows 用户帐户控制级别,请使用
|
||||||
|
以下节点之一替换 requestedExecutionLevel 节点。
|
||||||
|
|
||||||
|
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||||
|
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||||
|
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||||
|
|
||||||
|
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
|
||||||
|
如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此
|
||||||
|
元素。
|
||||||
|
-->
|
||||||
|
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||||
|
</requestedPrivileges>
|
||||||
|
</security>
|
||||||
|
</trustInfo>
|
||||||
|
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
|
||||||
|
Windows 版本的列表。取消评论适当的元素,
|
||||||
|
Windows 将自动选择最兼容的环境。 -->
|
||||||
|
|
||||||
|
<!-- Windows Vista -->
|
||||||
|
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 7 -->
|
||||||
|
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 8 -->
|
||||||
|
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 8.1 -->
|
||||||
|
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 10 -->
|
||||||
|
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||||
|
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
|
||||||
|
<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
|
||||||
|
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
|
||||||
|
选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
|
||||||
|
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
|
||||||
|
|
||||||
|
将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
|
||||||
|
|
||||||
|
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<windowsSettings>
|
||||||
|
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||||
|
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||||
|
</windowsSettings>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
|
||||||
|
<!--
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity
|
||||||
|
type="win32"
|
||||||
|
name="Microsoft.Windows.Common-Controls"
|
||||||
|
version="6.0.0.0"
|
||||||
|
processorArchitecture="*"
|
||||||
|
publicKeyToken="6595b64144ccf1df"
|
||||||
|
language="*"
|
||||||
|
/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
|
||||||
|
</assembly>
|
||||||
Reference in New Issue
Block a user