- UID
- 2812
注册时间2005-8-18
阅读权限8
最后登录1970-1-1
初入江湖
该用户从未签到
|
壁纸雷达 v2005b.3算法分析
作者:sy888222
下载页面:http://www.shareware.cn/pub/12661.html
软件简介:壁纸雷达是一款小巧的壁纸工具软件,她最突出的特色是能每天从互联网上下载最新最酷的壁纸,并在您不知不觉中为您铺在桌面上。
主要特色:
自动下载壁纸 (无需打开浏览器, 没有病毒! 没有弹出广告!).
支持系统热键,你可以用热键快速的实现壁纸的切换和清除.
设有壁纸收藏夹,您可以将自己喜欢的壁纸挑出来用于日常更换桌面.
您可以自行设定壁纸切换的时间和方式 .
自带屏保程序,将壁纸直接作为屏保图片显示 (包括150种切换特效 ).
自动检测电脑是否在线.
软件自动升级.
可以控制桌面图标的隐藏和显示.
占用很少的系统资源.
破解说明:我是菜鸟,文中分析有不对的地方请各位高手指正!
查壳:Borland Delphi 6.0 - 7.0 无壳 ,对菜鸟来说最好不过了!现在的壳太猛了,多数搞不定哈!
安装完成后注册不在主程序,分析主程序并不能找到注册提示信息,在目录下的wrmain这个文件注册,用OD载入这个文件找到注册错误提示
双击"注册码不正确,请查实"提示信息,来到004D34E2处
004D3380 /. 55 push ebp //在此下断,F8往下走
004D3381 |. 8BEC mov ebp,esp
004D3383 |. 81C4 F4FEFFFF add esp,-10C
004D3389 |. 53 push ebx
004D338A |. 56 push esi
004D338B |. 57 push edi
004D338C |. 33C9 xor ecx,ecx
004D338E |. 894D F4 mov dword ptr ss:[ebp-C],ecx
004D3391 |. 894D FC mov dword ptr ss:[ebp-4],ecx
004D3394 |. 8BF0 mov esi,eax
004D3396 |. 33C0 xor eax,eax
004D3398 |. 55 push ebp
004D3399 |. 68 42354D00 push wrmain.004D3542
004D339E |. 64:FF30 push dword ptr fs:[eax]
004D33A1 |. 64:8920 mov dword ptr fs:[eax],esp
004D33A4 |. 66:C745 FA 4F04 mov word ptr ss:[ebp-6],44F
004D33AA |. 8D55 F4 lea edx,dword ptr ss:[ebp-C]
004D33AD |. 8B86 68030000 mov eax,dword ptr ds:[esi+368]
004D33B3 |. E8 00E0F6FF call wrmain.004413B8
004D33B8 |. 8B45 F4 mov eax,dword ptr ss:[ebp-C] //注册码->EAX
004D33BB |. 8D55 FC lea edx,dword ptr ss:[ebp-4]
004D33BE |. E8 2D5AF3FF call wrmain.00408DF0
004D33C3 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
004D33C6 |. E8 C517F3FF call wrmain.00404B90
004D33CB |. 83F8 0B cmp eax,0B //注册码位数和12比较
004D33CE |. 0F8E 2F010000 jle wrmain.004D3503 //小于等于就跳,跳即OVER
004D33D4 |. 33DB xor ebx,ebx
004D33D6 |. 8B45 FC mov eax,dword ptr ss:[ebp-4] //注册码->EAX
004D33D9 |. E8 B217F3FF call wrmain.00404B90
004D33DE |. 8BD0 mov edx,eax
004D33E0 |. 85D2 test edx,edx
004D33E2 |. 7E 26 jle short wrmain.004D340A
004D33E4 |. B8 01000000 mov eax,1 //1->EAX开始计数
004D33E9 |> 8B4D FC /mov ecx,dword ptr ss:[ebp-4] //注册码->ECX
004D33EC |. 0FB64C01 FF |movzx ecx,byte ptr ds:[ecx+eax-1] //循环取注册码
004D33F1 |. 0FB77D FA |movzx edi,word ptr ss:[ebp-6] //EDI=[ebp-6]=44F
004D33F5 |. C1EF 08 |shr edi,8 //EDI逻辑右移8位,为4
004D33F8 |. 33CF |xor ecx,edi //ECX=ECX xor EDI
004D33FA |. BF 12000000 |mov edi,12 //12->EDI
004D33FF |. 2BF8 |sub edi,eax //EDI=EDI-EAX(eax初始为1,循环一次加1)
004D3401 |. 0FAFCF |imul ecx,edi //ECX=ECX*EDI
004D3404 |. 03D9 |add ebx,ecx //计算结果累加->EBX
004D3406 |. 40 |inc eax //计数器加1,完成一个注册码运算
004D3407 |. 4A |dec edx
004D3408 |.^ 75 DF \jnz short wrmain.004D33E9 //取完往下走
004D340A |> 8B45 FC mov eax,dword ptr ss:[ebp-4]
004D340D |. 0FB640 05 movzx eax,byte ptr ds:[eax+5] //取注册码第六位->EAX
004D3411 |. 6BC0 13 imul eax,eax,13 //注册码第六位*13
004D3414 |. 50 push eax
004D3415 |. 8BC3 mov eax,ebx
004D3417 |. 5A pop edx
004D3418 |. 8BCA mov ecx,edx
004D341A |. 99 cdq
004D341B |. F7F9 idiv ecx // 1C1E/3A3->商EAX,余数EDX
004D341D |. 85D2 test edx,edx //测试EDX
004D341F |. 0F85 AD000000 jnz wrmain.004D34D2 //EDX不为0就跳,也就是必须能被注册码第六位*13整除
跳即OVER,在这里爆破还须搞定重起验证!
004D3425 |. 6A 00 push 0
004D3427 |. A1 EC654D00 mov eax,dword ptr ds:[4D65EC]
004D342C |. 8B00 mov eax,dword ptr ds:[eax]
004D342E |. E8 5519F3FF call wrmain.00404D88
004D3433 |. 8BC8 mov ecx,eax
004D3435 |. BA 50354D00 mov edx,wrmain.004D3550
004D343A |. A1 D0684D00 mov eax,dword ptr ds:[4D68D0]
004D343F |. 8B00 mov eax,dword ptr ds:[eax]
004D3441 |. E8 F6E0F8FF call wrmain.0046153C
004D3446 |. 8B86 68030000 mov eax,dword ptr ds:[esi+368]
004D344C |. B2 01 mov dl,1
004D344E |. E8 99E6F5FF call wrmain.00431AEC
004D3453 |. 8B86 34030000 mov eax,dword ptr ds:[esi+334]
004D3459 |. 33D2 xor edx,edx
004D345B |. 8B08 mov ecx,dword ptr ds:[eax]
004D345D |. FF51 64 call dword ptr ds:[ecx+64]
004D3460 |. 8B86 DC030000 mov eax,dword ptr ds:[esi+3DC]
004D3466 |. B2 01 mov dl,1
004D3468 |. E8 7FE6F5FF call wrmain.00431AEC
004D346D |. 8B86 BC030000 mov eax,dword ptr ds:[esi+3BC]
004D3473 |. B2 01 mov dl,1
004D3475 |. 8B08 mov ecx,dword ptr ds:[eax]
004D3477 |. FF51 64 call dword ptr ds:[ecx+64]
004D347A |. 8B86 E4030000 mov eax,dword ptr ds:[esi+3E4]
004D3480 |. 33D2 xor edx,edx
004D3482 |. E8 61DFF6FF call wrmain.004413E8
004D3487 |. 8D85 F4FEFFFF lea eax,dword ptr ss:[ebp-10C]
004D348D |. 8B55 FC mov edx,dword ptr ss:[ebp-4]
004D3490 |. B9 FF000000 mov ecx,0FF
004D3495 |. E8 D216F3FF call wrmain.00404B6C
004D349A |. 8D95 F4FEFFFF lea edx,dword ptr ss:[ebp-10C]
004D34A0 |. A1 9C694D00 mov eax,dword ptr ds:[4D699C]
004D34A5 |. 05 E0000000 add eax,0E0
004D34AA |. B1 10 mov cl,10
004D34AC |. E8 27FBF2FF call wrmain.00402FD8
004D34B1 |. 8B86 F0020000 mov eax,dword ptr ds:[esi+2F0]
004D34B7 |. BA 7C354D00 mov edx,wrmain.004D357C
004D34BC |. E8 2752FDFF call wrmain.004A86E8
004D34C1 |. A1 14664D00 mov eax,dword ptr ds:[4D6614]
004D34C6 |. C600 01 mov byte ptr ds:[eax],1
004D34C9 |. 8BC6 mov eax,esi
004D34CB |. E8 50E8FFFF call wrmain.004D1D20
004D34D0 |. EB 52 jmp short wrmain.004D3524
004D34D2 |> 6A 00 push 0
004D34D4 |. A1 EC654D00 mov eax,dword ptr ds:[4D65EC]
004D34D9 |. 8B00 mov eax,dword ptr ds:[eax]
004D34DB |. E8 A818F3FF call wrmain.00404D88
004D34E0 |. 8BC8 mov ecx,eax
004D34E2 |. BA 88354D00 mov edx,wrmain.004D3588 //双击提示信息后来到这里,向上看,在004D3380处下断
004D34E7 |. A1 D0684D00 mov eax,dword ptr ds:[4D68D0]
004D34EC |. 8B00 mov eax,dword ptr ds:[eax]
004D34EE |. E8 49E0F8FF call wrmain.0046153C
004D34F3 |. 8B86 68030000 mov eax,dword ptr ds:[esi+368]
算法总结:注册码必须大于12位,每个注册码先和4异或然后乘以(12-所在位数)后循环累加,累加和除以(注册码第六位*13),能够整除即注册成功!
注册信息不写入注册表,卸载软件后还要重新注册!
一个可用的注册码:1234512345126
说明:注册机不会写,这个注册码是一步一步手算出来的,呵呵,方法太笨了,再复杂点的估计就不行了,还要好好学习编程啊!还望各位大侠不要取笑哈!!!
------------------------------------------------------------------------------------
转载请保持文章完整,谢谢!
[ Last edited by sy888222 on 2005-8-25 at 07:46 PM ] |
|