Ayuda para comprender esta función
Publicado por aguml (9 intervenciones) el 23/12/2017 23:16:52
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:
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*?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public 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;
}
¿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*?
Valora esta pregunta


0