新东方背单词3密码浅析
【破解作者】 mhsong
【作者QQ】 278200743
【使用工具】 peid OllyDbg1.10
【破解平台】 Winxp
【软件名称】 新东方背单词3
【编写语言】 VC
新东方背单词3是一款非常好的背单词软件,可以供多人使用。每个人用自己的用户名进入。有一天发现密码忘记了,于是就尝试着看看它的密码是怎么生成的。用户名和密码放在安装目录下一个.cfg文件里的。在修改密码的窗口下,设bpx GetWindowText,几次跳转之后来到这里。
004A4C80 /$ 55 push ebp
004A4C81 |. 8BEC mov ebp,esp
004A4C83 |. 56 push esi
004A4C84 |. 8B75 0C mov esi,dword ptr ss:[ebp+C]
004A4C87 |. 33C9 xor ecx,ecx
004A4C89 |. 85F6 test esi,esi
004A4C8B |. 7E 1E jle short Recite3.004A4CAB
004A4C8D |. 8B55 08 mov edx,dword ptr ss:[ebp+8]
004A4C90 |> 8A0411 /mov al,byte ptr ds:[ecx+edx]
004A4C93 |. 8845 0F |mov byte ptr ss:[ebp+F],al
004A4C96 |. 8A45 0F |mov al,byte ptr ss:[ebp+F]
004A4C99 |. D0C8 |ror al,1
004A4C9B |. 34 09 |xor al,9
004A4C9D |. 8845 0F |mov byte ptr ss:[ebp+F],al
004A4CA0 |. 8A45 0F |mov al,byte ptr ss:[ebp+F]
004A4CA3 |. 880411 |mov byte ptr ds:[ecx+edx],al
004A4CA6 |. 41 |inc ecx
004A4CA7 |. 3BCE |cmp ecx,esi
004A4CA9 |.^ 7C E5 \jl short Recite3.004A4C90
004A4CAB |> 5E pop esi ; 0012C264
004A4CAC |. 5D pop ebp
004A4CAD \. C3 retn
这个就是保存后的密码到明文的转换过程,上面的汇编代码的大体意思见下面的c代码。
deCode(char* str,int len,char out)
{
if(!len) return;
for(int i=0;i<len;i++){
out = str[i];
out >>= 1;
out ^= 0x09;
str[i] = out;
}
}
004081BE |. 8B4C24 00 mov ecx,dword ptr ss:[esp]
004081C2 |. 8B5424 14 mov edx,dword ptr ss:[esp+14]
004081C6 |. 51 push ecx ; /Arg2
004081C7 |. 52 push edx ; |Arg1
004081C8 |. E8 C6D60B00 call Recite3.004C5893 ; \Recite3.004C5893
比较输入的密码与原来的是否相同,EAX=-1表示不同
这个是用户名的加密保存算法,是用ultraedit猜解的,比较简单,没有跟踪过。
char *str="123";
for(int i=0;i<3;i++)
{
unsigned char a = str[i] ^ 0x09;
a <<=1;
printf("%x",a);
}
第一次尝试写,思路不很清楚。很菜,希望认识多一些朋友,大家多帮我~~
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!