v124.6.10 works now

This commit is contained in:
Mikhail
2024-08-21 21:13:41 -04:00
parent d09b887879
commit 107e6b2eed
3 changed files with 18015 additions and 5021 deletions

View File

@@ -0,0 +1,22 @@
using EpinelPS.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EpinelPS.LobbyServer.Msgs.Misc
{
[PacketPath("/lobby/retroactive")]
public class LobbyRetroactive : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqRetroactive>();
var user = GetUser();
var response = new ResRetroactive();
await WriteDataAsync(response);
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -16,6 +16,7 @@ namespace ServerSelector
{ {
string sodiumLib = AppDomain.CurrentDomain.BaseDirectory + "sodium.dll"; string sodiumLib = AppDomain.CurrentDomain.BaseDirectory + "sodium.dll";
string gameSodium = gamePath + "/nikke_Data/Plugins/x86_64/sodium.dll"; string gameSodium = gamePath + "/nikke_Data/Plugins/x86_64/sodium.dll";
string gameAssembly = gamePath + "/GameAssembly.dll";
string sodiumBackup = gameSodium + ".bak"; string sodiumBackup = gameSodium + ".bak";
string hostsFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts"); string hostsFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts");
var CAcert = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "myCA.pem"); var CAcert = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "myCA.pem");
@@ -70,6 +71,37 @@ namespace ServerSelector
} }
File.Copy(sodiumBackup, gameSodium, true); File.Copy(sodiumBackup, gameSodium, true);
// revert gameassembly changes
var gameAssemblyBytes = File.ReadAllBytes(gameAssembly);
for (int i = 0x5877FFB; i < gameAssemblyBytes.Length; i++)
{
if (gameAssemblyBytes[i] == 0xE8 &&
gameAssemblyBytes[i + 1] == 0xF0 &&
gameAssemblyBytes[i + 2] == 0x9D &&
gameAssemblyBytes[i + 3] == 0x43 &&
gameAssemblyBytes[i + 4] == 0xFB)
{
// was not patched
break;
}
if (gameAssemblyBytes[i] == 0xb0 &&
gameAssemblyBytes[i + 1] == 1 &&
gameAssemblyBytes[i + 2] == 0x90 &&
gameAssemblyBytes[i + 3] == 0x90 &&
gameAssemblyBytes[i + 4] == 0x90)
{
gameAssemblyBytes[i] = 0xE8;
gameAssemblyBytes[i + 1] = 0xF0;
gameAssemblyBytes[i + 2] = 0x9D;
gameAssemblyBytes[i + 3] = 0x43;
gameAssemblyBytes[i + 4] = 0xFB;
File.WriteAllBytes(gameAssembly, gameAssemblyBytes);
break;
}
}
var certList1 = File.ReadAllText(launcherCertList); var certList1 = File.ReadAllText(launcherCertList);
File.WriteAllText(launcherCertList, certList1.Substring(0, certList1.IndexOf("Good SSL Ca"))); File.WriteAllText(launcherCertList, certList1.Substring(0, certList1.IndexOf("Good SSL Ca")));
@@ -129,6 +161,38 @@ namespace ServerSelector
// write new sodium library // write new sodium library
File.WriteAllBytes(gameSodium, File.ReadAllBytes(sodiumLib)); File.WriteAllBytes(gameSodium, File.ReadAllBytes(sodiumLib));
// patch gameassembly to remove sodium IntegrityUtility Check. Was added in v124, note that this will need to be updated each game version! Thanks TenCent or ShiftDown!
var gameAssemblyBytes = File.ReadAllBytes(gameAssembly);
for (int i = 0x5877FFB; i < gameAssemblyBytes.Length; i++)
{
if (gameAssemblyBytes[i] == 0xE8 &&
gameAssemblyBytes[i + 1] == 0xF0 &&
gameAssemblyBytes[i + 2] == 0x9D &&
gameAssemblyBytes[i + 3] == 0x43 &&
gameAssemblyBytes[i + 4] == 0xFB)
{
gameAssemblyBytes[i] = 0xb0; // MOV ax, 1
gameAssemblyBytes[i + 1] = 0x01;
gameAssemblyBytes[i + 2] = 0x90; // NOP
gameAssemblyBytes[i + 3] = 0x90; // NOP
gameAssemblyBytes[i + 4] = 0x90; // NOP
File.WriteAllBytes(gameAssembly, gameAssemblyBytes);
break;
}
if (gameAssemblyBytes[i] == 0xb0 &&
gameAssemblyBytes[i + 1] == 1 &&
gameAssemblyBytes[i + 2] == 0x90 &&
gameAssemblyBytes[i + 3] == 0x90 &&
gameAssemblyBytes[i + 4] == 0x90)
{
// was already patched
break;
}
}
// update launcher/game ca cert list // update launcher/game ca cert list