老文章档案 · 2003 年

TurboPho v2.50 算法分析

网络学院 · 破解文章 · 2003-09-09 · 出处:赢政天下整理收藏

下载地址: http://www.stepok.com/Chs/tphoto/index.htm

试验码:12345-67890-abcdef-ghijk

0042A4F0 /$ 8B5424 04 MOV EDX,DWORD PTR SS:[ESP+4]

0042A4F4 |. 53 PUSH EBX

0042A4F5 |. 55 PUSH EBP

0042A4F6 |. 56 PUSH ESI

0042A4F7 |. 57 PUSH EDI

0042A4F8 |. 8BFA MOV EDI,EDX

0042A4FA |. 83C9 FF OR ECX,FFFFFFFF

0042A4FD |. 33C0 XOR EAX,EAX

0042A4FF |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]

0042A501 |. F7D1 NOT ECX

0042A503 |. 49 DEC ECX

0042A504 |. 83F9 05 CMP ECX,5====>注册码第一部分必须5位。

0042A507 |. 74 07 JE SHORT TurboPho.0042A510

0042A509 |. 5F POP EDI

0042A50A |. 5E POP ESI

0042A50B |. 5D POP EBP

0042A50C |. 5B POP EBX

0042A50D |. C2 1000 RETN 10

0042A510 |> 8B5C24 18 MOV EBX,DWORD PTR SS:[ESP+18]

0042A514 |. 83C9 FF OR ECX,FFFFFFFF

0042A517 |. 8BFB MOV EDI,EBX

0042A519 |. 33C0 XOR EAX,EAX

0042A51B |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]

0042A51D |. F7D1 NOT ECX

0042A51F |. 49 DEC ECX

0042A520 |. 83F9 05 CMP ECX,5====>注册码第二部分必须5位。

0042A523 |. 74 07 JE SHORT TurboPho.0042A52C

0042A525 |. 5F POP EDI

0042A526 |. 5E POP ESI

0042A527 |. 5D POP EBP

0042A528 |. 5B POP EBX

0042A529 |. C2 1000 RETN 10

0042A52C |> 8B6C24 1C MOV EBP,DWORD PTR SS:[ESP+1C]

0042A530 |. 83C9 FF OR ECX,FFFFFFFF

0042A533 |. 8BFD MOV EDI,EBP

0042A535 |. 33C0 XOR EAX,EAX

0042A537 |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]

0042A539 |. F7D1 NOT ECX

0042A53B |. 49 DEC ECX

0042A53C |. 83F9 06 CMP ECX,6====>注册码第三部分必须6位。

0042A53F |. 74 07 JE SHORT TurboPho.0042A548

0042A541 |. 5F POP EDI

0042A542 |. 5E POP ESI

0042A543 |. 5D POP EBP

0042A544 |. 5B POP EBX

0042A545 |. C2 1000 RETN 10

0042A548 |> 8B7424 20 MOV ESI,DWORD PTR SS:[ESP+20]

0042A54C |. 83C9 FF OR ECX,FFFFFFFF

0042A54F |. 8BFE MOV EDI,ESI

0042A551 |. 33C0 XOR EAX,EAX

0042A553 |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]

0042A555 |. F7D1 NOT ECX

0042A557 |. 49 DEC ECX

0042A558 |. 83F9 05 CMP ECX,5====>注册码第四部分必须5位。

0042A55B |. 74 07 JE SHORT TurboPho.0042A564

0042A55D |. 5F POP EDI

0042A55E |. 5E POP ESI

0042A55F |. 5D POP EBP

0042A560 |. 5B POP EBX

0042A561 |. C2 1000 RETN 10

0042A564 |> 0FBE42 04 MOVSX EAX,BYTE PTR DS:[EDX+4]===>取第一部分假码的第5位的ASSII值35。

0042A568 |. 99 CDQ====>清零。

0042A569 |. B9 07000000 MOV ECX,7

0042A56E |. F7F9 IDIV ECX====>除以7。EAX=7,EDX=4.

0042A570 |. B9 05000000 MOV ECX,5

0042A575 |. 8BFA MOV EDI,EDX====>商移入EDI。EDI=4.

0042A577 |. 8B5424 14 MOV EDX,DWORD PTR SS:[ESP+14]====>第一部分假码12345移入EDX。

0042A57B |. 0FBE42 02 MOVSX EAX,BYTE PTR DS:[EDX+2]====>取第一部分假码的第3位的ASSII值33。

0042A57F |. 99 CDQ

0042A580 |. F7F9 IDIV ECX====>除以5。EAX=A,EDX=1.

0042A582 |. 8B4C24 14 MOV ECX,DWORD PTR SS:[ESP+14]====>第一部分假码12345移入ECX。

0042A586 |. 03FA ADD EDI,EDX====>商相加。EDI=4+1=5.

0042A588 |. 0FBE51 01 MOVSX EDX,BYTE PTR DS:[ECX+1]====>取第一部分假码的第2位的ASSII值32。

0042A58C |. 0FBE09 MOVSX ECX,BYTE PTR DS:[ECX]====>取第一部分假码的第1位的ASSII值31。

0042A58F |. 8D0457 LEA EAX,DWORD PTR DS:[EDI+EDX*2]====>EAX=EDI+第2位的ASSII值*2=5+32*2=69。

0042A592 |. 03C1 ADD EAX,ECX====>EAX=EAX+第1位的ASSII值31=9A。

0042A594 |. B9 1A000000 MOV ECX,1A

0042A599 |. 99 CDQ

0042A59A |. F7F9 IDIV ECX====>除以1A。EAX=5,EDX=18.

0042A59C |. 0FBE06 MOVSX EAX,BYTE PTR DS:[ESI]====>取第四部分假码的第1位的ASSII值67。

0042A59F |. 80C2 41 ADD DL,41====>商加41。DL=18+41=59.

0042A5A2 |. 81E2 FF000000 AND EDX,0FF====>取两位。

0042A5A8 |. 3BC2 CMP EAX,EDX====>EDX的值是否等于第四部分假码的第1位的ASSII值67。

0042A5AA |. 74 09 JE SHORT TurboPho.0042A5B5====>相等则跳,否则GAME OVER!

0042A5AC |. 5F POP EDI

0042A5AD |. 5E POP ESI

0042A5AE |. 5D POP EBP

0042A5AF |. 33C0 XOR EAX,EAX

0042A5B1 |. 5B POP EBX

0042A5B2 |. C2 1000 RETN 10

0042A5B5 |> 0FBE53 02 MOVSX EDX,BYTE PTR DS:[EBX+2]====>取第二部分假码的第3位的ASSII值38。

0042A5B9 |. 0FBE43 03 MOVSX EAX,BYTE PTR DS:[EBX+3]====>取第二部分假码的第4位的ASSII值39。

0042A5BD |. 895424 18 MOV DWORD PTR SS:[ESP+18],EDX====>保存第二部分假码的第3位的ASSII值38。

0042A5C1 |. BF 03000000 MOV EDI,3

0042A5C6 |. 99 CDQ

0042A5C7 |. F7FF IDIV EDI====>除以3。EAX=13,EDX=0。

0042A5C9 |. 0FBE43 04 MOVSX EAX,BYTE PTR DS:[EBX+4]====>取第二部分假码的第5位的ASSII值30。

0042A5CD |. 0FBE4E 01 MOVSX ECX,BYTE PTR DS:[ESI+1]====>取第四部分假码的第2位的ASSII值68。

0042A5D1 |. 8D3C80 LEA EDI,DWORD PTR DS:[EAX+EAX*4]====>EDI=EAX+EAX*4=F0。

0042A5D4 |. 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18]====>第二部分假码的第3位的ASSII值38移入EAX。

0042A5D8 |. 03C2 ADD EAX,EDX====>EAX=EAX+EDX=38+0=38。

0042A5DA |. 0FBE13 MOVSX EDX,BYTE PTR DS:[EBX]====>取第二部分假码的第1位的ASSII值36。

0042A5DD |. 03F8 ADD EDI,EAX====>EDI=EDI+EAX=F0+38=128。

0042A5DF |. 0FBE43 01 MOVSX EAX,BYTE PTR DS:[EBX+1]====>取第二部分假码的第2位的ASSII值37。

0042A5E3 |. 8D1457 LEA EDX,DWORD PTR DS:[EDI+EDX*2]====>EDX=EDI+EDX*2=128+36*2=194。

0042A5E6 |. BF 1A000000 MOV EDI,1A

0042A5EB |. 03C2 ADD EAX,EDX====>EAX=37+194=1CB。

0042A5ED |. 99 CDQ

0042A5EE |. F7FF IDIV EDI====>除以1A。EAX=11,EDX=11。

0042A5F0 |. 80C2 41 ADD DL,41====>DL=11+41=52。

0042A5F3 |. 81E2 FF000000 AND EDX,0FF====>取两位。

0042A5F9 |. 3BCA CMP ECX,EDX====>EDX的值是否等于第四部分假码的第2位的ASSII值68。

0042A5FB |. 74 09 JE SHORT TurboPho.0042A606====>相等则跳,否则GAME OVER!

0042A5FD |. 5F POP EDI

0042A5FE |. 5E POP ESI

0042A5FF |. 5D POP EBP

0042A600 |. 33C0 XOR EAX,EAX

0042A602 |. 5B POP EBX

0042A603 |. C2 1000 RETN 10

0042A606 |> 0FBE55 03 MOVSX EDX,BYTE PTR SS:[EBP+3]====>取第三部分假码的第4位的ASSII值64。

0042A60A |. BF 1A000000 MOV EDI,1A

0042A60F |. 8D0452 LEA EAX,DWORD PTR DS:[EDX+EDX*2]====>EAX=EDX*3=12C。

0042A612 |. C1E0 03 SHL EAX,3====>左移3,EAX=960。

0042A615 |. 2BC2 SUB EAX,EDX====>EAX=EAX-64=8FC。

0042A617 |. 0FBE55 05 MOVSX EDX,BYTE PTR SS:[EBP+5]====>取第三部分假码的第6位的ASSII值66。

0042A61B |. 03C2 ADD EAX,EDX====>EAX=FC+66=962。

0042A61D |. 0FBE55 00 MOVSX EDX,BYTE PTR SS:[EBP]====>取第三部分假码的第1位的ASSII值61。

0042A621 |. 03C2 ADD EAX,EDX====>EAX=962+61=9C3。

0042A623 |. 99 CDQ

0042A624 |. F7FF IDIV EDI====>除以1A。EAX=60,EDX=3。

0042A626 |. 0FBE5E 02 MOVSX EBX,BYTE PTR DS:[ESI+2]====>取第四部分假码的第3位的ASSII值69。

0042A62A |. 80C2 41 ADD DL,41====>DL=3+41=44。

0042A62D |. 81E2 FF000000 AND EDX,0FF====>取两位。

0042A633 |. 3BDA CMP EBX,EDX====>EDX是否等于第四部分假码的第3位的ASSII值69。

0042A635 |. 74 09 JE SHORT TurboPho.0042A640====>相等则跳,否则GAME OVER!

0042A637 |. 5F POP EDI

0042A638 |. 5E POP ESI

0042A639 |. 5D POP EBP

0042A63A |. 33C0 XOR EAX,EAX

0042A63C |. 5B POP EBX

0042A63D |. C2 1000 RETN 10

0042A640 |> 0FBE45 01 MOVSX EAX,BYTE PTR SS:[EBP+1]====>取第三部分假码的第2位的ASSII值62。

0042A644 |. 0FBE7E 03 MOVSX EDI,BYTE PTR DS:[ESI+3]====>取第四部分假码的第4位的ASSII值6A。

0042A648 |. 8D14C5 000000>LEA EDX,DWORD PTR DS:[EAX*8]====>EDX=62*8=310。

0042A64F |. 2BD0 SUB EDX,EAX====>EDX=310-62=2AE。

0042A651 |. 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14]====>第一部分假码12345移入EAX。

0042A655 |. 895424 14 MOV DWORD PTR SS:[ESP+14],EDX====>保存EDX。

0042A659 |. 0FBE50 03 MOVSX EDX,BYTE PTR DS:[EAX+3]====>取第一部分假码的第4位的ASSII值34。

0042A65D |. 035424 18 ADD EDX,DWORD PTR SS:[ESP+18]====>EDX=34+第二部分假码的第3位的ASSII值38=6C。

0042A661 |. 0FBE45 02 MOVSX EAX,BYTE PTR SS:[EBP+2]====>取第三部分假码的第3位的ASSII值63。

0042A665 |. 8B6C24 14 MOV EBP,DWORD PTR SS:[ESP+14]====>将原保存的2AE移入EBP。

0042A669 |. 03D5 ADD EDX,EBP====>EDX=6C+2AE=31A。

0042A66B |. BD 1A000000 MOV EBP,1A

0042A670 |. 03C2 ADD EAX,EDX====>EAX=63+31A=37D。

0042A672 |. 99 CDQ

0042A673 |. F7FD IDIV EBP====>除以1A。EAX=22,EDX=9。

0042A675 |. 80C2 41 ADD DL,41====>DL=9+41=4A。

0042A678 |. 81E2 FF000000 AND EDX,0FF====>取两位。

0042A67E |. 3BFA CMP EDI,EDX====>EDX是否等于第四部分假码的第4位ASSII值6A。

0042A680 |. 74 09 JE SHORT TurboPho.0042A68B====>相等则跳,否则GAME OVER!

0042A682 |. 5F POP EDI

0042A683 |. 5E POP ESI

0042A684 |. 5D POP EBP

0042A685 |. 33C0 XOR EAX,EAX

0042A687 |. 5B POP EBX

0042A688 |. C2 1000 RETN 10

0042A68B |> 0FBE06 MOVSX EAX,BYTE PTR DS:[ESI]====>取第四部分假码的第1位的ASSII值59。

0042A68E |. 8D148B LEA EDX,DWORD PTR DS:[EBX+ECX*4]====>EDX=44+52*4=18C。

0042A691 |. 03CA ADD ECX,EDX====>ECX=52+18C=1DE。

0042A693 |. 8D0440 LEA EAX,DWORD PTR DS:[EAX+EAX*2]====>EAX=59*3=10B。

0042A696 |. 8D0C79 LEA ECX,DWORD PTR DS:[ECX+EDI*2]====>ECX=1DE+4A*2=272。

0042A699 |. 5F POP EDI====>出栈。

0042A69A |. 03C1 ADD EAX,ECX====>EAX=10B+272=37D。

0042A69C |. B9 1A000000 MOV ECX,1A

0042A6A1 |. 99 CDQ

0042A6A2 |. F7F9 IDIV ECX====>除以1A。EAX=22,EDX=9。

0042A6A4 |. 0FBE46 04 MOVSX EAX,BYTE PTR DS:[ESI+4]====>取第四部分假码的第5位的ASSII值6B。

0042A6A8 |. 33C9 XOR ECX,ECX

0042A6AA |. 5E POP ESI

0042A6AB |. 5D POP EBP

0042A6AC |. 5B POP EBX

0042A6AD |. 80C2 41 ADD DL,41====>DL=9+41=4A。

0042A6B0 |. 81E2 FF000000 AND EDX,0FF====>取两位。

0042A6B6 |. 3BC2 CMP EAX,EDX====>EDX是否等于第四部分假码的第5位ASSII值6B。相等则注册成功。否则失败。

0042A6B8 |. 0F94C1 SETE CL

0042A6BB |. 8BC1 MOV EAX,ECX

0042A6BD \. C2 1000 RETN 10

0042A6C0 /$ 8D81 5B020000 LEA EAX,DWORD PTR DS:[ECX+25B]

0042A6C6 |. 8D91 54020000 LEA EDX,DWORD PTR DS:[ECX+254]

0042A6CC |. 50 PUSH EAX

0042A6CD |. 52 PUSH EDX

0042A6CE |. 8D81 4E020000 LEA EAX,DWORD PTR DS:[ECX+24E]

0042A6D4 |. 8D91 48020000 LEA EDX,DWORD PTR DS:[ECX+248]

0042A6DA |. 50 PUSH EAX

0042A6DB |. 52 PUSH EDX

0042A6DC |. E8 0FFEFFFF CALL TurboPho.0042A4F0

0042A6E1 \. C3 RETN

总结:注册码前三部分可以任意,但位数有规定。第四部分是根据前三部分的字符计算出来的。 本例的试验码12345-67890-abcdef-ghijk的后5位应改为YRDJJ。为什么请各位自己看吧!

相关资讯:

·语音界面2.0算法分析及注册机源码!

·侠客系统修改器1.21破解手记--算法分析

·中文拨号上网计时计费器 V4.12注册算法分析

·ClockWise 3.22e注册码算法分析

·CoolClock V1.02注册算法分析

·Directory Scanner v1.5 注册算法分析

·Disk Chief 1.2 简单注册算法分析

·EffeTech HTTP Sniffer 3.2注册算法分析

·eLib2.01算法分析

·EZ MP3 Recorder 1.15 注册算法分析

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)|

广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright (C) 1998-2004 winzheng.com All Rights Reserved.

特别感谢 蓝芒科技 提供下载站及论坛服务器

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史