sbshjw 发表于 2007-9-2 20:23:51

菜鸟学分析

破解作者】 一面湖水
【使用工具】 od、peid
【破解平台】 WinXP
【软件名称】 电子朗读王 2007
【下载地址】http://cndns.onlinedown.net/down/voiceking_50609.zip
【软件简介】 一款电脑语音朗读软件,利用TTS语音引擎,它可以朗读中文、英文、中英混合的文字内容,还可以将其导出保存为音频文件。利用"朗读剪切"板功能,你便可以在浏览网页、阅读文档时将文本复制到系统剪切板中让其自动读给你听,还可以给你当校对,有声的世界更精彩。更有"鼠标选读"、"录入朗读"更多超酷功能等待着您的使用。电子朗读王,读出你的精彩和快乐!欢迎您选择使用。


【加壳方式】 无壳
【破解声明】 学习破解,请勿用于商业目的:)
--------------------------------------------------------------------------------
【破解内容】
运行软件,先注册一下,输入123456789,点注册,提示:您好,注册码错误,注册失败------想获取正确注册码,请点[到网站注册]。
peid查壳,无壳,Borland Delphi 6.0 - 7.0.
OD载入,查找字符串, “您好,注册码错误,注册失败------想获取正确注册码,请点[到网站注册]。” 找到后双击来到:

004F8AC8    6A 40             push 40
004F8ACA    B9 B48B4F00       mov ecx,VoiceKin.004F8BB4         ; 提示
004F8ACF    BA BC8B4F00       mov edx,VoiceKin.004F8BBC         ; 恭喜您,注册成功!
004F8AD4    A1 50B45000       mov eax,dword ptr ds:
004F8AD9    8B00            mov eax,dword ptr ds:
004F8ADB    E8 0C0EF7FF       call VoiceKin.004698EC
004F8AE0    8BC6            mov eax,esi
004F8AE2    E8 91D5F6FF       call VoiceKin.00466078
004F8AE7    EB 41             jmp short VoiceKin.004F8B2A
004F8AE9    6A 10             push 10
004F8AEB    B9 B48B4F00       mov ecx,VoiceKin.004F8BB4         ; 提示
004F8AF0    BA D08B4F00       mov edx,VoiceKin.004F8BD0         ; 您好,注册码错误,注册失败!\n\n----------------------------------\n\n想获取正确注册码,请点[到网站注册]。
004F8AF5    A1 50B45000       mov eax,dword ptr ds:
004F8AFA    8B00            mov eax,dword ptr ds:

向上翻一下,在004F89B1 处F2下断,F9运行,然后注册,输入123456789,点注册,程序断在004F89B1处:
004F89B1    55                push ebp
004F89B2    68 7A8B4F00       push VoiceKin.004F8B7A
004F89B7    64:FF30         push dword ptr fs:
004F89BA    64:8920         mov dword ptr fs:,es>
004F89BD    8D55 F4         lea edx,dword ptr ss:[ebp>
004F89C0    8B86 F8020000   mov eax,dword ptr ds:[esi>
004F89C6    E8 91FCF4FF       call VoiceKin.0044865C
004F89CB    8B45 F4         mov eax,dword ptr ss:[ebp>; 假码出现
004F89CE    8D55 F8         lea edx,dword ptr ss:[ebp>
004F89D1    E8 DE02F1FF       call VoiceKin.00408CB4
004F89D6    8B45 F8         mov eax,dword ptr ss:[ebp>
004F89D9    50                push eax
004F89DA    8D55 EC         lea edx,dword ptr ss:[ebp>
004F89DD    8B86 04030000   mov eax,dword ptr ds:[esi>
004F89E3    E8 74FCF4FF       call VoiceKin.0044865C
004F89E8    8B45 EC         mov eax,dword ptr ss:[ebp>; 机器码放入EAX
004F89EB    8D4D F0         lea ecx,dword ptr ss:[ebp>
004F89EE    BA 908B4F00       mov edx,VoiceKin.004F8B90 ; 6s2i4kj       6s2i4kj放入EDX
004F89F3    E8 ACFAFFFF       call VoiceKin.004F84A4    ; 算法,用机器码和6s2i4kj算出注册码, F7进入
004F89F8    8B55 F0         mov edx,dword ptr ss:[ebp>; 真码放入EDX
004F89FB    58                pop eax                   ; 00F380BC      假码
004F89FC    E8 3FBFF0FF       call VoiceKin.00404940    ; 真假码比较
004F8A01    0F85 E2000000   jnz VoiceKin.004F8AE9   ; 不相等就跳,爆破点
F7进入来到:
004F84CC    55                push ebp
004F84CD    68 A6864F00       push VoiceKin.004F86A6
004F84D2    64:FF30         push dword ptr fs:
004F84D5    64:8920         mov dword ptr fs:,es>
004F84D8    8D55 F4         lea edx,dword ptr ss:[ebp>
004F84DB    8BC3            mov eax,ebx
004F84DD    E8 26FFFFFF       call VoiceKin.004F8408    ; 算法,逐个算出机器码,所对应的ASCII
004F84E2    8D55 F0         lea edx,dword ptr ss:[ebp>
004F84E5    8B45 FC         mov eax,dword ptr ss:[ebp>
004F84E8    E8 1BFFFFFF       call VoiceKin.004F8408    ; 算法,逐个算出6s2i4kj所对应的ASCII
004F84ED    8D45 EC         lea eax,dword ptr ss:[ebp>
中间省略。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
004F854D    BA B4864F00       mov edx,VoiceKin.004F86B4
004F8552    8D45 D8         lea eax,dword ptr ss:[ebp>
004F8555    E8 AEA9F0FF       call VoiceKin.00402F08
004F855A    8D45 D4         lea eax,dword ptr ss:[ebp>
004F855D    8BD3            mov edx,ebx
004F855F    03D2            add edx,edx
004F8561    8B4D EC         mov ecx,dword ptr ss:[ebp>
004F8564    8A5411 FE         mov dl,byte ptr ds:[ecx+e>
004F8568    8850 01         mov byte ptr ds:,d>
004F856B    C600 01         mov byte ptr ds:,1
004F856E    8D55 D4         lea edx,dword ptr ss:[ebp>
004F8571    8D45 D8         lea eax,dword ptr ss:[ebp>
004F8574    B1 02             mov cl,2
004F8576    E8 5DA9F0FF       call VoiceKin.00402ED8
004F857B    8D55 D8         lea edx,dword ptr ss:[ebp>
004F857E    8D45 D0         lea eax,dword ptr ss:[ebp>
004F8581    E8 82A9F0FF       call VoiceKin.00402F08
004F8586    8D45 D4         lea eax,dword ptr ss:[ebp>
004F8589    8BD3            mov edx,ebx
004F858B    03D2            add edx,edx
004F858D    8B4D EC         mov ecx,dword ptr ss:[ebp>
004F8590    8A5411 FF         mov dl,byte ptr ds:[ecx+e>
004F8594    8850 01         mov byte ptr ds:,d>
004F8597    C600 01         mov byte ptr ds:,1
004F859A    8D55 D4         lea edx,dword ptr ss:[ebp>
004F859D    8D45 D0         lea eax,dword ptr ss:[ebp>
004F85A0    B1 03             mov cl,3
004F85A2    E8 31A9F0FF       call VoiceKin.00402ED8
004F85A7    8D55 D0         lea edx,dword ptr ss:[ebp>
004F85AA    8D45 DC         lea eax,dword ptr ss:[ebp>
004F85AD    E8 EEC1F0FF       call VoiceKin.004047A0
004F85B2    8B45 DC         mov eax,dword ptr ss:[ebp>
004F85B5    E8 060AF1FF       call VoiceKin.00408FC0
004F85BA    8845 E7         mov byte ptr ss:,>
004F85BD    BA B4864F00       mov edx,VoiceKin.004F86B4
004F85C2    8D45 D8         lea eax,dword ptr ss:[ebp>
004F85C5    E8 3EA9F0FF       call VoiceKin.00402F08
004F85CA    8D45 D4         lea eax,dword ptr ss:[ebp>
004F85CD    8BD6            mov edx,esi
004F85CF    03D2            add edx,edx
004F85D1    8B4D F0         mov ecx,dword ptr ss:[ebp>
004F85D4    8A5411 FE         mov dl,byte ptr ds:[ecx+e>
004F85D8    8850 01         mov byte ptr ds:,d>
004F85DB    C600 01         mov byte ptr ds:,1
004F85DE    8D55 D4         lea edx,dword ptr ss:[ebp>
004F85E1    8D45 D8         lea eax,dword ptr ss:[ebp>
004F85E4    B1 02             mov cl,2
004F85E6    E8 EDA8F0FF       call VoiceKin.00402ED8
004F85EB    8D55 D8         lea edx,dword ptr ss:[ebp>
004F85EE    8D45 D0         lea eax,dword ptr ss:[ebp>
004F85F1    E8 12A9F0FF       call VoiceKin.00402F08
004F85F6    8D45 D4         lea eax,dword ptr ss:[ebp>
004F85F9    8BD6            mov edx,esi
004F85FB    03D2            add edx,edx
004F85FD    8B4D F0         mov ecx,dword ptr ss:[ebp>
004F8600    8A5411 FF         mov dl,byte ptr ds:[ecx+e>
004F8604    8850 01         mov byte ptr ds:,d>
004F8607    C600 01         mov byte ptr ds:,1
004F860A    8D55 D4         lea edx,dword ptr ss:[ebp>
004F860D    8D45 D0         lea eax,dword ptr ss:[ebp>
004F8610    B1 03             mov cl,3
004F8612    E8 C1A8F0FF       call VoiceKin.00402ED8
004F8617    8D55 D0         lea edx,dword ptr ss:[ebp>
004F861A    8D45 CC         lea eax,dword ptr ss:[ebp>
004F861D    E8 7EC1F0FF       call VoiceKin.004047A0
004F8622    8B45 CC         mov eax,dword ptr ss:[ebp>
004F8625    E8 9609F1FF       call VoiceKin.00408FC0
004F862A    3245 E7         xor al,byte ptr ss:[ebp-1>
004F862D    8845 E6         mov byte ptr ss:,>
004F8630    8D45 C4         lea eax,dword ptr ss:[ebp>
004F8633    8A55 E6         mov dl,byte ptr ss:[ebp-1>
004F8636    E8 E9C0F0FF       call VoiceKin.00404724
004F863B    8B45 C4         mov eax,dword ptr ss:[ebp>
004F863E    8D55 C8         lea edx,dword ptr ss:[ebp>
004F8641    E8 C2FDFFFF       call VoiceKin.004F8408
004F8646    8B55 C8         mov edx,dword ptr ss:[ebp>
004F8649    8D45 E8         lea eax,dword ptr ss:[ebp>
004F864C    E8 B3C1F0FF       call VoiceKin.00404804
004F8651    43                inc ebx
004F8652    4F                dec edi
004F8653^ 0F85 F4FEFFFF   jnz VoiceKin.004F854D
004F8659    46                inc esi
004F865A    FF4D E0         dec dword ptr ss:
004F865D^ 0F85 B4FEFFFF   jnz VoiceKin.004F8517   ; 循环,用机器码所对应的的ASCII和6s2i4kj所对应的的ASCII作运算,算出注册码。
004F8663    8B45 F8         mov eax,dword ptr ss:[ebp>
------------------------------------------------------------------------------------------------------------------------

我的机器码:“BFED575D0013D41396BD”
假码:      “123456789”
真码:      “696D6E6F1E1C1E6F1B1B1A186F1F1A18121D696F”

好,关掉OD试试,打开软件,输入“696D6E6F1E1C1E6F1B1B1A186F1F1A18121D696F”,点注册,显示:恭喜你,注册成功!

总结:软件是利用机器码与6s2i4kj经过算所得出,输入的假注册码没有参与运算,由于本人的知识与经验都比较差,只能写出这样简单的分析,有错误的地方最好给我指出,以便像我等菜鸟更快的入门,谢谢大家能看完。

tianxj 发表于 2007-9-2 21:22:58

鼓励一下,可以试着做一下内存注册机

6319557 发表于 2007-9-2 21:57:33

谢谢了可是有的地方看不懂......
004F89F3    E8 ACFAFFFF       call VoiceKin.004F84A4    ; 算法,用机器码和6s2i4kj算出注册码, F7进入
004F89F8    8B55 F0         mov edx,dword ptr ss:[ebp>; 真码放入EDX
004F89FB    58                pop eax                   ; 00F380BC      假码
004F89FC    E8 3FBFF0FF       call VoiceKin.00404940    ; 真假码比较
004F8A01    0F85 E2000000   jnz VoiceKin.004F8AE9   ; 不相等就跳,爆破点
F7进入来到:
F7是什么意思啊

tianxj 发表于 2007-9-2 22:17:16

原帖由 6319557 于 2007-9-2 21:57 发表 https://www.chinapyg.com/images/common/back.gif
谢谢了可是有的地方看不懂......
004F89F3    E8 ACFAFFFF       call VoiceKin.004F84A4    ; 算法,用机器码和6s2i4kj算出注册码, F7进入
004F89F8    8B55 F0         mov edx,dword ptr ss:
看键盘/:L

sunnyy01 发表于 2007-9-3 10:42:42

谢谢分享,学习学习

sbshjw 发表于 2007-9-3 14:42:58

谢谢鼓励,刚学算法分析还在看冷血书生的算法教程,今后一定努力.

bhcjl 发表于 2007-9-3 15:04:09

不错,下载学习学习

wyeth 发表于 2007-9-3 15:52:13

谢谢分享,学习了!!

tianxj 发表于 2007-9-3 20:48:07

跟了下算法,很简单

机器码每位的ASCII码的十六进制与"6s2i4kj"的ASCII码的十六进制循环异或,相连

[ 本帖最后由 tianxj 于 2007-9-3 23:56 编辑 ]

LM苍蝇 发表于 2007-9-6 21:03:33

厉害
向楼主学习
页: [1] 2
查看完整版本: 菜鸟学分析