сопоставление кодов проверок функциям проверок зашито в код каждого модуля.
Код:
while ( 1 )
{
...
check_code ^= _this->pkt_xor_byte;
if ( check_code > (signed int)0x86u )
{
if ( check_code == 0xA7 )
{
...
LABEL_33:
...
}
else
{
if ( check_code == 0xDF )
goto LABEL_33;
if ( check_code == 0xEA )
{
LABEL_20:
...
goto LABEL_21;
}
if ( check_code != 0xF5 )
break;
...
}
}
else
{
if ( check_code == 0x86 )
{
...
LABEL_21:
...
}
else
{
if ( check_code == 0x2D )
{
...
goto LABEL_21;
}
if ( check_code == 0x38 )
goto LABEL_33;
if ( check_code == 0x43 )
goto LABEL_20;
if ( check_code != 0x7B )
break;
}
}
}
есть подозрение, что вычисление xor-байта по сиду - тоже зашито в код. копать в этом направлении даже не стал, ибо не нужно.
зато получилось автоматизировать подбор таблиц и он вроде бы работает без ошибок