本帖最后由 wtujoxk 于 2023-11-27 18:21 编辑
楼上给了密码,算法在这里。断点打在 00A64710,寄存器就是明码!
[C++] 纯文本查看 复制代码 bool __thiscall sub_A64710(_DWORD *this, const char *a2)
{
const char *v2; // esi
_DWORD *v3; // edx
unsigned int v4; // edi
unsigned int v5; // edx
unsigned int v6; // edx
bool v7; // cf
unsigned __int8 v8; // al
unsigned __int8 v9; // al
unsigned __int8 v10; // al
int v11; // eax
v2 = a2;
v3 = this;
v4 = strlen(a2);
if ( this[5] >= 0x10u )
this = (_DWORD *)*this;
v5 = v3[4];
if ( v5 != v4 )
return 0;
v7 = v5 < 4;
v6 = v5 - 4;
if ( v7 )
{
LABEL_7:
if ( v6 == -4 )
goto LABEL_16;
}
else
{
while ( *this == *(_DWORD *)v2 )
{
++this;
v2 += 4;
v7 = v6 < 4;
v6 -= 4;
if ( v7 )
goto LABEL_7;
}
}
v7 = *(_BYTE *)this < *v2;
if ( *(_BYTE *)this != *v2
|| v6 != -3
&& ((v8 = *((_BYTE *)this + 1), v7 = v8 < (unsigned int)v2[1], v8 != v2[1])
|| v6 != -2
&& ((v9 = *((_BYTE *)this + 2), v7 = v9 < (unsigned int)v2[2], v9 != v2[2])
|| v6 != -1 && (v10 = *((_BYTE *)this + 3), v7 = v10 < (unsigned int)v2[3], v10 != v2[3]))) )
{
v11 = v7 ? -1 : 1;
return !v11;
}
LABEL_16:
v11 = 0;
return !v11;
} |