- UID
- 13307
注册时间2006-5-16
阅读权限10
最后登录1970-1-1
周游历练
TA的每日心情 | 难过 2016-9-22 16:32 |
---|
签到天数: 4 天 [LV.2]偶尔看看I
|
发表于 2006-5-22 20:59:53
|
显示全部楼层
0040110C 0FBE840D 48FFFF>movsx eax,byte ptr ss:[ebp+ecx-B8] //依次取用户名 保存在eax
00401114 41 inc ecx //ecx为计数器
00401115 33C1 xor eax,ecx // eax=eax xor ecx
00401117 03D8 add ebx,eax //结果 累加到在ebx 我这里最后是2A5
00401119 3B4D D8 cmp ecx,dword ptr ss:[ebp-28] //比较用户名是否取完
0040111C ^ 75 EE jnz short k4n.0040110C
0040111E 6BC0 06 imul eax,eax,6 //最后一次的结果*6 7f*6=2FA
00401121 C1E3 07 shl ebx,7 //2a5左移7位 得 15280
00401124 03C3 add eax,ebx //eax=eax+ebx 15280+2fA=1557A
00401126 8945 C8 mov dword ptr ss:[ebp-38],eax
00401129 FF75 C8 push dword ptr ss:[ebp-38]
0040112C 68 38B44000 push k4n.0040B438 ; %lx
00401131 8D8D 80FEFFFF lea ecx,dword ptr ss:[ebp-180]
00401137 51 push ecx
00401138 E8 873D0000 call k4n.00404EC4 //将计算结果1557A转换位字符串"1557A"
0040113D 83C4 0C add esp,0C
00401140 8D85 80FEFFFF lea eax,dword ptr ss:[ebp-180] //取得假码:87654321
00401146 50 push eax //假码入栈
00401147 8D95 E4FEFFFF lea edx,dword ptr ss:[ebp-11C] //取得刚计算得真码 1557A
0040114D 52 push edx //真码入栈 ==>>内存注册机
0040114E E8 339C0000 call <jmp.&KERNEL32.lstrcmpA> //关键比较
00401153 85C0 test eax,eax
00401155 75 0D jnz short k4n.00401164 //75==>>74爆破
00401157 68 3CB44000 push k4n.0040B43C ; congratulations! if this number comes *from your* keygen, write a tutorial dude ;).
0040115C 56 push esi
0040115D E8 289B0000 call <jmp.&USER32.SetWindowTextA>
00401162 EB 18 jmp short k4n.0040117C
00401164 68 90B44000 push k4n.0040B490 ; this serial is *not* valid!! try again... : unregistered
00401169 56 push esi
0040116A E8 1B9B0000 call <jmp.&USER32.SetWindowTextA>
0040116F EB 0B jmp short k4n.0040117C
00401171 68 C9B44000 push k4n.0040B4C9 ; name must contain more than 4 chars and less than 50 chars !!
00401176 56 push esi
00401177 E8 0E9B0000 call <jmp.&USER32.SetWindowTextA>
因为用到了左移,而我只会vb(狂汗中.......)
算法总结:
1.依次取用户名的asi码 与它所在的位置的序号做xor 运算,累加.并乘以6.记位A
2.将用户名的最后一个字的asi码 左移7位.记位B
3.注册码= A+B
一组可用注册码:
Name:hczcyy
Code:1557A |
|