主要就是在sub_91830这个函数里面
上面部分是对密码进行一个变换,就是将字符转换为对应的十进制数字,然后存储到v16中
while ( v7 < strlen(password) )
{
if ( isdigit(password[v7]) ) // 数字,0-9
{
v9 = password[v7] - 48;
}
else if ( isxdigit(password[v7]) ) // 检测是否是16进制字符,即A-F
{
if ( *((_DWORD *)NtCurrentPeb()->ProcessHeap + 3) != 2 )
password[v7] = 34;
v9 = (password[v7] | 0x20) - 87;
}
else
{
v9 = ((password[v7] | 0x20) - 97) % 6 + 10;// 字母
}
__rdtsc();
__rdtsc();
v10 = v9 + 16 * v10;
if ( !((int)(v7 + 1) % 2) ) // 奇数
{
v16[v4++ - 1] = v10;
a1 = v4;
v10 = 0;
}
++v7;
}
<下面就是对v16进行变换,其中byte_A6050的值是通过username来得到的,可以动调出来,经过一系列变换后最终变换的结果存储到v17中