mirror of
https://github.com/hykilpikonna/AquaDX.git
synced 2026-09-14 04:15:53 -05:00
[F] NetPacketHook may need encrypt back
This commit is contained in:
@@ -56,10 +56,14 @@ public class NetPacketHook
|
||||
!JsonHelper.DeepEqual(responseJson, JSON.Load(decodedResponse)))
|
||||
{
|
||||
var modifiedResponse = Encoding.UTF8.GetBytes(responseJson.ToJSON());
|
||||
if (!Shim.NetHttpClientDecryptsResponse)
|
||||
{
|
||||
modifiedResponse = Shim.EncryptNetPacketBody(modifiedResponse);
|
||||
}
|
||||
memoryStream.SetLength(0);
|
||||
memoryStream.Write(modifiedResponse, 0, modifiedResponse.Length);
|
||||
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||
MelonLogger.Msg($"[NetPacketExtension] Modified response for {api} ({decodedResponse.Length} bytes -> {modifiedResponse.Length} bytes)");
|
||||
MelonLogger.Msg($"[NetPacketExtension] Modified response for {api} ({decryptedResponse.Length} bytes -> {modifiedResponse.Length} bytes)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,6 +89,35 @@ public static class Shim
|
||||
}
|
||||
}
|
||||
|
||||
public static byte[] EncryptNetPacketBody(byte[] data)
|
||||
{
|
||||
var methods = AccessTools.TypeByName("Net.CipherAES").GetMethods();
|
||||
var method = methods.FirstOrDefault(it => it.Name == "Encrypt" && it.GetParameters().Length <= 2);
|
||||
if (method == null)
|
||||
{
|
||||
MelonLogger.Warning("No matching Net.CipherAES.Encrypt() method found");
|
||||
// Assume encryption code is removed.
|
||||
return data;
|
||||
}
|
||||
if (method.GetParameters().Length == 1)
|
||||
{
|
||||
return (byte[])method.Invoke(null, [data]);
|
||||
}
|
||||
else
|
||||
{
|
||||
object[] args = [data, null];
|
||||
var result = (bool)method.Invoke(null, args);
|
||||
if (result)
|
||||
{
|
||||
return (byte[])args[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Net.CipherAES.Encrypt() failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public delegate string GetAccessTokenMethod(int index);
|
||||
public static readonly GetAccessTokenMethod GetAccessToken = Iife<GetAccessTokenMethod>(() =>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user