mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-13 07:24:52 +01:00
v124.6.10 works now
This commit is contained in:
22
EpinelPS/LobbyServer/Msgs/Misc/Retroactive.cs
Normal file
22
EpinelPS/LobbyServer/Msgs/Misc/Retroactive.cs
Normal 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
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user