10 Commits
Author SHA1 Message Date
tiennm99 fc1ba194d1 feat: cleanup 2026-02-27 16:50:21 +07:00
tiennm99 46c13d0533 Update global.json 2026-02-27 16:37:05 +07:00
tiennm99 06e195c5a2 Revert "Update release.yml"
This reverts commit d89ad156c8b68edf147bda50103867ae8c86df73.
2026-02-27 16:20:20 +07:00
tiennm99 9c71d84861 Update release.yml 2026-02-27 16:11:00 +07:00
tiennm99 a9a76fb541 Update InjectionManager.cs 2026-02-27 15:56:25 +07:00
tiennm99 add9912ddd Update release.yml 2026-02-27 15:35:08 +07:00
tiennm99 d394f6f589 Revert "feat: update actions"
This reverts commit ad9624f1d72b1c75b65a3c7876ef75d3171df874.
2026-02-27 15:29:26 +07:00
tiennm99 b2329b68c9 feat: update actions 2026-02-27 15:17:21 +07:00
tiennm99 0dc883eb6d Update release.yml 2026-02-27 14:49:15 +07:00
tiennm99 e94c4c70e6 Update release.yml 2026-02-27 14:04:56 +07:00
3 changed files with 10 additions and 58 deletions

No files matched your search

+5 -9
View File
@@ -3,7 +3,7 @@ name: Create Draft Release
on:
push:
tags:
- 'v*'
- "v*"
permissions:
contents: write
@@ -14,12 +14,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup .NET
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v5
with:
dotnet-version: 8.x
dotnet-version: 10.x
- name: Build Solution
run: dotnet build TimeMocker.sln -c Release -p:Platform=x64
@@ -27,11 +27,7 @@ jobs:
- name: Prepare Release Artifacts
run: |
mkdir release
copy TimeMocker.UI\bin\x64\Release\net48\TimeMocker.exe release\
copy TimeMocker.UI\bin\x64\Release\net48\TimeMocker.Hook.x64.dll release\
copy TimeMocker.UI\bin\x64\Release\net48\TimeMocker.Hook.x86.dll release\
copy TimeMocker.UI\bin\x64\Release\net48\EasyHook.dll release\
copy TimeMocker.UI\bin\x64\Release\net48\System.Text.Json.dll release\
copy TimeMocker.UI\bin\x64\Release\net48\* release\
- name: Zip Release
run: Compress-Archive -Path release\* -DestinationPath TimeMocker-x64.zip
+3 -47
View File
@@ -2,7 +2,6 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using EasyHook;
namespace TimeMocker.UI.Core
@@ -27,9 +26,6 @@ namespace TimeMocker.UI.Core
private static readonly string HookDllPathX86 =
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TimeMocker.Hook.x86.dll");
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool IsWow64Process(IntPtr hProcess, out bool wow64Process);
public event Action<string> LogMessage;
// -----------------------------------------------------------------------
@@ -53,19 +49,16 @@ namespace TimeMocker.UI.Core
// Write initial delta (zero = real time) before hook starts reading
entry.Shm.Write(new MockTimeInfo { DeltaTicks = 0 });
// Determine which DLL to use based on target process architecture
string hookDllPath = GetHookDllPath(process);
RemoteHooking.Inject(
process.Id,
InjectionOptions.DoNotRequireStrongName,
hookDllPath,
hookDllPath,
HookDllPathX86,
HookDllPathX64,
entry.Shm.MmfName);
entry.IsInjected = true;
_injected[process.Id] = entry;
Log($"Injected into [{process.Id}] {process.ProcessName} ({GetArchitectureName(process)})");
Log($"Injected into [{process.Id}] {process.ProcessName}");
}
catch (Exception ex)
{
@@ -77,43 +70,6 @@ namespace TimeMocker.UI.Core
return entry;
}
private static string GetHookDllPath(Process process)
{
bool is64BitTarget = Is64BitProcess(process);
if (is64BitTarget)
{
if (!File.Exists(HookDllPathX64))
throw new FileNotFoundException($"x64 hook DLL not found: {HookDllPathX64}");
return HookDllPathX64;
}
else
{
if (!File.Exists(HookDllPathX86))
throw new FileNotFoundException($"x86 hook DLL not found: {HookDllPathX86}");
return HookDllPathX86;
}
}
private static bool Is64BitProcess(Process process)
{
if (!Environment.Is64BitOperatingSystem)
return false;
bool isWow64;
if (!IsWow64Process(process.Handle, out isWow64))
return false;
// If IsWow64Process returns false, it's a 64-bit process
// If it returns true, it's a 32-bit process running on 64-bit Windows
return !isWow64;
}
private static string GetArchitectureName(Process process)
{
return Is64BitProcess(process) ? "x64" : "x86";
}
// -----------------------------------------------------------------------
// Update fake time for a process
// -----------------------------------------------------------------------
+2 -2
View File
@@ -1,7 +1,7 @@
{
"sdk": {
"version": "10.0.0",
"version": "10.0.100",
"rollForward": "latestMajor",
"allowPrerelease": true
}
}
}