-
您的位置:首页 → 精文荟萃 → 破解文章 → TurboPho v2.50 算法分析
TurboPho v2.50 算法分析
时间:2004/10/15 0:57:00来源:本站整理作者:蓝点我要评论(0)
-
下载地址: 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。为什么请各位自己看吧!
|
相关阅读
Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
-
热门文章
去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>