【破文标题】4U AVI MPEG Converter 5.3.8算法分析
【破文作者】tianxj
【作者邮箱】tianxj_2007@126.com
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件名称】4U AVI MPEG Converter 5.3.8
【软件大小】11338KB
【软件类别】国外软件/视频转换 
【软件语言】英文
【更新时间】2008-3-6
【原版下载】网上找一下
【保护方式】注册码
【软件简介】4U AVI MPEG Converter 是一功能强大的视频转换工具,它可以将AVI、MPEG、 WMV、 ASF、 MOV、 QuickTime转换成AVI、DivX、 XviD、 MPEG-1/MPEG-2/DVD/VCD/SVCD、 WMV、 RM等常用的视频格式、或者抽音频成MP3格式。它支持批量文件转换可以一次点击转换多个文件,带有多种解码器;自定义输出视频和帧大小。使用简单,支持资源管理器中点击右键自动进行转换,而不用手动运行本软件。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
初学破解与编程,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"Invalid Registration Code! Please enter an available Registration Code."
**************************************************************
二、用PEiD对AVIMPEGConverter.exe查壳,为 Borland Delphi 6.0 - 7.0
**************************************************************
三、运行OD,打开AVIMPEGConverter.exe,右键超级字串参考查找ASCII.
发现"Invalid Registration Code! Please enter an available Registration Code."

代码:
00491A9C  /$  55            PUSH EBP
00491A9D  |.  8BEC          MOV EBP,ESP
00491A9F  |.  6A 00         PUSH 0
00491AA1  |.  6A 00         PUSH 0
00491AA3  |.  6A 00         PUSH 0
00491AA5  |.  6A 00         PUSH 0
00491AA7  |.  6A 00         PUSH 0
00491AA9  |.  53            PUSH EBX
00491AAA  |.  56            PUSH ESI
00491AAB  |.  894D F8       MOV DWORD PTR SS:[EBP-8],ECX
00491AAE  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
00491AB1  |.  8BF0          MOV ESI,EAX
00491AB3  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //用户名
00491AB6  |.  E8 9D30F7FF   CALL AVIMPEGC.00404B58
00491ABB  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //试练码
00491ABE  |.  E8 9530F7FF   CALL AVIMPEGC.00404B58
00491AC3  |.  33C0          XOR EAX,EAX
00491AC5  |.  55            PUSH EBP
00491AC6  |.  68 931B4900   PUSH AVIMPEGC.00491B93
00491ACB  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
00491ACE  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
00491AD1  |.  33DB          XOR EBX,EBX
00491AD3  |.  33D2          XOR EDX,EDX
00491AD5  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //用户名
00491AD8  |.  E8 CF31F7FF   CALL AVIMPEGC.00404CAC
00491ADD  |.  85C0          TEST EAX,EAX
00491ADF  |.  7E 0B         JLE SHORT AVIMPEGC.00491AEC
00491AE1  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
00491AE4  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
00491AE7  |.  E8 642CF7FF   CALL AVIMPEGC.00404750
00491AEC  |>  8D4D F4       LEA ECX,DWORD PTR SS:[EBP-C]
00491AEF  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]             ;  //用户名
00491AF2  |.  8BC6          MOV EAX,ESI
00491AF4  |.  E8 2F010000   CALL AVIMPEGC.00491C28                   ;  //算法CALL1
00491AF9  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]             ;  //真码
00491AFC  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //试练码
00491AFF  |.  E8 186FF7FF   CALL AVIMPEGC.00408A1C                   ;  //比较CALL
00491B04  |.  85C0          TEST EAX,EAX
00491B06  |.  75 41         JNZ SHORT AVIMPEGC.00491B49              ;  //关键跳转
00491B08  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
00491B0B  |.  8BC6          MOV EAX,ESI
00491B0D  |.  E8 EEF3FFFF   CALL AVIMPEGC.00490F00
00491B12  |.  84C0          TEST AL,AL
00491B14  |.  74 62         JE SHORT AVIMPEGC.00491B78
00491B16  |.  B3 01         MOV BL,1
00491B18  |.  6A 40         PUSH 40
00491B1A  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
00491B1D  |.  A1 8CEF4B00   MOV EAX,DWORD PTR DS:[4BEF8C]
00491B22  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00491B24  |.  E8 2738FDFF   CALL AVIMPEGC.00465350
00491B29  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
00491B2C  |.  E8 3730F7FF   CALL AVIMPEGC.00404B68
00491B31  |.  50            PUSH EAX                                 ; |Title
00491B32  |.  68 A41B4900   PUSH AVIMPEGC.00491BA4                   ; |Registered successfully. Thanks for your registration!
00491B37  |.  A1 8CEF4B00   MOV EAX,DWORD PTR DS:[4BEF8C]            ; |
00491B3C  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]               ; |
00491B3E  |.  8B40 30       MOV EAX,DWORD PTR DS:[EAX+30]            ; |
00491B41  |.  50            PUSH EAX                                 ; |hOwner
00491B42  |.  E8 895AF7FF   CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
00491B47  |.  EB 2F         JMP SHORT AVIMPEGC.00491B78
00491B49  |>  6A 10         PUSH 10
00491B4B  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
00491B4E  |.  A1 8CEF4B00   MOV EAX,DWORD PTR DS:[4BEF8C]
00491B53  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00491B55  |.  E8 F637FDFF   CALL AVIMPEGC.00465350
00491B5A  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
00491B5D  |.  E8 0630F7FF   CALL AVIMPEGC.00404B68
00491B62  |.  50            PUSH EAX                                 ; |Title
00491B63  |.  68 DC1B4900   PUSH AVIMPEGC.00491BDC                   ; |Invalid Registration Code! \r\nPlease enter an available Registration Code.
00491B68  |.  A1 8CEF4B00   MOV EAX,DWORD PTR DS:[4BEF8C]            ; |
00491B6D  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]               ; |
00491B6F  |.  8B40 30       MOV EAX,DWORD PTR DS:[EAX+30]            ; |
00491B72  |.  50            PUSH EAX                                 ; |hOwner
00491B73  |.  E8 585AF7FF   CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
00491B78  |>  33C0          XOR EAX,EAX
00491B7A  |.  5A            POP EDX
00491B7B  |.  59            POP ECX
00491B7C  |.  59            POP ECX
00491B7D  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
00491B80  |.  68 9A1B4900   PUSH AVIMPEGC.00491B9A
00491B85  |>  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
00491B88  |.  BA 05000000   MOV EDX,5
00491B8D  |.  E8 4A2BF7FF   CALL AVIMPEGC.004046DC
00491B92  \.  C3            RETN
00491B93   .^ E9 A424F7FF   JMP AVIMPEGC.0040403C
00491B98   .^ EB EB         JMP SHORT AVIMPEGC.00491B85
00491B9A   .  8BC3          MOV EAX,EBX
00491B9C   .  5E            POP ESI
00491B9D   .  5B            POP EBX
00491B9E   .  8BE5          MOV ESP,EBP
00491BA0   .  5D            POP EBP
00491BA1   .  C3            RETN
=======================跟进算法CALL1=========================
00491C28  /$  55            PUSH EBP
00491C29  |.  8BEC          MOV EBP,ESP
00491C2B  |.  6A 00         PUSH 0
00491C2D  |.  6A 00         PUSH 0
00491C2F  |.  6A 00         PUSH 0
00491C31  |.  6A 00         PUSH 0
00491C33  |.  6A 00         PUSH 0
00491C35  |.  6A 00         PUSH 0
00491C37  |.  6A 00         PUSH 0
00491C39  |.  6A 00         PUSH 0
00491C3B  |.  53            PUSH EBX
00491C3C  |.  56            PUSH ESI
00491C3D  |.  57            PUSH EDI
00491C3E  |.  8BD9          MOV EBX,ECX
00491C40  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
00491C43  |.  8BF8          MOV EDI,EAX
00491C45  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //用户名
00491C48  |.  E8 0B2FF7FF   CALL AVIMPEGC.00404B58
00491C4D  |.  33C0          XOR EAX,EAX
00491C4F  |.  55            PUSH EBP
00491C50  |.  68 831D4900   PUSH AVIMPEGC.00491D83
00491C55  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
00491C58  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
00491C5B  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00491C5E  |.  BA 9C1D4900   MOV EDX,AVIMPEGC.00491D9C                ;  J5c2V~9I3Wp
00491C63  |.  E8 102DF7FF   CALL AVIMPEGC.00404978                   ;  //用户名与字符串"J5c2V~9I3Wp"相连,设为字符串1
00491C68  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //字符串1
00491C6B  |.  E8 002DF7FF   CALL AVIMPEGC.00404970                   ;  //取字符串1长度
00491C70  |.  8BF0          MOV ESI,EAX                              ;  //ESI=EAX=字符串1长度
00491C72  |.  D1FE          SAR ESI,1                                ;  //ESI右移1位
00491C74  |.  79 03         JNS SHORT AVIMPEGC.00491C79
00491C76  |.  83D6 00       ADC ESI,0
00491C79  |>  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
00491C7C  |.  50            PUSH EAX
00491C7D  |.  8BCE          MOV ECX,ESI                              ;  //ECX=ESI
00491C7F  |.  BA 01000000   MOV EDX,1                                ;  //EDX=1
00491C84  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //字符串1
00491C87  |.  E8 3C2FF7FF   CALL AVIMPEGC.00404BC8
00491C8C  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]            ;  //字符串1的左边ESI位,设为字符串2
00491C8F  |.  50            PUSH EAX
00491C90  |.  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
00491C93  |.  50            PUSH EAX
00491C94  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //字符串1
00491C97  |.  E8 D42CF7FF   CALL AVIMPEGC.00404970                   ;  //取字符串1长度
00491C9C  |.  8BC8          MOV ECX,EAX                              ;  //ECX=EAX=字符串1长度
00491C9E  |.  8D56 01       LEA EDX,DWORD PTR DS:[ESI+1]
00491CA1  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //字符串1
00491CA4  |.  E8 1F2FF7FF   CALL AVIMPEGC.00404BC8
00491CA9  |.  8B55 EC       MOV EDX,DWORD PTR SS:[EBP-14]            ;  //字符串1去除左边ESI位剩余字符,设为字符串3
00491CAC  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00491CAF  |.  59            POP ECX                                  ;  //字符串2
00491CB0  |.  E8 072DF7FF   CALL AVIMPEGC.004049BC
00491CB5  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
00491CB8  |.  50            PUSH EAX
00491CB9  |.  B9 0A000000   MOV ECX,0A                               ;  //ECX=A
00491CBE  |.  BA 01000000   MOV EDX,1                                ;  //EDX=1
00491CC3  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //字符串3与字符串2相连,设为字符串4
00491CC6  |.  E8 FD2EF7FF   CALL AVIMPEGC.00404BC8                   ;  //取字符串4的左边10位,设为字符串5
00491CCB  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
00491CCE  |.  50            PUSH EAX
00491CCF  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //字符串4
00491CD2  |.  E8 992CF7FF   CALL AVIMPEGC.00404970                   ;  //取字符串4的长度
00491CD7  |.  8BC8          MOV ECX,EAX
00491CD9  |.  BA 06000000   MOV EDX,6
00491CDE  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //字符串4
00491CE1  |.  E8 E22EF7FF   CALL AVIMPEGC.00404BC8                   ;  //取字符串4的第6位以后的字符,设为字符串6
00491CE6  |.  837D F4 00    CMP DWORD PTR SS:[EBP-C],0               ;  //字符串6
00491CEA  |.  75 10         JNZ SHORT AVIMPEGC.00491CFC
00491CEC  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
00491CEF  |.  BA 9C1D4900   MOV EDX,AVIMPEGC.00491D9C                ;  J5c2V~9I3Wp
00491CF4  |.  8B4D F8       MOV ECX,DWORD PTR SS:[EBP-8]
00491CF7  |.  E8 C02CF7FF   CALL AVIMPEGC.004049BC
00491CFC  |>  53            PUSH EBX
00491CFD  |.  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]             ;  //字符串6
00491D00  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]             ;  //字符串5
00491D03  |.  8BC7          MOV EAX,EDI
00491D05  |.  E8 A6F0FFFF   CALL AVIMPEGC.00490DB0                   ;  //算法CALL2
00491D0A  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
00491D0D  |.  50            PUSH EAX
00491D0E  |.  8B03          MOV EAX,DWORD PTR DS:[EBX]               ;  //字符串7
00491D10  |.  B9 05000000   MOV ECX,5
00491D15  |.  BA 01000000   MOV EDX,1
00491D1A  |.  E8 A92EF7FF   CALL AVIMPEGC.00404BC8
00491D1F  |.  FF75 E8       PUSH DWORD PTR SS:[EBP-18]               ;  //字符串7的1-5位
00491D22  |.  68 B01D4900   PUSH AVIMPEGC.00491DB0                   ;  -
00491D27  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
00491D2A  |.  50            PUSH EAX
00491D2B  |.  8B03          MOV EAX,DWORD PTR DS:[EBX]               ;  //字符串7
00491D2D  |.  B9 05000000   MOV ECX,5
00491D32  |.  BA 06000000   MOV EDX,6
00491D37  |.  E8 8C2EF7FF   CALL AVIMPEGC.00404BC8
00491D3C  |.  FF75 E4       PUSH DWORD PTR SS:[EBP-1C]               ;  //字符串7的6-10位
00491D3F  |.  68 B01D4900   PUSH AVIMPEGC.00491DB0                   ;  -
00491D44  |.  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
00491D47  |.  50            PUSH EAX
00491D48  |.  8B03          MOV EAX,DWORD PTR DS:[EBX]               ;  //字符串7
00491D4A  |.  B9 05000000   MOV ECX,5
00491D4F  |.  BA 0B000000   MOV EDX,0B
00491D54  |.  E8 6F2EF7FF   CALL AVIMPEGC.00404BC8
00491D59  |.  FF75 E0       PUSH DWORD PTR SS:[EBP-20]               ;  //字符串7的11-15位
00491D5C  |.  8BC3          MOV EAX,EBX
00491D5E  |.  BA 05000000   MOV EDX,5
00491D63  |.  E8 C82CF7FF   CALL AVIMPEGC.00404A30                   ;  //将以上字符串相连
00491D68  |.  33C0          XOR EAX,EAX
00491D6A  |.  5A            POP EDX
00491D6B  |.  59            POP ECX
00491D6C  |.  59            POP ECX
00491D6D  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
00491D70  |.  68 8A1D4900   PUSH AVIMPEGC.00491D8A
00491D75  |>  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
00491D78  |.  BA 08000000   MOV EDX,8
00491D7D  |.  E8 5A29F7FF   CALL AVIMPEGC.004046DC
00491D82  \.  C3            RETN
00491D83   .^ E9 B422F7FF   JMP AVIMPEGC.0040403C
00491D88   .^ EB EB         JMP SHORT AVIMPEGC.00491D75
00491D8A   .  5F            POP EDI
00491D8B   .  5E            POP ESI
00491D8C   .  5B            POP EBX
00491D8D   .  8BE5          MOV ESP,EBP
00491D8F   .  5D            POP EBP
00491D90   .  C3            RETN
=======================跟进算法CALL2=========================
00490DB0  /$  55            PUSH EBP
00490DB1  |.  8BEC          MOV EBP,ESP
00490DB3  |.  83C4 E0       ADD ESP,-20
00490DB6  |.  53            PUSH EBX
00490DB7  |.  56            PUSH ESI
00490DB8  |.  57            PUSH EDI
00490DB9  |.  33DB          XOR EBX,EBX
00490DBB  |.  895D E0       MOV DWORD PTR SS:[EBP-20],EBX
00490DBE  |.  895D F0       MOV DWORD PTR SS:[EBP-10],EBX
00490DC1  |.  894D F8       MOV DWORD PTR SS:[EBP-8],ECX
00490DC4  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
00490DC7  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //字符串5
00490DCA  |.  E8 893DF7FF   CALL AVIMPEGC.00404B58
00490DCF  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //字符串6
00490DD2  |.  E8 813DF7FF   CALL AVIMPEGC.00404B58
00490DD7  |.  33C0          XOR EAX,EAX
00490DD9  |.  55            PUSH EBP
00490DDA  |.  68 CC0E4900   PUSH AVIMPEGC.00490ECC
00490DDF  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
00490DE2  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
00490DE5  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //字符串6
00490DE8  |.  E8 833BF7FF   CALL AVIMPEGC.00404970                   ;  //取字符串6的长度
00490DED  |.  8945 F4       MOV DWORD PTR SS:[EBP-C],EAX             ;  //[EBP-C]=EAX=字符串6的长度
00490DF0  |.  837D F4 00    CMP DWORD PTR SS:[EBP-C],0
00490DF4  |.  75 0D         JNZ SHORT AVIMPEGC.00490E03
00490DF6  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
00490DF9  |.  BA E40E4900   MOV EDX,AVIMPEGC.00490EE4                ;  Think Space
00490DFE  |.  E8 4D39F7FF   CALL AVIMPEGC.00404750
00490E03  |>  33F6          XOR ESI,ESI                              ;  //ESI=0
00490E05  |.  BB 00010000   MOV EBX,100                              ;  //EBX=100
00490E0A  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
00490E0D  |.  50            PUSH EAX                                 ; /Arg1
00490E0E  |.  C745 E4 00010>MOV DWORD PTR SS:[EBP-1C],100            ; |//[EBP-1C]=100
00490E15  |.  C645 E8 00    MOV BYTE PTR SS:[EBP-18],0               ; |//[EBP-18]=0
00490E19  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]            ; |
00490E1C  |.  33C9          XOR ECX,ECX                              ; |//ECX=0
00490E1E  |.  B8 F80E4900   MOV EAX,AVIMPEGC.00490EF8                ; |%1.2x
00490E23  |.  E8 348EF7FF   CALL AVIMPEGC.00409C5C                   ; \AVIMPEGC.00409C5C
00490E28  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //字符串5
00490E2B  |.  E8 403BF7FF   CALL AVIMPEGC.00404970                   ;  //取字符串5的长度
00490E30  |.  8BF8          MOV EDI,EAX                              ;  //EDI=EAX=字符串5的长度=A
00490E32  |.  85FF          TEST EDI,EDI
00490E34  |.  7E 60         JLE SHORT AVIMPEGC.00490E96
00490E36  |.  C745 EC 01000>MOV DWORD PTR SS:[EBP-14],1              ;  //[EBP-14]=1
00490E3D  |>  8B45 FC       /MOV EAX,DWORD PTR SS:[EBP-4]            ;  //字符串5
00490E40  |.  8B55 EC       |MOV EDX,DWORD PTR SS:[EBP-14]           ;  //EDX=[EBP-14]
00490E43  |.  0FB64410 FF   |MOVZX EAX,BYTE PTR DS:[EAX+EDX-1]       ;  //逐位取字符串5的ASC值
00490E48  |.  03C3          |ADD EAX,EBX                             ;  //EAX=EAX+EBX
00490E4A  |.  B9 FF000000   |MOV ECX,0FF                             ;  //ECX=0FF
00490E4F  |.  99            |CDQ
00490E50  |.  F7F9          |IDIV ECX                                ;  //EAX/ECX,商送EAX,余送EDX
00490E52  |.  8BDA          |MOV EBX,EDX                             ;  //EBX=EDX
00490E54  |.  3B75 F4       |CMP ESI,DWORD PTR SS:[EBP-C]            ;  //ESI与字符串6的长度比较
00490E57  |.  7D 03         |JGE SHORT AVIMPEGC.00490E5C             ;  //大于等于则跳
00490E59  |.  46            |INC ESI                                 ;  //ESI=ESI+1
00490E5A  |.  EB 05         |JMP SHORT AVIMPEGC.00490E61
00490E5C  |>  BE 01000000   |MOV ESI,1                               ;  //ESI=1
00490E61  |>  8B45 F8       |MOV EAX,DWORD PTR SS:[EBP-8]            ;  //字符串6
00490E64  |.  0FB64430 FF   |MOVZX EAX,BYTE PTR DS:[EAX+ESI-1]       ;  //逐位取字符串6ASC值
00490E69  |.  33D8          |XOR EBX,EAX                             ;  //EBX= EBX xor EAX
00490E6B  |.  8D45 E0       |LEA EAX,DWORD PTR SS:[EBP-20]
00490E6E  |.  50            |PUSH EAX                                ; /Arg1
00490E6F  |.  895D E4       |MOV DWORD PTR SS:[EBP-1C],EBX           ; |//[EBP-1C]=EBX
00490E72  |.  C645 E8 00    |MOV BYTE PTR SS:[EBP-18],0              ; |
00490E76  |.  8D55 E4       |LEA EDX,DWORD PTR SS:[EBP-1C]           ; |
00490E79  |.  33C9          |XOR ECX,ECX                             ; |
00490E7B  |.  B8 F80E4900   |MOV EAX,AVIMPEGC.00490EF8               ; |%1.2x
00490E80  |.  E8 D78DF7FF   |CALL AVIMPEGC.00409C5C                  ; \//EBX转字符形式
00490E85  |.  8B55 E0       |MOV EDX,DWORD PTR SS:[EBP-20]
00490E88  |.  8D45 F0       |LEA EAX,DWORD PTR SS:[EBP-10]
00490E8B  |.  E8 E83AF7FF   |CALL AVIMPEGC.00404978                  ;  //将字符相连
00490E90  |.  FF45 EC       |INC DWORD PTR SS:[EBP-14]               ;  //[EBP-14]=[EBP-14]+1
00490E93  |.  4F            |DEC EDI                                 ;  //EDI=EDI-1
00490E94  |.^ 75 A7         \JNZ SHORT AVIMPEGC.00490E3D             ;  //循环
00490E96  |>  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
00490E99  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]            ;  //相连后字符串,设为字符串7
00490E9C  |.  E8 6B38F7FF   CALL AVIMPEGC.0040470C
00490EA1  |.  33C0          XOR EAX,EAX
00490EA3  |.  5A            POP EDX
00490EA4  |.  59            POP ECX
00490EA5  |.  59            POP ECX
00490EA6  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
00490EA9  |.  68 D30E4900   PUSH AVIMPEGC.00490ED3
00490EAE  |>  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
00490EB1  |.  E8 0238F7FF   CALL AVIMPEGC.004046B8
00490EB6  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
00490EB9  |.  E8 FA37F7FF   CALL AVIMPEGC.004046B8
00490EBE  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
00490EC1  |.  BA 02000000   MOV EDX,2
00490EC6  |.  E8 1138F7FF   CALL AVIMPEGC.004046DC
00490ECB  \.  C3            RETN
00490ECC   .^ E9 6B31F7FF   JMP AVIMPEGC.0040403C
00490ED1   .^ EB DB         JMP SHORT AVIMPEGC.00490EAE
00490ED3   .  5F            POP EDI
00490ED4   .  5E            POP ESI
00490ED5   .  5B            POP EBX
00490ED6   .  8BE5          MOV ESP,EBP
00490ED8   .  5D            POP EBP
00490ED9   .  C2 0400       RETN 4
**************************************************************  
【破解总结】
 这段时间工硕的课终于上完了,继续学习《加密与解密》
--------------------------------------------------------------
【算法总结】
 将用户名变形后分成两部分作循环运算,将得到的结果加以处理就是注册码
--------------------------------------------------------------
【算法注册机】
易代码
.版本 2

.子程序 _按钮1_被单击
.局部变量 Serial, 文本型, , , 变量
.局部变量 字符串1, 文本型
.局部变量 字符串2, 文本型
.局部变量 字符串3, 文本型
.局部变量 字符串4, 文本型
.局部变量 字符串5, 文本型
.局部变量 字符串6, 文本型
.局部变量 字符串7, 文本型
.局部变量 字符串8, 文本型
.局部变量 字符串1长度, 整数型
.局部变量 字符串2长度, 整数型
.局部变量 字符串3长度, 整数型
.局部变量 a, 整数型
.局部变量 b, 整数型
.局部变量 c, 整数型
.局部变量 d, 整数型
.局部变量 e, 整数型
.局部变量 i, 整数型
.局部变量 j, 整数型

字符串1 = 编辑框1.内容 + “J5c2V~9I3Wp”
字符串1长度 = 取文本长度 (字符串1)
字符串2长度 = 右移 (字符串1长度, 1)
字符串2 = 取文本左边 (字符串1, 字符串2长度)
字符串3 = 取文本右边 (字符串1, 字符串1长度 - 字符串2长度)
字符串4 = 字符串3 + 字符串2
字符串5 = 取文本左边 (字符串4, 10)
字符串6 = 取文本中间 (字符串4, 6, 取文本长度 (字符串4) - 5)
b = 256
字符串8 = “100”
.计次循环首 (取文本长度 (字符串5), i)
    a = 取代码 (字符串5, i)
    a = a + b
    c = 255
    b = a % c
    .如果 (d ≥ 取文本长度 (字符串6))
        d = 1
    .否则
        d = d + 1
    .如果结束

    e = 取代码 (字符串6, d)
    b = 位异或 (b, e)
    字符串7 = 取十六进制文本 (b)
    .计次循环首 (2 - 取文本长度 (字符串7), j)
        字符串7 = “0” + 字符串7
    .计次循环尾 ()
    字符串8 = 字符串8 + 字符串7
.计次循环尾 ()
编辑框2.内容 = 取文本左边 (字符串8, 5) + “-” + 取文本中间 (字符串8, 6, 5) + “-” + 取文本中间 (字符串8, 11, 5)
--------------------------------------------------------------
【内存注册机】
中断地址 00491AFF
中断次数 1
第一字节 E8
指令长度 5

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