网络断魂 发表于 2008-3-15 02:12

菜鸟学算法之  新华字典词典 [V2008 build 02.01]算法分析  (学

【文章作者】: 网络断魂
【软件名称】: 新华字典词典
【下载地址】: 自己搜索
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【保护方式】: 序列号
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: PEID,OD,
【操作平台】: XP SP3,
【软件介绍】: 新华字典词典〗软件是一个精巧、全面、新颖的桌面资料工具。软件收集了中国所有的国标汉字,所有的规范词语,所有的规范成语,所有的英汉词典。全面收集,权威、科学。是一个优秀的学习工具助手。新华字典包括汉字拼音、笔划、部首、检字法、五笔编码,字源、组词、举例、意思等等。详尽、齐全、细致、深入。成语词典包括拼音、出处、举例等等。歇后语典包括前部分及后部分。英汉词典包括汉英对照及英汉对照。新华字典、成语词典、歇后语典都包括模糊检索功能。方便、快捷、高效。软件同时集成了众多的资料,包括名人名言、对联、名句欣赏、魔鬼词典、绕口令、千字文、三字经、百家姓、昔时贤文、俗语、谚语等等。是一款不可多得的优秀工具软件。
【作者声明】: 菜鸟学习算法,失误之处敬请诸位大侠赐教!

1、ESP定律脱壳,打开软件试运行,输入验证码及假码,提示*******不是有效的整形值,可以肯定验证码必须是数字!


2、根据字符串找到关键函数:

005444D8. 55      pushebp
005444D9. 8BEC   mov   ebp, esp
005444DB. 81C4 98FEFFFF add   esp, -168
005444E1. 33C9   xor   ecx, ecx
005444E3. 898D 9CFEFFFF mov   dword ptr , ecx
005444E9. 898D 98FEFFFF mov   dword ptr , ecx
005444EF. 898D A8FEFFFF mov   dword ptr , ecx
005444F5. 898D A4FEFFFF mov   dword ptr , ecx
005444FB. 898D A0FEFFFF mov   dword ptr , ecx
00544501. 8945 FC    mov   dword ptr , eax
00544504. 33C0   xor   eax, eax
00544506. 55      pushebp
00544507. 68 FF465400push005446FF
0054450C. 64:FF30    pushdword ptr fs:
0054450F. 64:8920    mov   dword ptr fs:, esp
00544512. 8D95 A8FEFFFF lea   edx, dword ptr
00544518. 8B45 FC    mov   eax, dword ptr
0054451B. 8B80 70040000 mov   eax, dword ptr
00544521. E8 F630F0FFcall0044761C             ; //取假码(123456789)
00544526. 8B85 A8FEFFFF mov   eax, dword ptr    ; //送给EAX
0054452C. 50      pusheax
0054452D. 8D95 A0FEFFFF lea   edx, dword ptr
00544533. 8B45 FC    mov   eax, dword ptr
00544536. 8B80 6C040000 mov   eax, dword ptr
0054453C. E8 DB30F0FFcall0044761C             ; //取验证码,
00544541. 8B85 A0FEFFFF mov   eax, dword ptr    ; //送给EAX
00544547. E8 7052ECFFcall004097BC             ; //转换为十六进制,放在EAX中,
0054454C. 03C0   add   eax, eax             ; //EAX乘2
0054454E. 8D04C0    lea   eax, dword ptr     ; //EAX乘9(结果等于84746B7A=2222222202)
00544551. 8D95 A4FEFFFF lea   edx, dword ptr
00544557. E8 9CFEFFFFcall005443F8             ; //关键CALL,跟进,
0054455C. 8B95 A4FEFFFF mov   edx, dword ptr
00544562. 58      pop   eax
00544563. E8 840AECFFcall00404FEC             ; //关键比较,不等则跳
00544568. 0F85 48010000 jnz   005446B6             ; //不等则跳往注册失败
0054456E. 8D95 98FEFFFF lea   edx, dword ptr
00544574. A1 94B05400mov   eax, dword ptr
00544579. 8B00   mov   eax, dword ptr
0054457B. E8 BC47F2FFcall00468D3C
00544580. 8B85 98FEFFFF mov   eax, dword ptr
00544586. 8D95 9CFEFFFF lea   edx, dword ptr
0054458C. E8 D755ECFFcall00409B68
00544591. 8D85 9CFEFFFF lea   eax, dword ptr
00544597. BA 14475400mov   edx, 00544714          ; skins\9.skn
0054459C. E8 0F09ECFFcall00404EB0             ; //保存注册码
005445A1. 8B95 9CFEFFFF mov   edx, dword ptr
005445A7. 8D85 ACFEFFFF lea   eax, dword ptr
005445AD. E8 92E9EBFFcall00402F44
005445B2. BA 01000000mov   edx, 1
005445B7. 8D85 ACFEFFFF lea   eax, dword ptr
005445BD. E8 36EFEBFFcall004034F8
005445C2. E8 B5E3EBFFcall0040297C
005445C7. 33C0   xor   eax, eax
005445C9. 55      pushebp
005445CA. 68 3C465400push0054463C
005445CF. 64:FF30    pushdword ptr fs:
005445D2. 64:8920    mov   dword ptr fs:, esp
005445D5. 6A 00   push0
005445D7. 8D55 FB    lea   edx, dword ptr
005445DA. B9 01000000mov   ecx, 1
005445DF. 8D85 ACFEFFFF lea   eax, dword ptr
005445E5. E8 B6EAEBFFcall004030A0
005445EA. E8 8DE3EBFFcall0040297C
005445EF. BA 05000000mov   edx, 5
005445F4. 8D85 ACFEFFFF lea   eax, dword ptr
005445FA. E8 05EFEBFFcall00403504
005445FF. E8 78E3EBFFcall0040297C
00544604. 6A 00   push0
00544606. 8D55 FB    lea   edx, dword ptr
00544609. B9 01000000mov   ecx, 1
0054460E. 8D85 ACFEFFFF lea   eax, dword ptr
00544614. E8 87EAEBFFcall004030A0
00544619. E8 5EE3EBFFcall0040297C
0054461E. 33C0   xor   eax, eax
00544620. 5A      pop   edx
00544621. 59      pop   ecx
00544622. 59      pop   ecx
00544623. 64:8910    mov   dword ptr fs:, edx
00544626. 68 43465400push00544643
0054462B> 8D85 ACFEFFFF lea   eax, dword ptr
00544631. E8 8AEAEBFFcall004030C0
00544636. E8 41E3EBFFcall0040297C
0054463B. C3      retn
0054463C.^ E9 53FEEBFFjmp   00404494
00544641.^ EB E8   jmp   short 0054462B
00544643. B8 28475400mov   eax, 00544728          ; 软件注册成功!
00544648. E8 B7C1EFFFcall00440804
0054464D. 8B45 FC    mov   eax, dword ptr
00544650. 8B80 64040000 mov   eax, dword ptr
00544656. BA 40475400mov   edx, 00544740          ; 软件已注册
0054465B. E8 EC2FF0FFcall0044764C
00544660. 8B45 FC    mov   eax, dword ptr
00544663. 8B90 A8040000 mov   edx, dword ptr
00544669. 8B45 FC    mov   eax, dword ptr
0054466C. 8B80 C0040000 mov   eax, dword ptr
00544672. E8 A5DFF8FFcall004D261C
00544677. 8B45 FC    mov   eax, dword ptr
0054467A. 8B80 C0040000 mov   eax, dword ptr
00544680. BA 54475400mov   edx, 00544754          ; 解释
00544685. E8 DEDFF8FFcall004D2668
0054468A. 8B45 FC    mov   eax, dword ptr
0054468D. 8B90 F0020000 mov   edx, dword ptr
00544693. 8B45 FC    mov   eax, dword ptr
00544696. 8B80 2C050000 mov   eax, dword ptr
0054469C. E8 9FE3F8FFcall004D2A40
005446A1. 8B45 FC    mov   eax, dword ptr
005446A4. 8B80 2C050000 mov   eax, dword ptr
005446AA. BA 64475400mov   edx, 00544764          ; content
005446AF. E8 D8E3F8FFcall004D2A8C
005446B4. EB 0A   jmp   short 005446C0
005446B6> B8 74475400mov   eax, 00544774          ; 注册失败,请重试!\n\n注册用户重试失败请与作者联系!
005446BB. E8 44C1EFFFcall00440804
005446C0> 33C0   xor   eax, eax
005446C2. 5A      pop   edx
005446C3. 59      pop   ecx
005446C4. 59      pop   ecx
005446C5. 64:8910    mov   dword ptr fs:, edx
005446C8. 68 06475400push00544706
005446CD> 8D85 98FEFFFF lea   eax, dword ptr
005446D3. BA 02000000mov   edx, 2
005446D8. E8 3705ECFFcall00404C14
005446DD. 8D85 A0FEFFFF lea   eax, dword ptr
005446E3. E8 0805ECFFcall00404BF0
005446E8. 8D85 A4FEFFFF lea   eax, dword ptr
005446EE. E8 FD04ECFFcall00404BF0
005446F3. 8D85 A8FEFFFF lea   eax, dword ptr
005446F9. E8 F204ECFFcall00404BF0
005446FE. C3      retn
005446FF.^ E9 90FDEBFFjmp   00404494
00544704.^ EB C7   jmp   short 005446CD
00544706. 8BE5   mov   esp, ebp
00544708. 5D      pop   ebp
00544709. C3      retn


3、由00544557call005443F8 ; //关键CALL,跟进,

005443F8 /$ 55      pushebp
005443F9 |. 8BEC   mov   ebp, esp
005443FB |. 33C9   xor   ecx, ecx
005443FD |. 51      pushecx
005443FE |. 51      pushecx
005443FF |. 51      pushecx
00544400 |. 51      pushecx
00544401 |. 53      pushebx
00544402 |. 56      pushesi
00544403 |. 8BF2   mov   esi, edx
00544405 |. 8BD8   mov   ebx, eax             ; //乘积送给EBX
00544407 |. 33C0   xor   eax, eax             ; //EAX清零
00544409 |. 55      pushebp
0054440A |. 68 C8445400push005444C8
0054440F |. 64:FF30    pushdword ptr fs:
00544412 |. 64:8920    mov   dword ptr fs:, esp
00544415 |. 81F3 F1250B00 xor   ebx, 0B25F1         ; //乘积异或 0B25F1
0054441B |. 8BC3   mov   eax, ebx             ; //结果送给EAX
0054441D |. 33D2   xor   edx, edx             ; //EDX清零
0054441F |. 52      pushedx
00544420 |. 50      pusheax
00544421 |. 8D45 FC    lea   eax, dword ptr
00544424 |. E8 5F53ECFFcall00409788             ; //转换为十进制字符串(2222935691)
00544429 |. 8B45 FC    mov   eax, dword ptr       ; //十进制字符串送给EAX
0054442C |. 0FB600    movzxeax, byte ptr        ; //第一位ASCII值送给EAX
0054442F |. 8B55 FC    mov   edx, dword ptr       ; //十进制字符串送给EDX
00544432 |. 0FB652 01   movzxedx, byte ptr       ; //第二位ASCII值送给EDX
00544436 |. 03C2   add   eax, edx             ; //两个ASCII值相加
00544438 |. B9 05000000mov   ecx, 5            ; //送除数5
0054443D |. 99      cdq
0054443E |. F7F9   idivecx               ; //ASCII值之各除以5,商放EAX,余数放EDX
00544440 |. 80C2 34    add   dl, 34            ; //余数+34
00544443 |. 8855 F8    mov   byte ptr , dl       ; //余数相加的结果放入FC18堆栈中,
00544446 |. 8B45 FC    mov   eax, dword ptr       ; //十进制字符串送给EAX
00544449 |. 0FB640 02   movzxeax, byte ptr       ; //第三位ASCII值送给EAX
0054444D |. 8B55 FC    mov   edx, dword ptr       ; //十进制字符串送给EDX
00544450 |. 0FB652 03   movzxedx, byte ptr       ; //第四位ASCII值送给EDX
00544454 |. 03C2   add   eax, edx             ; //ASCII值相加
00544456 |. B9 05000000mov   ecx, 5            ; //送除数5
0054445B |. 99      cdq
0054445C |. F7F9   idivecx               ; //ASCII值之各除以5,商放EAX,余数放EDX
0054445E |. 8BDA   mov   ebx, edx             ; //余数送给EBX
00544460 |. 80C3 33    add   bl, 33            ; //余数+33
00544463 |. 885D F9    mov   byte ptr , bl       ; //余数相加的结果放入FC18堆栈中
00544466 |. 8D45 F4    lea   eax, dword ptr       ; //下面这一段就是把两个余数相加的值各自转换为对应的数字,连接前面的十进制字符串,
00544469 |. 8A55 F8    mov   dl, byte ptr
0054446C |. E8 5F09ECFFcall00404DD0
00544471 |. 8B45 F4    mov   eax, dword ptr
00544474 |. 8D55 FC    lea   edx, dword ptr
00544477 |. B9 1B000000mov   ecx, 1B
0054447C |. E8 070DECFFcall00405188
00544481 |. 8D45 F0    lea   eax, dword ptr
00544484 |. 8BD3   mov   edx, ebx
00544486 |. E8 4509ECFFcall00404DD0
0054448B |. 8B45 F0    mov   eax, dword ptr
0054448E |. 8D55 FC    lea   edx, dword ptr
00544491 |. B9 19000000mov   ecx, 19
00544496 |. E8 ED0CECFFcall00405188
0054449B |. 8BC6   mov   eax, esi
0054449D |. 8B55 FC    mov   edx, dword ptr
005444A0 |. E8 9F07ECFFcall00404C44
005444A5 |. 33C0   xor   eax, eax
005444A7 |. 5A      pop   edx
005444A8 |. 59      pop   ecx
005444A9 |. 59      pop   ecx
005444AA |. 64:8910    mov   dword ptr fs:, edx
005444AD |. 68 CF445400push005444CF
005444B2 |> 8D45 F0    lea   eax, dword ptr
005444B5 |. BA 02000000mov   edx, 2
005444BA |. E8 5507ECFFcall00404C14
005444BF |. 8D45 FC    lea   eax, dword ptr
005444C2 |. E8 2907ECFFcall00404BF0
005444C7 \. C3      retn
005444C8.^ E9 C7FFEBFFjmp   00404494
005444CD.^ EB E3   jmp   short 005444B2
005444CF. 5E      pop   esi
005444D0. 5B      pop   ebx
005444D1. 8BE5   mov   esp, ebp
005444D3. 5D      pop   ebp
005444D4. C3      retn

4、算法总结:

验证码(整数)乘以18,记作A;

A异或0B25F1,记作B;

(第一位数字ASCII值+第二位数字ASCII值)%5+34 转换为数字后作为倒数第二位注册码,记作C;

(第三位数字ASCII值+第四位数字ASCII值)%5+33 转换为数字后作为倒数第二位注册码,记作D;

“B”+“C”+“D”连接在一块作为最终注册码。

网络断魂 发表于 2008-3-15 02:16

Re:菜鸟学算法之 新华字典词典 [V2008 build 02.01]算法分析 (学好中文,学好算法)

沙发自己坐,

为什么发上来的代码无法对齐呢?

hackwm 发表于 2008-3-15 02:45

Re:菜鸟学算法之 新华字典词典 [V2008 build 02.01]算法分析 (学好中文,学好算法)

好强悍
不过能做个视频教程就好了

网络断魂 发表于 2008-3-15 02:46

Re:Re:菜鸟学算法之 新华字典词典 [V2008 build 02.01]算法分析 (学好中文,学好算法

引用第2楼hackwm于2008-03-15 02:45发表的 Re:菜鸟学算法之 新华字典词典 算法分析 (学好中文,学好算法) :
好强悍
不过能做个视频教程就好了

不是我强悍,是这个软件太简单,算法分析总共不会超过半小时,

hippo 发表于 2008-3-18 10:11

Re:菜鸟学算法之 新华字典词典 [V2008 build 02.01]算法分析 (学好中文,学好算法)

强。。。做个视频教学好吗???

网络断魂 发表于 2008-3-18 12:17

Re:Re:菜鸟学算法之 新华字典词典 [V2008 build 02.01]算法分析 (学好中文,学好算法

引用第4楼hippo于2008-03-18 10:11发表的 Re:菜鸟学算法之 新华字典词典 算法分析 (学好中文,学好算法) :
强。。。做个视频教学好吗???

这软件太简单了,做视频人家会笑话我,嘎嘎

hp2233 发表于 2008-3-19 09:53

刚下了原版,学习一下

maloushan 发表于 2008-3-19 14:51

收下学习了.

qsl1007 发表于 2008-3-20 09:11

我是菜鸟,我想问问楼主,
00544563 . E8 840AECFF call00404FEC            ; //关键比较,不等则跳
00544568 . 0F85 48010000 jnz005446B6            ; //不等则跳往注册失败
在这里把jnz改成jmp是不是就可以爆破了?

woshidan 发表于 2008-3-23 15:56

天那..无语拉...看天书
页: [1] 2 3
查看完整版本: 菜鸟学算法之  新华字典词典 [V2008 build 02.01]算法分析  (学