tianxj 发表于 2009-5-20 20:54

Super Fax Search 1.91 算法分析

【破文标题】Super Fax Search 1.91 算法分析
【破文作者】tianxj
【作者邮箱】tianxj_2007@126.com
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】Windows XP sp2
【软件名称】Super Fax Search 1.91
【软件大小】1799KB
【软件类别】国外软件/搜寻引擎
【软件授权】共享版
【软件语言】英文
【运行环境】Win9x/Me/NT/2000/XP/2003
【更新时间】2009-5-11 11:11:48
【原版下载】http://www.onlinedown.net/soft/61639.htm
【保护方式】注册码
【软件简介】是一款传真号码搜索软件,你可以使用关键字快速方便的建立商业传真号码列表,它能够在Internet上寻找和提取传真号码。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"Sorry,the license name and register key you input doesn't match."
**************************************************************
二、用PEiD对XSearcher.exe查壳,为 Borland Delphi 6.0 - 7.0
**************************************************************
三、运行OD,利用断点bp MessageBoxA来到关键
==============================================================
005C4658    55            PUSH    EBP
005C4659    8BEC            MOV   EBP, ESP
005C465B    B9 07000000   MOV   ECX, 7
005C4660    6A 00         PUSH    0
005C4662    6A 00         PUSH    0
005C4664    49            DEC   ECX
005C4665^ 75 F9         JNZ   SHORT XSearche.005C4660
005C4667    8955 F8         MOV   DWORD PTR SS:, EDX
005C466A    8945 FC         MOV   DWORD PTR SS:, EAX
005C466D    33C0            XOR   EAX, EAX
005C466F    55            PUSH    EBP
005C4670    68 69485C00   PUSH    XSearche.005C4869
005C4675    64:FF30         PUSH    DWORD PTR FS:
005C4678    64:8920         MOV   DWORD PTR FS:, ESP
005C467B    8D55 F0         LEA   EDX, DWORD PTR SS:
005C467E    8B45 FC         MOV   EAX, DWORD PTR SS:
005C4681    8B80 10030000   MOV   EAX, DWORD PTR DS:
005C4687    E8 ACDDEBFF   CALL    XSearche.00482438
005C468C    8B45 F0         MOV   EAX, DWORD PTR SS:
005C468F    8D55 F4         LEA   EDX, DWORD PTR SS:
005C4692    E8 494BE4FF   CALL    XSearche.004091E0
005C4697    837D F4 00      CMP   DWORD PTR SS:, 0
005C469B    0F84 78010000   JE      XSearche.005C4819                ; //试炼码为空则跳
005C46A1    8D55 E8         LEA   EDX, DWORD PTR SS:
005C46A4    8B45 FC         MOV   EAX, DWORD PTR SS:
005C46A7    8B80 08030000   MOV   EAX, DWORD PTR DS:
005C46AD    E8 86DDEBFF   CALL    XSearche.00482438
005C46B2    8B45 E8         MOV   EAX, DWORD PTR SS:
005C46B5    8D55 EC         LEA   EDX, DWORD PTR SS:
005C46B8    E8 234BE4FF   CALL    XSearche.004091E0
005C46BD    837D EC 00      CMP   DWORD PTR SS:, 0
005C46C1    0F84 52010000   JE      XSearche.005C4819                ; //用户名为空则跳
005C46C7    8D55 E0         LEA   EDX, DWORD PTR SS:
005C46CA    8B45 FC         MOV   EAX, DWORD PTR SS:
005C46CD    8B80 10030000   MOV   EAX, DWORD PTR DS:
005C46D3    E8 60DDEBFF   CALL    XSearche.00482438
005C46D8    8B45 E0         MOV   EAX, DWORD PTR SS:
005C46DB    8D55 E4         LEA   EDX, DWORD PTR SS:
005C46DE    E8 FD4AE4FF   CALL    XSearche.004091E0
005C46E3    8B45 E4         MOV   EAX, DWORD PTR SS:
005C46E6    50            PUSH    EAX
005C46E7    8D55 DC         LEA   EDX, DWORD PTR SS:
005C46EA    8B45 FC         MOV   EAX, DWORD PTR SS:
005C46ED    8B80 08030000   MOV   EAX, DWORD PTR DS:
005C46F3    E8 40DDEBFF   CALL    XSearche.00482438
005C46F8    8B55 DC         MOV   EDX, DWORD PTR SS:
005C46FB    A1 D8E25C00   MOV   EAX, DWORD PTR DS:
005C4700    8B00            MOV   EAX, DWORD PTR DS:
005C4702    8B80 A4030000   MOV   EAX, DWORD PTR DS:
005C4708    33C9            XOR   ECX, ECX
005C470A    E8 0DE3F6FF   CALL    XSearche.00532A1C                ; //关键CALL
005C470F    84C0            TEST    AL, AL
005C4711    0F84 84000000   JE      XSearche.005C479B
005C4717    A1 90E05C00   MOV   EAX, DWORD PTR DS:
005C471C    C600 01         MOV   BYTE PTR DS:, 1
005C471F    A1 50E75C00   MOV   EAX, DWORD PTR DS:
005C4724    8B00            MOV   EAX, DWORD PTR DS:
005C4726    C740 1C 204E000>MOV   DWORD PTR DS:, 4E20
005C472D    A1 50E75C00   MOV   EAX, DWORD PTR DS:
005C4732    8B00            MOV   EAX, DWORD PTR DS:
005C4734    E8 F3100000   CALL    XSearche.005C582C
005C4739    6A 40         PUSH    40
005C473B    8D55 D8         LEA   EDX, DWORD PTR SS:
005C473E    A1 A4E45C00   MOV   EAX, DWORD PTR DS:
005C4743    8B00            MOV   EAX, DWORD PTR DS:
005C4745    E8 1ADBEDFF   CALL    XSearche.004A2264
005C474A    8B45 D8         MOV   EAX, DWORD PTR SS:
005C474D    E8 B205E4FF   CALL    XSearche.00404D04
005C4752    50            PUSH    EAX
005C4753    8D55 D4         LEA   EDX, DWORD PTR SS:
005C4756    A1 E0E45C00   MOV   EAX, DWORD PTR DS:
005C475B    E8 C424E4FF   CALL    XSearche.00406C24
005C4760    8B45 D4         MOV   EAX, DWORD PTR SS:
005C4763    E8 9C05E4FF   CALL    XSearche.00404D04
005C4768    8BD0            MOV   EDX, EAX
005C476A    A1 A4E45C00   MOV   EAX, DWORD PTR DS:
005C476F    8B00            MOV   EAX, DWORD PTR DS:
005C4771    59            POP   ECX
005C4772    E8 55E1EDFF   CALL    XSearche.004A28CC
005C4777    8B15 90E05C00   MOV   EDX, DWORD PTR DS:       ; XSearche.005D1F94
005C477D    8A12            MOV   DL, BYTE PTR DS:
005C477F    A1 D8E25C00   MOV   EAX, DWORD PTR DS:
005C4784    8B00            MOV   EAX, DWORD PTR DS:
005C4786    8B80 04040000   MOV   EAX, DWORD PTR DS:
005C478C    E8 C756FEFF   CALL    XSearche.005A9E58
005C4791    8B45 FC         MOV   EAX, DWORD PTR SS:
005C4794    E8 DFA8EDFF   CALL    XSearche.0049F078
005C4799    EB 3C         JMP   SHORT XSearche.005C47D7
005C479B    6A 10         PUSH    10
005C479D    8D55 D0         LEA   EDX, DWORD PTR SS:
005C47A0    A1 14DF5C00   MOV   EAX, DWORD PTR DS:
005C47A5    E8 7A24E4FF   CALL    XSearche.00406C24
005C47AA    8B45 D0         MOV   EAX, DWORD PTR SS:
005C47AD    E8 5205E4FF   CALL    XSearche.00404D04
005C47B2    50            PUSH    EAX
005C47B3    8D55 CC         LEA   EDX, DWORD PTR SS:
005C47B6    A1 F8DF5C00   MOV   EAX, DWORD PTR DS:
005C47BB    E8 6424E4FF   CALL    XSearche.00406C24
005C47C0    8B45 CC         MOV   EAX, DWORD PTR SS:
005C47C3    E8 3C05E4FF   CALL    XSearche.00404D04
005C47C8    8BD0            MOV   EDX, EAX
005C47CA    A1 A4E45C00   MOV   EAX, DWORD PTR DS:
005C47CF    8B00            MOV   EAX, DWORD PTR DS:
005C47D1    59            POP   ECX
005C47D2    E8 F5E0EDFF   CALL    XSearche.004A28CC                ; //错误对话框
005C47D7    A1 D8E25C00   MOV   EAX, DWORD PTR DS:
005C47DC    8B00            MOV   EAX, DWORD PTR DS:
005C47DE    8B80 A4030000   MOV   EAX, DWORD PTR DS:
005C47E4    FF70 48         PUSH    DWORD PTR DS:
005C47E7    68 7C485C00   PUSH    XSearche.005C487C
005C47EC    A1 D8E25C00   MOV   EAX, DWORD PTR DS:
005C47F1    8B00            MOV   EAX, DWORD PTR DS:
005C47F3    8B80 A4030000   MOV   EAX, DWORD PTR DS:
005C47F9    FF70 5C         PUSH    DWORD PTR DS:
005C47FC    8D45 C8         LEA   EAX, DWORD PTR SS:
005C47FF    BA 03000000   MOV   EDX, 3
005C4804    E8 C303E4FF   CALL    XSearche.00404BCC
005C4809    8B45 C8         MOV   EAX, DWORD PTR SS:
005C480C    8B15 90E05C00   MOV   EDX, DWORD PTR DS:       ; XSearche.005D1F94
005C4812    8A12            MOV   DL, BYTE PTR DS:
005C4814    E8 5F5AFEFF   CALL    XSearche.005AA278
005C4819    33C0            XOR   EAX, EAX
005C481B    5A            POP   EDX
005C481C    59            POP   ECX
005C481D    59            POP   ECX
005C481E    64:8910         MOV   DWORD PTR FS:, EDX
005C4821    68 70485C00   PUSH    XSearche.005C4870
005C4826    8D45 C8         LEA   EAX, DWORD PTR SS:
005C4829    BA 05000000   MOV   EDX, 5
005C482E    E8 1900E4FF   CALL    XSearche.0040484C
005C4833    8D45 DC         LEA   EAX, DWORD PTR SS:
005C4836    BA 02000000   MOV   EDX, 2
005C483B    E8 0C00E4FF   CALL    XSearche.0040484C
005C4840    8D45 E4         LEA   EAX, DWORD PTR SS:
005C4843    E8 E0FFE3FF   CALL    XSearche.00404828
005C4848    8D45 E8         LEA   EAX, DWORD PTR SS:
005C484B    E8 D8FFE3FF   CALL    XSearche.00404828
005C4850    8D45 EC         LEA   EAX, DWORD PTR SS:
005C4853    E8 D0FFE3FF   CALL    XSearche.00404828
005C4858    8D45 F0         LEA   EAX, DWORD PTR SS:
005C485B    E8 C8FFE3FF   CALL    XSearche.00404828
005C4860    8D45 F4         LEA   EAX, DWORD PTR SS:
005C4863    E8 C0FFE3FF   CALL    XSearche.00404828
005C4868    C3            RETN
005C4869^ E9 7AF8E3FF   JMP   XSearche.004040E8
005C486E^ EB B6         JMP   SHORT XSearche.005C4826
005C4870    8BE5            MOV   ESP, EBP
005C4872    5D            POP   EBP
005C4873    C3            RETN
==============================================================
00532A1C    55            PUSH    EBP
00532A1D    8BEC            MOV   EBP, ESP
00532A1F    83C4 E8         ADD   ESP, -18
00532A22    53            PUSH    EBX
00532A23    33DB            XOR   EBX, EBX
00532A25    895D E8         MOV   DWORD PTR SS:, EBX
00532A28    895D EC         MOV   DWORD PTR SS:, EBX
00532A2B    894D F4         MOV   DWORD PTR SS:, ECX
00532A2E    8955 F8         MOV   DWORD PTR SS:, EDX
00532A31    8945 FC         MOV   DWORD PTR SS:, EAX
00532A34    8B45 F8         MOV   EAX, DWORD PTR SS:
00532A37    E8 B822EDFF   CALL    XSearche.00404CF4
00532A3C    8B45 F4         MOV   EAX, DWORD PTR SS:
00532A3F    E8 B022EDFF   CALL    XSearche.00404CF4
00532A44    8B45 08         MOV   EAX, DWORD PTR SS:
00532A47    E8 A822EDFF   CALL    XSearche.00404CF4
00532A4C    33C0            XOR   EAX, EAX
00532A4E    55            PUSH    EBP
00532A4F    68 2B2B5300   PUSH    XSearche.00532B2B
00532A54    64:FF30         PUSH    DWORD PTR FS:
00532A57    64:8920         MOV   DWORD PTR FS:, ESP
00532A5A    8B45 F8         MOV   EAX, DWORD PTR SS:
00532A5D    E8 AA20EDFF   CALL    XSearche.00404B0C
00532A62    8B55 FC         MOV   EDX, DWORD PTR SS:
00532A65    3B42 4C         CMP   EAX, DWORD PTR DS:
00532A68    7F 1C         JG      SHORT XSearche.00532A86          ; //用户名长度大于100则跳
00532A6A    8B45 F8         MOV   EAX, DWORD PTR SS:
00532A6D    E8 9A20EDFF   CALL    XSearche.00404B0C
00532A72    8B55 FC         MOV   EDX, DWORD PTR SS:
00532A75    3B42 50         CMP   EAX, DWORD PTR DS:
00532A78    7C 0C         JL      SHORT XSearche.00532A86          ; //用户名长度小于3则跳
00532A7A    8B45 08         MOV   EAX, DWORD PTR SS:
00532A7D    E8 8A20EDFF   CALL    XSearche.00404B0C
00532A82    85C0            TEST    EAX, EAX
00532A84    75 06         JNZ   SHORT XSearche.00532A8C
00532A86    C645 F3 00      MOV   BYTE PTR SS:, 0
00532A8A    EB 6F         JMP   SHORT XSearche.00532AFB
00532A8C    8D55 EC         LEA   EDX, DWORD PTR SS:
00532A8F    8B45 08         MOV   EAX, DWORD PTR SS:
00532A92    E8 D964EDFF   CALL    XSearche.00408F70
00532A97    8B55 EC         MOV   EDX, DWORD PTR SS:
00532A9A    8D45 08         LEA   EAX, DWORD PTR SS:
00532A9D    E8 1E1EEDFF   CALL    XSearche.004048C0
00532AA2    8D4D E8         LEA   ECX, DWORD PTR SS:
00532AA5    8B55 F8         MOV   EDX, DWORD PTR SS:      ; //用户名
00532AA8    8B45 FC         MOV   EAX, DWORD PTR SS:
00532AAB    E8 D4FBFFFF   CALL    XSearche.00532684                ; //算法CALL
00532AB0    8B45 E8         MOV   EAX, DWORD PTR SS:       ; //注册码
00532AB3    8B55 08         MOV   EDX, DWORD PTR SS:      ; //试炼码
00532AB6    E8 2D65EDFF   CALL    XSearche.00408FE8                ; //比较CALL
00532ABB    85C0            TEST    EAX, EAX
00532ABD    74 06         JE      SHORT XSearche.00532AC5          ; //关键跳转
00532ABF    C645 F3 00      MOV   BYTE PTR SS:, 0
00532AC3    EB 36         JMP   SHORT XSearche.00532AFB
00532AC5    8B45 FC         MOV   EAX, DWORD PTR SS:
00532AC8    83C0 48         ADD   EAX, 48
00532ACB    8B55 F8         MOV   EDX, DWORD PTR SS:
00532ACE    E8 A91DEDFF   CALL    XSearche.0040487C
00532AD3    8B45 FC         MOV   EAX, DWORD PTR SS:
00532AD6    83C0 54         ADD   EAX, 54
00532AD9    8B55 F4         MOV   EDX, DWORD PTR SS:
00532ADC    E8 9B1DEDFF   CALL    XSearche.0040487C
00532AE1    8B45 FC         MOV   EAX, DWORD PTR SS:
00532AE4    83C0 5C         ADD   EAX, 5C
00532AE7    8B55 08         MOV   EDX, DWORD PTR SS:
00532AEA    E8 8D1DEDFF   CALL    XSearche.0040487C
00532AEF    8B45 FC         MOV   EAX, DWORD PTR SS:
00532AF2    E8 49020000   CALL    XSearche.00532D40
00532AF7    C645 F3 01      MOV   BYTE PTR SS:, 1
00532AFB    33C0            XOR   EAX, EAX
00532AFD    5A            POP   EDX
00532AFE    59            POP   ECX
00532AFF    59            POP   ECX
00532B00    64:8910         MOV   DWORD PTR FS:, EDX
00532B03    68 322B5300   PUSH    XSearche.00532B32
00532B08    8D45 E8         LEA   EAX, DWORD PTR SS:
00532B0B    BA 02000000   MOV   EDX, 2
00532B10    E8 371DEDFF   CALL    XSearche.0040484C
00532B15    8D45 F4         LEA   EAX, DWORD PTR SS:
00532B18    BA 02000000   MOV   EDX, 2
00532B1D    E8 2A1DEDFF   CALL    XSearche.0040484C
00532B22    8D45 08         LEA   EAX, DWORD PTR SS:
00532B25    E8 FE1CEDFF   CALL    XSearche.00404828
00532B2A    C3            RETN
00532B2B^ E9 B815EDFF   JMP   XSearche.004040E8
00532B30^ EB D6         JMP   SHORT XSearche.00532B08
00532B32    8A45 F3         MOV   AL, BYTE PTR SS:
00532B35    5B            POP   EBX
00532B36    8BE5            MOV   ESP, EBP
00532B38    5D            POP   EBP
00532B39    C2 0400         RETN    4
==============================================================
00532684    55            PUSH    EBP
00532685    8BEC            MOV   EBP, ESP
00532687    83C4 DC         ADD   ESP, -24
0053268A    53            PUSH    EBX
0053268B    33DB            XOR   EBX, EBX
0053268D    895D DC         MOV   DWORD PTR SS:, EBX
00532690    895D E8         MOV   DWORD PTR SS:, EBX
00532693    894D F4         MOV   DWORD PTR SS:, ECX
00532696    8955 F8         MOV   DWORD PTR SS:, EDX
00532699    8945 FC         MOV   DWORD PTR SS:, EAX
0053269C    8B45 F8         MOV   EAX, DWORD PTR SS:      ; //用户名
0053269F    E8 5026EDFF   CALL    XSearche.00404CF4
005326A4    33C0            XOR   EAX, EAX
005326A6    55            PUSH    EBP
005326A7    68 C2275300   PUSH    XSearche.005327C2
005326AC    64:FF30         PUSH    DWORD PTR FS:
005326AF    64:8920         MOV   DWORD PTR FS:, ESP
005326B2    8B45 F8         MOV   EAX, DWORD PTR SS:
005326B5    E8 5224EDFF   CALL    XSearche.00404B0C
005326BA    8B55 FC         MOV   EDX, DWORD PTR SS:
005326BD    3B42 4C         CMP   EAX, DWORD PTR DS:
005326C0    7F 10         JG      SHORT XSearche.005326D2          ; //用户名长度大于100则跳
005326C2    8B45 F8         MOV   EAX, DWORD PTR SS:
005326C5    E8 4224EDFF   CALL    XSearche.00404B0C
005326CA    8B55 FC         MOV   EDX, DWORD PTR SS:
005326CD    3B42 50         CMP   EAX, DWORD PTR DS:
005326D0    7D 0D         JGE   SHORT XSearche.005326DF          ; //用户名长度大于等于3则跳
005326D2    8B45 F4         MOV   EAX, DWORD PTR SS:
005326D5    E8 4E21EDFF   CALL    XSearche.00404828
005326DA    E9 BD000000   JMP   XSearche.0053279C
005326DF    8B45 F8         MOV   EAX, DWORD PTR SS:      ; //用户名
005326E2    E8 2524EDFF   CALL    XSearche.00404B0C                ; //取用户名长度
005326E7    8945 F0         MOV   DWORD PTR SS:, EAX       ; //保存用户名长度
005326EA    EB 39         JMP   SHORT XSearche.00532725
005326EC    8B45 F8         MOV   EAX, DWORD PTR SS:
005326EF    8B55 F0         MOV   EDX, DWORD PTR SS:       ; //用户名
005326F2    8A4410 FF       MOV   AL, BYTE PTR DS:      ; //倒取用户名ASCII码
005326F6    25 FF000000   AND   EAX, 0FF
005326FB    33D2            XOR   EDX, EDX
005326FD    52            PUSH    EDX
005326FE    50            PUSH    EAX
005326FF    8B45 FC         MOV   EAX, DWORD PTR SS:
00532702    8B50 6C         MOV   EDX, DWORD PTR DS:
00532705    8B40 68         MOV   EAX, DWORD PTR DS:       ; //0F41292E
00532708    E8 3733EDFF   CALL    XSearche.00405A44                ; //将0F41292E与所取字符的ASCII码取余
0053270D    52            PUSH    EDX
0053270E    50            PUSH    EAX
0053270F    8D45 DC         LEA   EAX, DWORD PTR SS:
00532712    E8 7D6EEDFF   CALL    XSearche.00409594                ; //将余数转10进制字符
00532717    8B55 DC         MOV   EDX, DWORD PTR SS:
0053271A    8D45 E8         LEA   EAX, DWORD PTR SS:
0053271D    E8 F223EDFF   CALL    XSearche.00404B14                ; //将字符相连
00532722    FF4D F0         DEC   DWORD PTR SS:
00532725    8B45 F8         MOV   EAX, DWORD PTR SS:
00532728    E8 DF23EDFF   CALL    XSearche.00404B0C
0053272D    83E8 06         SUB   EAX, 6
00532730    3B45 F0         CMP   EAX, DWORD PTR SS:
00532733    7F 06         JG      SHORT XSearche.0053273B          ; //大于则跳出循环
00532735    837D F0 00      CMP   DWORD PTR SS:, 0
00532739^ 7F B1         JG      SHORT XSearche.005326EC          ; //循环
0053273B    8D55 EC         LEA   EDX, DWORD PTR SS:
0053273E    8B45 E8         MOV   EAX, DWORD PTR SS:
00532741    E8 0A34EDFF   CALL    XSearche.00405B50
00532746    8945 E0         MOV   DWORD PTR SS:, EAX
00532749    8955 E4         MOV   DWORD PTR SS:, EDX
0053274C    8B45 FC         MOV   EAX, DWORD PTR SS:
0053274F    8378 60 00      CMP   DWORD PTR DS:, 0
00532753    7F 12         JG      SHORT XSearche.00532767
00532755    FF75 E4         PUSH    DWORD PTR SS:
00532758    FF75 E0         PUSH    DWORD PTR SS:
0053275B    8B55 F4         MOV   EDX, DWORD PTR SS:
0053275E    33C0            XOR   EAX, EAX
00532760    E8 9F6EEDFF   CALL    XSearche.00409604
00532765    EB 35         JMP   SHORT XSearche.0053279C
00532767    FF75 E4         PUSH    DWORD PTR SS:
0053276A    FF75 E0         PUSH    DWORD PTR SS:
0053276D    8B55 F4         MOV   EDX, DWORD PTR SS:
00532770    8B45 FC         MOV   EAX, DWORD PTR SS:
00532773    8B40 60         MOV   EAX, DWORD PTR DS:
00532776    E8 896EEDFF   CALL    XSearche.00409604                ; //相连字符串转为12位的16进制
0053277B    8B45 F4         MOV   EAX, DWORD PTR SS:
0053277E    8B00            MOV   EAX, DWORD PTR DS:          ; //注册码
00532780    E8 8723EDFF   CALL    XSearche.00404B0C
00532785    8BC8            MOV   ECX, EAX
00532787    8B45 FC         MOV   EAX, DWORD PTR SS:
0053278A    2B48 60         SUB   ECX, DWORD PTR DS:
0053278D    8B45 FC         MOV   EAX, DWORD PTR SS:
00532790    8B50 60         MOV   EDX, DWORD PTR DS:
00532793    42            INC   EDX
00532794    8B45 F4         MOV   EAX, DWORD PTR SS:
00532797    E8 0826EDFF   CALL    XSearche.00404DA4
0053279C    33C0            XOR   EAX, EAX
0053279E    5A            POP   EDX
0053279F    59            POP   ECX
005327A0    59            POP   ECX
005327A1    64:8910         MOV   DWORD PTR FS:, EDX
005327A4    68 C9275300   PUSH    XSearche.005327C9
005327A9    8D45 DC         LEA   EAX, DWORD PTR SS:
005327AC    E8 7720EDFF   CALL    XSearche.00404828
005327B1    8D45 E8         LEA   EAX, DWORD PTR SS:
005327B4    E8 6F20EDFF   CALL    XSearche.00404828
005327B9    8D45 F8         LEA   EAX, DWORD PTR SS:
005327BC    E8 6720EDFF   CALL    XSearche.00404828
005327C1    C3            RETN
005327C2^ E9 2119EDFF   JMP   XSearche.004040E8
005327C7^ EB E0         JMP   SHORT XSearche.005327A9
005327C9    5B            POP   EBX
005327CA    8BE5            MOV   ESP, EBP
005327CC    5D            POP   EBP
005327CD    C3            RETN
**************************************************************
【破解总结】
--------------------------------------------------------------
【算法总结】
以"tianxj"为例
0F41292E与6A ('j')取余得"66",转10进制为"102"
0F41292E与78 ('x')取余得"3E",转10进制为"62"
0F41292E与6E ('n')取余得"5C",转10进制为"92"
0F41292E与61 ('a')取余得"27",转10进制为"39"
0F41292E与69 ('i')取余得"2F",转10进制为"47"
0F41292E与74 ('t')取余得"1A",转10进制为"26"

将"102"、"62"、"92"、"39"、"47"和"26"相连得"1026292394726"

将"1026292394726"转16进制为"EEF3CB2AE6"

补足12位就得到注册码"00EEF3CB2AE6"
--------------------------------------------------------------
【算法注册机】
〖易语言代码〗
.版本 2
.支持库 eCalc

.子程序 _按钮1_被单击
.局部变量 name, 文本型
.局部变量 a, 整数型
.局部变量 b, 整数型
.局部变量 c, 文本型
.局部变量 d, 文本型
.局部变量 len, 整数型
.局部变量 i, 整数型

name = 编辑框1.内容
len = 取文本长度 (name)
.如果 (len < 3 或 len > 100)
    编辑框2.内容 = “输入有误,请重新输入!”
.否则

    .计次循环首 (len, i)
      a = 取代码 (name, len - i + 1)
      b = 255928622 % a
      c = c + 到文本 (b)
      .如果真 (i = 7)
            跳出循环 ()
      .如果真结束

    .计次循环尾 ()
    d = 进制转换 (c, 10, 16)
    .如果 (取文本长度 (d) < 12)
      编辑框2.内容 = 取文本右边 (“000000000000” + d, 12)
    .否则
      编辑框2.内容 = d
    .如果结束

.如果结束


.子程序 进制转换, 文本型, , 进行转换的子程序
.参数 被转换文本, 文本型
.参数 被转换进制, 整数型
.参数 转换的进制, 整数型
.局部变量 欲转换文本, 文本型, , , 输入的文本串
.局部变量 临时文本, 文本型, , , 存放从输入的文本串中取出的一个文本
.局部变量 临时数值, 长整数型
.局部变量 计次变量1, 整数型
.局部变量 计次变量2, 整数型
.局部变量 次方数, 大数, , , 每一位数字对应的10的次方数
.局部变量 转换的进制大数1, 大数, , , 要转换的进制-1
.局部变量 转换的进制大数, 大数, , , 要转换的进制
.局部变量 被转换进制大数, 大数, , , 被转换的进制
.局部变量 临时大数, 大数, , , 将被转换数字转换成的大数
.局部变量 余数大数, 大数, , , 存放求出的余数大数
.局部变量 数值1大数, 大数, , , 只存放1
.局部变量 临时大数1, 大数, , , 将被转换数字的每一位转换成的大数
.局部变量 临时变量, 整数型

.如果真 (被转换进制 < 2 或 转换的进制 < 2 或 被转换进制 > 36 或 转换的进制 > 36)' 判断两个“进制系数”是否正确
    返回 (“参数错误-进制只能在2-36之间”)
.如果真结束
被转换文本 = 到大写 (到半角 (被转换文本))' 规范参数
.变量循环首 (1, 取文本长度 (被转换文本), 1, 计次变量1)' 判断输入的数字文本是否有效
    临时文本 = 取文本中间 (被转换文本, 计次变量1, 1)
    .如果真 (寻找文本 (取文本左边 (“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”, 被转换进制), 临时文本, , 假) = -1)
      临时文本 = “参数错误-” + 被转换文本 + “不是一个有效的” + 取文本左边 (数值到金额 (被转换进制, 真), 取文本长度 (数值到金额 (被转换进制, 真)) - 4) + “进制数!”
      跳出循环 ()
    .如果真结束
    ' 全部查找完毕
    .如果真 (计次变量1 = 取文本长度 (被转换文本))
      临时文本 = “”
    .如果真结束

.变量循环尾 ()

' 如果临时文本不为空,说明此数字文本无效!
.如果真 (临时文本 ≠ “”)
    返回 (临时文本)
.如果真结束
' 以上为数据正确性校验处理代码

.如果真 (被转换进制 = 转换的进制)' 相同时,不用进行转换
    返回 (被转换文本)
.如果真结束

.变量循环首 (1, 取文本长度 (被转换文本), 1, 计次变量1)' 先将要转换的数字放入大数中
    次方数.导入数字 (1)' 数值1不能直接和大数类型计算,所以先放入一个大数中
    被转换进制大数.导入数字 (被转换进制)
    .计次循环首 (取文本长度 (被转换文本) - 计次变量1, 计次变量2)' 求次方
      次方数 = 次方数.乘 (被转换进制大数)
    .计次循环尾 ()
    临时变量 = 寻找文本 (“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”, 取文本中间 (被转换文本, 计次变量1, 1), , 真) - 1
    临时大数1.导入数字 (临时变量)
    临时大数1 = 临时大数1.乘 (次方数)
    临时大数 = 临时大数1.加 (临时大数)' 临时大数即为最后转换成的大数
.变量循环尾 ()
转换的进制大数1.导入数字 (转换的进制 - 1)
转换的进制大数.导入数字 (转换的进制)
数值1大数.导入数字 (1)' 数值1不能直接和大数类型计算,所以先放入一个大数中
.判断循环首 (临时大数.大于 (转换的进制大数1) = 真)' 开始进制转换,除进制数取余数
    余数大数 = 临时大数.求余 (转换的进制大数)' 求出的余数
    临时大数1 = 余数大数.加 (数值1大数)' 求出的余数+1
    临时数值 = 到数值 (临时大数1.导出文本 ())' 最后的余数
    欲转换文本 = 取文本中间 (“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”, 临时数值, 1) + 欲转换文本' 找出每一个余数对应的数字
    临时大数 = 临时大数.除 (转换的进制大数, 10)' 取出剩余的数字
    临时大数 = 临时大数.取整数 ()
.判断循环尾 ()
临时数值 = 临时大数.导出整数 ()' 最后剩下的余数
欲转换文本 = 取文本中间 (“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”, 临时数值 + 1, 1) + 欲转换文本' 整数转换结束
返回 (欲转换文本)
--------------------------------------------------------------
【内存注册机】
中断地址 00532AB6
中断次数 1
第一字节 E8
指令长度 5

内存方式-寄存器-EAX
--------------------------------------------------------------
【注册信息】
用户名:tianxj
注册码:00EEF3CB2AE6
--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!
感谢您能看完!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

wgz001 发表于 2009-5-21 04:38

学习T大的算法分析:)

ZeNiX 发表于 2009-5-21 12:00

分析得很清楚,
步驟也很明確.
謝謝分享~~

wellen 发表于 2009-5-21 15:38

:)是分析文章就顶

Register 发表于 2009-5-22 09:14

大大21号在看雪发的分析.我觉得注册格式"A-B-C-D"
"-"无关,可转成别的.如:A0B1C2D,A0B0C0D等等,在OD里亲试可过注册

落雪飞花 发表于 2011-2-9 19:56

非常不错!太喜欢了!还是E写的注册机!

落雪飞花 发表于 2011-3-7 22:54

很强大!易语言写的注册机!我喜欢

youto 发表于 2011-3-10 19:16

学习啦。。谢谢楼主
页: [1]
查看完整版本: Super Fax Search 1.91 算法分析