-
-
[求助]请教此算法是STL中那个数据结构的模板
-
发表于:
2011-12-30 18:03
6568
-
通过节点索引号作为参数传入下面的函数中。经过运算得出数组下标。
该数组固定尺寸0x48字节。每个成员8字节。一共有9个成员。而每个成员皆不为空
只能通过上面计算出来的下标来定位目标。有点HASH表的意思。
请前辈高人 能指点 这个模样的数据结构是什么? kx不多。尽可能的感激
PUSH EBP
MOV EBP,ESP
MOV EAX,[ARG.1]
PUSH ESI
MOV ESI,ECX
MOV ECX,DWORD PTR DS:[EAX]
XOR ECX,DEADBEEF
PUSH 1F31D
PUSH ECX
CALL DWORD PTR DS:[DCD648] ;msvcr80.ldiv
IMUL EDX,EDX,41A7
IMUL EAX,EAX,0B14
ADD ESP,8
SUB EDX,EAX
JNS SHORT 006041C6
ADD EDX,7FFFFFFF
MOV ECX,DWORD PTR DS:[ESI+28]
MOV EAX,ECX
AND EAX,EDX
CMP DWORD PTR DS:[ESI+2C],EAX
POP ESI
JA SHORT 006041DC
SHR ECX,1
OR EDX,FFFFFFFF
SUB EDX,ECX
ADD EAX,EDX
POP EBP
RETN 4
再用C语言描述一下:
int unknown(int* index)
{
int temp_01;
int temp_02;
int temp_03;
ldiv_t result;
result=ldiv((*index^0xDEADBEEF),0x1F31D);
result.quot*=0xB14;
result.rem *=0x41A7;
temp_01=result.rem-result.quot;
if (temp_01<0)
{
temp_01&=0x7FFFFFFF;
}
__asm
{
mov temp_02,dword ptr ds:[esi+28] //因类结构成员没有完全理解,固如此
}
temp_03=temp_02;
temp_03&=temp_01;
__asm
{
CMP DWORD PTR DS:[ESI+2C],temp_03 //因类结构成员没有完全理解,固如此
JA leave
}
temp_02>>=1;
temp_01|=0xFFFFFFFF;
temp_01-=temp_02;
temp_03&=temp_01;
leave:
return temp_03;
}
[课程]FART 脱壳王!加量不加价!FART作者讲授!