嘿嘿,考完试了,再送上一个软件的爆破。。。。
本帖最后由 不会用鼠标的人 于 2013-7-11 20:31 编辑【软件名称】: WinWebMail
【下载地址】: http://www.winwebmail.com/wemdownent.html
【软件语言】: C++
【使用工具】: OD,Peid
【操作平台】: Win7 32
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
前言:第二次发帖,看到第一次发的那掺不忍睹的帖子,忍不住就发了第二个帖子。。。。。。。
这个软件还是蛮值钱的。。。
进入正题
1.查壳。
好吧,还是那句话。无论拿到什么软件,破解第一步总是也必须是查壳。。。。
用Peid查壳。
UPX的壳,还是一个比较简单的壳
新手可以选择拉进脱壳机。。。
不过我更建议自己手脱,因为这样可以练一下技术嘛。。。。
这里脱壳的过程我就不说了,如果连这个都还不会,我建议去看看其他的一些教程。(因为手脱实在是太重要了,所以必须学啊,不然永远成不了大牛!)
ESP定律直接秒之。。。。
脱壳后
可以看到是C++的软件
2.收集信息
打开软件,右键任务栏中的带有E的图标,然后就是注册。
选择无限用户,确定好绑定的网卡后就输入假码,再回车,就可以看到一个提示错误的信息。
然后就可以OD载入了。
3.OD调试
这次我们不用搜索字符串的方法了,我们用F12暂停法。
F9运行程序,打开注册的窗口并输入假码注册。
依旧失败,好了,现在我们回到OD,按下暂停(F12),再按下右边的K字母。
现在就OD的窗口就会显示出调用的堆栈
我们选中两串中文中间的一个,右键→显示调用,OD就会到达窗口调用的CALL。
3.追码
我们到达调用窗口的CALL后,我们在头部断点,再单步走下来,就可以找我们今天要的关键CALL。
注:通常经过关键CALL后,寄存器或者堆栈窗口会有真码(这个看到像一点的就果断复制......听我的不会错)
废话不多说,上代码:
00407330 6A FF push -1
00407332 68 68555700 push Unpack.00575568
00407337 64:A1 00000000mov eax,dword ptr fs:
0040733D 50 push eax
0040733E 64:8925 0000000>mov dword ptr fs:,esp
00407345 83EC 0C sub esp,0C
00407348 57 push edi
00407349 8BF9 mov edi,ecx
0040734B 6A 01 push 1
0040734D E8 48351600 call Unpack.0056A89A
00407352 A1 60EB5D00 mov eax,dword ptr ds: ; 取假码,看右上角的寄存器
00407357 894424 04 mov dword ptr ss:,eax
0040735B C74424 18 00000>mov dword ptr ss:,0
00407363 894424 0C mov dword ptr ss:,eax
00407367 8B8F 70080000 mov ecx,dword ptr ds: ; 机器码
0040736D 8D87 70080000 lea eax,dword ptr ds:
00407373 C64424 18 01 mov byte ptr ss:,1
00407378 8B51 F8 mov edx,dword ptr ds:
0040737B 85D2 test edx,edx
0040737D 0F84 91020000 je Unpack.00407614
00407383 8B97 6C080000 mov edx,dword ptr ds:
00407389 8B4A F8 mov ecx,dword ptr ds:
0040738C 85C9 test ecx,ecx
0040738E 0F84 80020000 je Unpack.00407614
00407394 83F9 0A cmp ecx,0A
00407397 0F8E 77020000 jle Unpack.00407614
0040739D 50 push eax
0040739E 8D4C24 08 lea ecx,dword ptr ss:
004073A2 E8 150D1600 call Unpack.005680BC
004073A7 8D4424 04 lea eax,dword ptr ss:
004073AB 50 push eax
004073AC E8 8FC90800 call Unpack.00493D40 ; 算法CALL
004073B1 8B87 6C080000 mov eax,dword ptr ds: ;将假码放入寄存器eax
004073B7 8B4C24 08 mov ecx,dword ptr ss: ;将真码放入寄存器ecx
004073BB 50 push eax ; 将假码堆入堆栈,看右下角
004073BC 51 push ecx ; 将正确的码堆入堆栈,看右下角
004073BD E8 5E361500 call Unpack.0055AA20
004073C2 83C4 0C add esp,0C
004073C5 85C0 test eax,eax
004073C7 0F85 1B020000 jnz Unpack.004075E8
004073CD 53 push ebx
004073CE 55 push ebp
004073CF 68 F0175D00 push Unpack.005D17F0 ; sn.ini
004073D4 8D5424 14 lea edx,dword ptr ss:
004073D8 68 1C8D6200 push Unpack.00628D1C
004073DD 52 push edx
004073DE E8 350E1600 call Unpack.00568218
004073E3 8B00 mov eax,dword ptr ds:
004073E5 68 EC175D00 push Unpack.005D17EC ; wb
004073EA 50 push eax
004073EB E8 CFA11400 call Unpack.005515BF
004073F0 8BE8 mov ebp,eax
004073F2 83C4 08 add esp,8
004073F5 85ED test ebp,ebp
004073F7 8D4C24 10 lea ecx,dword ptr ss:
004073FB 0F95C3 setne bl
004073FE E8 CC0B1600 call Unpack.00567FCF
00407403 84DB test bl,bl
00407405 0F84 C3010000 je Unpack.004075CE
0040740B 56 push esi
0040740C 68 62040000 push 462
00407411 8BCF mov ecx,edi
00407413 E8 2C3E1600 call Unpack.0056B244
00407418 8B40 1C mov eax,dword ptr ds:
0040741B 6A 00 push 0
0040741D 6A 00 push 0
0040741F 68 47010000 push 147
00407424 50 push eax
00407425 FF15 D0765900 call dword ptr ds:[<&USER32.SendMessageA>; USER32.SendMessageA
0040742B 8A0D 6B8D6200 mov cl,byte ptr ds:
00407431 84C9 test cl,cl
00407433 75 72 jnz short Unpack.004074A7
00407435 83F8 01 cmp eax,1
00407438 75 0A jnz short Unpack.00407444
0040743A BE 11000000 mov esi,11
0040743F E9 C6000000 jmp Unpack.0040750A
00407444 83F8 02 cmp eax,2
00407447 75 0A jnz short Unpack.00407453
00407449 BE 01000000 mov esi,1
0040744E E9 B7000000 jmp Unpack.0040750A
00407453 83F8 03 cmp eax,3
00407456 75 0A jnz short Unpack.00407462
00407458 BE 0B000000 mov esi,0B
0040745D E9 A8000000 jmp Unpack.0040750A
00407462 83F8 04 cmp eax,4
00407465 75 0A jnz short Unpack.00407471
00407467 BE 0C000000 mov esi,0C
0040746C E9 99000000 jmp Unpack.0040750A
00407471 83F8 05 cmp eax,5
00407474 75 0A jnz short Unpack.00407480
00407476 BE 0D000000 mov esi,0D
0040747B E9 8A000000 jmp Unpack.0040750A
00407480 83F8 06 cmp eax,6
00407483 75 07 jnz short Unpack.0040748C
00407485 BE 0E000000 mov esi,0E
0040748A EB 7E jmp short Unpack.0040750A
0040748C 83F8 07 cmp eax,7
0040748F 75 07 jnz short Unpack.00407498
00407491 BE 0F000000 mov esi,0F
00407496 EB 72 jmp short Unpack.0040750A
00407498 83E8 08 sub eax,8
0040749B F7D8 neg eax
0040749D 1BC0 sbb eax,eax
0040749F 83E0 0E and eax,0E
004074A2 83C0 02 add eax,2
004074A5 EB 61 jmp short Unpack.00407508
004074A7 83F8 01 cmp eax,1
004074AA 75 07 jnz short Unpack.004074B3
004074AC BE 25000000 mov esi,25
004074B1 EB 57 jmp short Unpack.0040750A
004074B3 83F8 02 cmp eax,2
004074B6 75 07 jnz short Unpack.004074BF
004074B8 BE 03000000 mov esi,3
004074BD EB 4B jmp short Unpack.0040750A
004074BF 83F8 03 cmp eax,3
004074C2 75 07 jnz short Unpack.004074CB
004074C4 BE 1F000000 mov esi,1F
004074C9 EB 3F jmp short Unpack.0040750A
004074CB 83F8 04 cmp eax,4
004074CE 75 07 jnz short Unpack.004074D7
004074D0 BE 20000000 mov esi,20
004074D5 EB 33 jmp short Unpack.0040750A
004074D7 83F8 05 cmp eax,5
004074DA 75 07 jnz short Unpack.004074E3
004074DC BE 21000000 mov esi,21
004074E1 EB 27 jmp short Unpack.0040750A
004074E3 83F8 06 cmp eax,6
004074E6 75 07 jnz short Unpack.004074EF
004074E8 BE 22000000 mov esi,22
004074ED EB 1B jmp short Unpack.0040750A
004074EF 83F8 07 cmp eax,7
004074F2 75 07 jnz short Unpack.004074FB
004074F4 BE 23000000 mov esi,23
004074F9 EB 0F jmp short Unpack.0040750A
004074FB 83E8 08 sub eax,8
004074FE F7D8 neg eax
00407500 1BC0 sbb eax,eax
00407502 83E0 20 and eax,20
00407505 83C0 04 add eax,4
00407508 8BF0 mov esi,eax
0040750A 56 push esi
0040750B 68 E4175D00 push Unpack.005D17E4 ; %i\n\n
00407510 55 push ebp
00407511 E8 29A91400 call Unpack.00551E3F
00407516 8B8F 6C080000 mov ecx,dword ptr ds:
0040751C 83C4 0C add esp,0C
0040751F 51 push ecx
00407520 68 DC175D00 push Unpack.005D17DC ; %s\n\n
00407525 55 push ebp
00407526 E8 14A91400 call Unpack.00551E3F
0040752B 55 push ebp
0040752C E8 AD9D1400 call Unpack.005512DE
00407531 56 push esi
00407532 E8 39CB0800 call Unpack.00494070
00407537 83C4 14 add esp,14
0040753A 8D4C24 14 lea ecx,dword ptr ss:
0040753E A3 28505D00 mov dword ptr ds:,eax
00407543 68 A82C5E00 push Unpack.005E2CA8
00407548 E8 F00A1600 call Unpack.0056803D
0040754D 68 A82C5E00 push Unpack.005E2CA8
00407552 68 A82C5E00 push Unpack.005E2CA8
00407557 68 A82C5E00 push Unpack.005E2CA8
0040755C 6A 73 push 73
0040755E 8D5424 24 lea edx,dword ptr ss:
00407562 68 3C165D00 push Unpack.005D163C ; %03d%s\t%s\t%s
00407567 52 push edx
00407568 C64424 3C 02 mov byte ptr ss:,2
0040756D E8 DED20800 call Unpack.00494850
00407572 8D4424 2C lea eax,dword ptr ss:
00407576 6A 00 push 0
00407578 50 push eax
00407579 E8 02C60800 call Unpack.00493B80
0040757E 83C4 20 add esp,20
00407581 68 A82C5E00 push Unpack.005E2CA8
00407586 68 A82C5E00 push Unpack.005E2CA8
0040758B 56 push esi
0040758C E8 DFCA0800 call Unpack.00494070
00407591 83C4 04 add esp,4
00407594 8D4C24 1C lea ecx,dword ptr ss:
00407598 50 push eax
00407599 68 C8000000 push 0C8
0040759E 68 CC175D00 push Unpack.005D17CC ; %03d%i\t%s\t%s
004075A3 51 push ecx
004075A4 E8 A7D20800 call Unpack.00494850
004075A9 8D5424 2C lea edx,dword ptr ss:
004075AD 52 push edx
004075AE E8 7DC60800 call Unpack.00493C30
004075B3 83C4 1C add esp,1C
004075B6 8D4C24 14 lea ecx,dword ptr ss:
004075BA E8 9B091600 call Unpack.00567F5A
004075BF 8D4C24 14 lea ecx,dword ptr ss:
004075C3 C64424 24 01 mov byte ptr ss:,1
004075C8 E8 020A1600 call Unpack.00567FCF
004075CD 5E pop esi
004075CE 6A 7B push 7B
004075D0 8D4C24 10 lea ecx,dword ptr ss:
004075D4 E8 DC551600 call Unpack.0056CBB5
004075D9 6A 7C push 7C
004075DB 8D4C24 18 lea ecx,dword ptr ss:
004075DF E8 D1551600 call Unpack.0056CBB5
004075E4 5D pop ebp
004075E5 5B pop ebx
004075E6 EB 16 jmp short Unpack.004075FE
004075E8 6A 7D push 7D
004075EA 8D4C24 10 lea ecx,dword ptr ss:
004075EE E8 C2551600 call Unpack.0056CBB5
004075F3 6A 7A push 7A
004075F5 8D4C24 08 lea ecx,dword ptr ss:
004075F9 E8 B7551600 call Unpack.0056CBB5
004075FE 8B4424 0C mov eax,dword ptr ss:
00407602 8B4C24 04 mov ecx,dword ptr ss:
00407606 8B57 1C mov edx,dword ptr ds:
00407609 6A 40 push 40
0040760B 50 push eax
0040760C 51 push ecx
0040760D 52 push edx
0040760E FF15 7C765900 call dword ptr ds:[<&USER32.MessageBoxA>>; //窗口调用
00407614 8D4C24 0C lea ecx,dword ptr ss:
00407618 E8 3D091600 call Unpack.00567F5A
0040761D 8D4C24 04 lea ecx,dword ptr ss:
00407621 E8 34091600 call Unpack.00567F5A
00407626 8BCF mov ecx,edi
00407628 E8 164C1600 call Unpack.0056C243
0040762D 8D4C24 0C lea ecx,dword ptr ss:
00407631 C64424 18 00 mov byte ptr ss:,0
00407636 E8 94091600 call Unpack.00567FCF
0040763B 8D4C24 04 lea ecx,dword ptr ss:
0040763F C74424 18 FFFFF>mov dword ptr ss:,-1
00407647 E8 83091600 call Unpack.00567FCF
0040764C 8B4C24 10 mov ecx,dword ptr ss:
00407650 5F pop edi
00407651 64:890D 0000000>mov dword ptr fs:,ecx
00407658 83C4 18 add esp,18
0040765B C3 retn
0040765C 90 nop
0040765D 90 nop
0040765E 90 nop
0040765F 90 nop
这个关键CALL我是单步找的,大家有什么好的方法可以分享出来。。。。。。。
今天主要想说的就是F12暂停法和追码,鉴于本人是个菜鸟,所以不爆破了。。。。。{:1_918:} 大家自己爆破一下吧。。。。。(记得晒晒图让我嫉妒一下哦~~)
最后晒一张注册成功的截图。。。
软件下载地址:http://www.winwebmail.com/wemdownent.html
(太大,传不上来,网盘又太慢,于是就。。。。。。实在是。。。)
看完帖不回复是不好的,请多多回复,多多点评,让我认识自己的错误吧,您的回复就是我的动力。。。。。30 秒后保存 折腾了一下午终于成功了!
3.追码有点不懂,我们在头部断点,再单步走下来,就可以找我们今天要的关键CALL。,特别是这个地方,头部断点跟单步走有点不懂 沙发,学习啦。。 前排学习,谢谢楼主。 板凳,学习下 向老师学习下,谢谢,学到东西了。 对C++语言很感兴趣,楼主很有才啊,羡慕嫉妒恨啊,好好学习,争取赶上楼主啊 敢不敢爆破阿尔法系列的软件啊? 这个要学习学习 minxl 发表于 2013-7-11 20:55 static/image/common/back.gif
尝试玩玩,写个注册机试试
额,对耶,我怎么忘了写注册机。。。。。。
多谢提醒{:1_918:}