Hola amigos, tengo un código que estoy intentando entender pero en visual studio c# no compila. La parte que quiero entender por ahora y donde da los errores es esta:
Código C++:
Ver originalpublic unsafe byte[] Decrypt(byte[] eData)
{
byte[] buffer2;
byte[] buffer = Class41.smethod_0((int) Class37.smethod_0(eData));
if (((buffer2 = eData) != null) && (((int) Class37.smethod_0(buffer2)) != 0))
{
numRef2 = &(buffer2[Class4.smethod_0(0x114)]);
}
fixed (byte* numRef2 = ((byte*) Class4.smethod_0(0x110)))
{
if (((buffer2 = buffer) != null) && (((int) Class37.smethod_0(buffer2)) != 0))
{
numRef = &(buffer2[Class4.smethod_0(0x11c)]);
}
fixed (byte* numRef = ((byte*) Class4.smethod_0(280)))
{
int* numPtr = (int*) numRef2;
int* numPtr2 = (int*) numRef;
int num = Class4.smethod_0(0x120);
do
{
numPtr += Class4.smethod_0(0x124);
int num2 = numPtr[0].smethod_2();
numPtr += Class4.smethod_0(0x128);
int num3 = numPtr[0].smethod_2();
this.ccfae92404b1d8caf890158f763ac579b(ref num2, ref num3);
numPtr2 += Class4.smethod_0(300);
numPtr2[0] = num2 = num2.smethod_2();
numPtr2 += Class4.smethod_0(0x130);
numPtr2[0] = num3 = num3.smethod_2();
num += Class4.smethod_0(0x134);
}
while (num < (((int) Class37.smethod_0(eData)) >> Class4.smethod_0(0x138)));
}
}
return buffer;
}
Los errores los da en las líneas con fixed.
¿Alguien puede corregir el código y comentarlo para entender que hace en cada línea?
Otra duda que tengo pero no aparece en este código es ¿Que diferencia hay entre usar IntPtr y int*?