Pues estamos atascados mas o menos en el mismo sitio amigo.
Tenemos un codigo imposible de entender porque usa constantes para obtener las strings y esa parte sigue sin solucionar y ademas usa una serie de funciones que dudo mucho que lo haya creado asi el creador del programa. Un ejemplo:
byte[] array = Class41.smethod_0((int)Class37.smethod_0(eData));
En realidad si voy viendo lo que hace cada metodo de cada clase quedaria algo como:
byte[] array
= new byte[(int)eData
.Length];
Mucho mas comprensible que lo anterior y lo que está es asignando memoria a un array de bytes y el tamaño es el del largo del eData.
Otro ejemplo:
fixed (byte* ptr = &eData[Class4.smethod_0(276)])
queda como:
fixed (byte* ptr = &eData[BitConverter.ToInt32(Class4.byte_0, 276)])
Es mas comprensible pero sigue siendo una maraña de clases que no hay quien la entienda porque ¿donde se declara byte_0?
static Class4()
{
if (Class4.byte_0 == null)
{
string text = Class46.smethod_1<string>(439275159u, 16521681396958907343uL);
byte[] array = Convert.FromBase64String(text);
text = Encoding.UTF8.GetString(array, 0, array.Length);
Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(text);
Class4.byte_0 = Class6.smethod_1(97L, manifestResourceStream);
}
}
Lo que hace es rellenar byte_0 con datos de un archivo de recursos cuyo nombre no puedo saber ya que Class46.smethod_1 es una funcion con muchas operaciones matematicas para obtener la cadena y que sin la ayuda de un matematico nivel dios no podré entender jajaja.
Pero usando tools llegué a algo más y así quedo esa función:
if (Class4.byte_0 == null)
{
string text = "UmVzaWRlbnQgRXZpbCBSZXZlbGF0aW9ucyAyIERlY3J5cHRlciU=";
byte[] array = Convert.FromBase64String(text);
text = Encoding.UTF8.GetString(array, 0, array.Length);
Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(text);
Class4.byte_0 = Class6.smethod_1(97L, manifestResourceStream);
}
En realidad la cadena es "Resident Evil Revelations 2 Decrypter%" con lo que esa funcion podria quedar como:
if (Class4.byte_0 == null)
{
Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Resident Evil Revelations 2 Decrypter%");
Class4.byte_0 = Class6.smethod_1(97L, manifestResourceStream);
}
Class6.smethod_1 si no me equivoco es parte de cryptoofuscator ya que realmente viendo sus tripas creo que descifra el archivo de recurso para meter los bytes en Class4.byte_0. Realmente no creo que el programador sea el responsable