好友
阅读权限 40
听众
最后登录 1970-1-1
【破文标题】1Click DVD to DivX AVI 1.21 简单分析
【破文作者】tianxj
【作者邮箱】tianxj_2007@126.com
【作者主页】WwW.ChiNaPYG.CoM
【破解 工具】PEiD,OD
【破解平台】Windows XP
【软件名称】1Click DVD to DivX AVI 1.21
【软件大小】974KB
【软件类别】国外软件/光碟工具
【软件授权】共享版
【软件语言】英文
【运行环境】Win9x/Me/NT/2000/XP/2003
【更新时间】2003-12-6
【原版下载】华军软件园
【保护方式】注册码
【软件简介】1Click DVD to Divx xVid Avi是一个将DVD转换成Divx,xVid和Avi文件的工具,可以对整个DVD或部分DVD(按时间,画面或章节分)进行转换,是个理想的备份DVD的方法。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"wrong serialnumber,program terminate!"
**************************************************************
二、用PEiD对dvdtoavi.exe查壳,为 ASPack 2.12 -> Alexey Solodovnikov
用PEiD插件脱壳 ,为 Microsoft Visual C++ 6.0
**************************************************************
三、运行OD,打开dvdtoavi.exe.unpacked_.exe,右键—超级字串参考—查找ASCII.
==============================================================00411504 . 56 PUSH ESI
00411505 . 53 PUSH EBX
00411506 . 56 PUSH ESI
00411507 . 8BD9 MOV EBX, ECX
00411509 . 6A 01 PUSH 1
0041150B . 8BCB MOV ECX, EBX
0041150D . E8 5C8A0900 CALL dvdtoavi.004A9F6E
00411512 . 8B43 60 MOV EAX, DWORD PTR [EBX+60] ; //试练码
00411515 . 8B50 F8 MOV EDX, DWORD PTR [EAX-8] ; //试练码长度
00411518 . 83FA 1D CMP EDX, 1D
0041151B . 74 50 JE SHORT dvdtoavi.0041156D ; //注册码长度为29位则跳
0041151D . 33C0 XOR EAX, EAX
0041151F . 50 PUSH EAX
00411520 . 50 PUSH EAX
00411521 . 8BCB MOV ECX, EBX
00411523 . 68 183E9200 PUSH dvdtoavi.00923E18 ; wrong serialnumber,program terminate!
00411528 . E8 E5820900 CALL dvdtoavi.004A9812
0041152D . FF15 10724B00 CALL DWORD PTR [<&KERNEL32.GetCurrent>; [GetCurrentProcess
00411533 . 6A 01 PUSH 1 ; /ExitCode = 1
00411535 . 50 PUSH EAX ; |hProcess
00411536 . FF15 20724B00 CALL DWORD PTR [<&KERNEL32.TerminateP>; \TerminateProcess
0041153C . 8D73 5C LEA ESI, DWORD PTR [EBX+5C]
0041153F > 8B06 MOV EAX, DWORD PTR [ESI]
00411541 . 8B50 F8 MOV EDX, DWORD PTR [EAX-8]
00411544 . 85D2 TEST EDX, EDX
00411546 . 74 1A JE SHORT dvdtoavi.00411562
00411548 . 8B43 60 MOV EAX, DWORD PTR [EBX+60]
0041154B . 8B50 F8 MOV EDX, DWORD PTR [EAX-8]
0041154E . 85D2 TEST EDX, EDX
00411550 . 74 10 JE SHORT dvdtoavi.00411562
00411552 . 33C0 XOR EAX, EAX
00411554 . 50 PUSH EAX
00411555 . 50 PUSH EAX
00411556 . 8BCB MOV ECX, EBX
00411558 . 68 403E9200 PUSH dvdtoavi.00923E40 ; thank for registration,please restart the program.
0041155D . E8 B0820900 CALL dvdtoavi.004A9812
00411562 > 8BCB MOV ECX, EBX
00411564 . E8 CE9B0900 CALL dvdtoavi.004AB137
00411569 . 59 POP ECX
0041156A . 5B POP EBX
0041156B . 5E POP ESI
0041156C . C3 RETN
0041156D > 8A50 05 MOV DL, BYTE PTR [EAX+5]
00411570 . 80FA 2B CMP DL, 2B
00411573 . 74 24 JE SHORT dvdtoavi.00411599 ; //注册码第6位为“+”则跳
00411575 > 33C0 XOR EAX, EAX
00411577 . 50 PUSH EAX
00411578 . 50 PUSH EAX
00411579 . 8BCB MOV ECX, EBX
0041157B . 68 183E9200 PUSH dvdtoavi.00923E18 ; wrong serialnumber,program terminate!
00411580 . E8 8D820900 CALL dvdtoavi.004A9812
00411585 . FF15 10724B00 CALL DWORD PTR [<&KERNEL32.GetCurrent>; [GetCurrentProcess
0041158B . 6A 01 PUSH 1 ; /ExitCode = 1
0041158D . 50 PUSH EAX ; |hProcess
0041158E . FF15 20724B00 CALL DWORD PTR [<&KERNEL32.TerminateP>; \TerminateProcess
00411594 . 8D73 5C LEA ESI, DWORD PTR [EBX+5C]
00411597 .^ EB A6 JMP SHORT dvdtoavi.0041153F
00411599 > 8A50 0B MOV DL, BYTE PTR [EAX+B] ; //注册码第12位不为“+”则跳
0041159C . 80FA 2B CMP DL, 2B
0041159F .^ 75 D4 JNZ SHORT dvdtoavi.00411575
004115A1 . 8A50 11 MOV DL, BYTE PTR [EAX+11]
004115A4 . 80FA 2B CMP DL, 2B
004115A7 .^ 75 CC JNZ SHORT dvdtoavi.00411575 ; //注册码第18位不为“+”则跳
004115A9 . 8A50 17 MOV DL, BYTE PTR [EAX+17]
004115AC . 80FA 2B CMP DL, 2B
004115AF .^ 75 C4 JNZ SHORT dvdtoavi.00411575 ; //注册码第24位不为“+”则跳
004115B1 . 0FBE10 MOVSX EDX, BYTE PTR [EAX]
004115B4 . 83FA 41 CMP EDX, 41
004115B7 . 7C 0A JL SHORT dvdtoavi.004115C3 ; //注册码第1位ASCII码小于41则跳
004115B9 . 83FA 46 CMP EDX, 46
004115BC . 7F 05 JG SHORT dvdtoavi.004115C3 ; //注册码第1位ASCII码大于46则跳
004115BE . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
004115C1 . EB 03 JMP SHORT dvdtoavi.004115C6
004115C3 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
004115C6 > 0FBE70 01 MOVSX ESI, BYTE PTR [EAX+1]
004115CA . 83FE 41 CMP ESI, 41
004115CD . 7C 09 JL SHORT dvdtoavi.004115D8 ; //注册码第2位ASCII码小于41则跳
004115CF . 83FE 46 CMP ESI, 46
004115D2 . 7F 04 JG SHORT dvdtoavi.004115D8 ; //注册码第2位ASCII码大于46则跳
004115D4 . B1 01 MOV CL, 1
004115D6 . EB 02 JMP SHORT dvdtoavi.004115DA
004115D8 > B1 00 MOV CL, 0
004115DA > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
004115DC . 84C9 TEST CL, CL
004115DE . 74 05 JE SHORT dvdtoavi.004115E5
004115E0 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
004115E3 . EB 03 JMP SHORT dvdtoavi.004115E8
004115E5 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
004115E8 > 0FBE70 02 MOVSX ESI, BYTE PTR [EAX+2]
004115EC . 83FE 41 CMP ESI, 41
004115EF . 7C 09 JL SHORT dvdtoavi.004115FA ; //注册码第3位ASCII码小于41则跳
004115F1 . 83FE 46 CMP ESI, 46
004115F4 . 7F 04 JG SHORT dvdtoavi.004115FA ; //注册码第3位ASCII码大于46则跳
004115F6 . B1 01 MOV CL, 1
004115F8 . EB 02 JMP SHORT dvdtoavi.004115FC
004115FA > B1 00 MOV CL, 0
004115FC > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
004115FE . 84C9 TEST CL, CL
00411600 . 74 05 JE SHORT dvdtoavi.00411607
00411602 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
00411605 . EB 03 JMP SHORT dvdtoavi.0041160A
00411607 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
0041160A > 0FBE70 03 MOVSX ESI, BYTE PTR [EAX+3]
0041160E . 83FE 41 CMP ESI, 41
00411611 . 7C 09 JL SHORT dvdtoavi.0041161C ; //注册码第4位ASCII码小于41则跳
00411613 . 83FE 46 CMP ESI, 46
00411616 . 7F 04 JG SHORT dvdtoavi.0041161C ; //注册码第4位ASCII码大于46则跳
00411618 . B1 01 MOV CL, 1
0041161A . EB 02 JMP SHORT dvdtoavi.0041161E
0041161C > B1 00 MOV CL, 0
0041161E > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
00411620 . 84C9 TEST CL, CL
00411622 . 74 05 JE SHORT dvdtoavi.00411629
00411624 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
00411627 . EB 03 JMP SHORT dvdtoavi.0041162C
00411629 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
0041162C > 0FBE70 04 MOVSX ESI, BYTE PTR [EAX+4]
00411630 . 83FE 41 CMP ESI, 41
00411633 . 7C 09 JL SHORT dvdtoavi.0041163E ; //注册码第5位ASCII码小于41则跳
00411635 . 83FE 46 CMP ESI, 46
00411638 . 7F 04 JG SHORT dvdtoavi.0041163E ; //注册码第5位ASCII码大于46则跳
0041163A . B1 01 MOV CL, 1
0041163C . EB 02 JMP SHORT dvdtoavi.00411640
0041163E > B1 00 MOV CL, 0
00411640 > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
00411642 . 84C9 TEST CL, CL
00411644 . 74 05 JE SHORT dvdtoavi.0041164B
00411646 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
00411649 . EB 03 JMP SHORT dvdtoavi.0041164E
0041164B > 83C2 D0 ADD EDX, -30
0041164E > 83FA 28 CMP EDX, 28
00411651 . 0F85 6A020000 JNZ dvdtoavi.004118C1 ; //EDX与28h比较,不等则跳
00411657 . 0FBE50 06 MOVSX EDX, BYTE PTR [EAX+6]
0041165B . 83FA 41 CMP EDX, 41
0041165E . 7C 0A JL SHORT dvdtoavi.0041166A ; //注册码第7位ASCII码小于41则跳
00411660 . 83FA 46 CMP EDX, 46
00411663 . 7F 05 JG SHORT dvdtoavi.0041166A
00411665 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
00411668 . EB 03 JMP SHORT dvdtoavi.0041166D
0041166A > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
0041166D > 0FBE70 07 MOVSX ESI, BYTE PTR [EAX+7]
00411671 . 83FE 41 CMP ESI, 41
00411674 . 7C 09 JL SHORT dvdtoavi.0041167F ; //注册码第8位ASCII码小于41则跳
00411676 . 83FE 46 CMP ESI, 46
00411679 . 7F 04 JG SHORT dvdtoavi.0041167F ; //注册码第8位ASCII码大于46则跳
0041167B . B1 01 MOV CL, 1
0041167D . EB 02 JMP SHORT dvdtoavi.00411681
0041167F > B1 00 MOV CL, 0
00411681 > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
00411683 . 84C9 TEST CL, CL
00411685 . 74 05 JE SHORT dvdtoavi.0041168C
00411687 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
0041168A . EB 03 JMP SHORT dvdtoavi.0041168F
0041168C > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
0041168F > 0FBE70 08 MOVSX ESI, BYTE PTR [EAX+8]
00411693 . 83FE 41 CMP ESI, 41
00411696 . 7C 09 JL SHORT dvdtoavi.004116A1 ; //注册码第9位ASCII码小于41则跳
00411698 . 83FE 46 CMP ESI, 46
0041169B . 7F 04 JG SHORT dvdtoavi.004116A1 ; //注册码第9位ASCII码大于46则跳
0041169D . B1 01 MOV CL, 1
0041169F . EB 02 JMP SHORT dvdtoavi.004116A3
004116A1 > B1 00 MOV CL, 0
004116A3 > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
004116A5 . 84C9 TEST CL, CL
004116A7 . 74 05 JE SHORT dvdtoavi.004116AE
004116A9 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
004116AC . EB 03 JMP SHORT dvdtoavi.004116B1
004116AE > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
004116B1 > 0FBE70 09 MOVSX ESI, BYTE PTR [EAX+9]
004116B5 . 83FE 41 CMP ESI, 41
004116B8 . 7C 09 JL SHORT dvdtoavi.004116C3 ; //注册码第10位ASCII码小于41则跳
004116BA . 83FE 46 CMP ESI, 46
004116BD . 7F 04 JG SHORT dvdtoavi.004116C3 ; //注册码第10位ASCII码大于46则跳
004116BF . B1 01 MOV CL, 1
004116C1 . EB 02 JMP SHORT dvdtoavi.004116C5
004116C3 > B1 00 MOV CL, 0
004116C5 > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
004116C7 . 84C9 TEST CL, CL
004116C9 . 74 05 JE SHORT dvdtoavi.004116D0
004116CB . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
004116CE . EB 03 JMP SHORT dvdtoavi.004116D3
004116D0 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
004116D3 > 0FBE70 0A MOVSX ESI, BYTE PTR [EAX+A]
004116D7 . 83FE 41 CMP ESI, 41
004116DA . 7C 09 JL SHORT dvdtoavi.004116E5 ; //注册码第11位ASCII码小于41则跳
004116DC . 83FE 46 CMP ESI, 46
004116DF . 7F 04 JG SHORT dvdtoavi.004116E5 ; //注册码第11位ASCII码大于46则跳
004116E1 . B1 01 MOV CL, 1
004116E3 . EB 02 JMP SHORT dvdtoavi.004116E7
004116E5 > B1 00 MOV CL, 0
004116E7 > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
004116E9 . 84C9 TEST CL, CL
004116EB . 74 05 JE SHORT dvdtoavi.004116F2
004116ED . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
004116F0 . EB 03 JMP SHORT dvdtoavi.004116F5
004116F2 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
004116F5 > 83FA 29 CMP EDX, 29
004116F8 . 0F85 9C010000 JNZ dvdtoavi.0041189A ; //EDX与29h比较,不等则跳
004116FE . 0FBE50 0C MOVSX EDX, BYTE PTR [EAX+C]
00411702 . 83FA 41 CMP EDX, 41
00411705 . 7C 0A JL SHORT dvdtoavi.00411711 ; //注册码第13位ASCII码小于41则跳
00411707 . 83FA 46 CMP EDX, 46
0041170A . 7F 05 JG SHORT dvdtoavi.00411711 ; //注册码第13位ASCII码大于46则跳
0041170C . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
0041170F . EB 03 JMP SHORT dvdtoavi.00411714
00411711 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
00411714 > 0FBE70 0D MOVSX ESI, BYTE PTR [EAX+D]
00411718 . 83FE 41 CMP ESI, 41
0041171B . 7C 09 JL SHORT dvdtoavi.00411726 ; //注册码第14位ASCII码小于41则跳
0041171D . 83FE 46 CMP ESI, 46
00411720 . 7F 04 JG SHORT dvdtoavi.00411726 ; //注册码第14位ASCII码大于46则跳
00411722 . B1 01 MOV CL, 1
00411724 . EB 02 JMP SHORT dvdtoavi.00411728
00411726 > B1 00 MOV CL, 0
00411728 > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
0041172A . 84C9 TEST CL, CL
0041172C . 74 05 JE SHORT dvdtoavi.00411733
0041172E . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
00411731 . EB 03 JMP SHORT dvdtoavi.00411736
00411733 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
00411736 > 0FBE70 0E MOVSX ESI, BYTE PTR [EAX+E]
0041173A . 83FE 41 CMP ESI, 41
0041173D . 7C 09 JL SHORT dvdtoavi.00411748 ; //注册码第15位ASCII码小于41则跳
0041173F . 83FE 46 CMP ESI, 46
00411742 . 7F 04 JG SHORT dvdtoavi.00411748 ; //注册码第15位ASCII码大于46则跳
00411744 . B1 01 MOV CL, 1
00411746 . EB 02 JMP SHORT dvdtoavi.0041174A
00411748 > B1 00 MOV CL, 0
0041174A > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
0041174C . 84C9 TEST CL, CL
0041174E . 74 05 JE SHORT dvdtoavi.00411755
00411750 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
00411753 . EB 03 JMP SHORT dvdtoavi.00411758
00411755 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
00411758 > 0FBE70 0F MOVSX ESI, BYTE PTR [EAX+F]
0041175C . 83FE 41 CMP ESI, 41
0041175F . 7C 09 JL SHORT dvdtoavi.0041176A ; //注册码第16位ASCII码小于41则跳
00411761 . 83FE 46 CMP ESI, 46
00411764 . 7F 04 JG SHORT dvdtoavi.0041176A ; //注册码第16位ASCII码大于46则跳
00411766 . B1 01 MOV CL, 1
00411768 . EB 02 JMP SHORT dvdtoavi.0041176C
0041176A > B1 00 MOV CL, 0
0041176C > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
0041176E . 84C9 TEST CL, CL
00411770 . 74 05 JE SHORT dvdtoavi.00411777
00411772 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
00411775 . EB 03 JMP SHORT dvdtoavi.0041177A
00411777 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
0041177A > 0FBE70 10 MOVSX ESI, BYTE PTR [EAX+10]
0041177E . 83FE 41 CMP ESI, 41
00411781 . 7C 09 JL SHORT dvdtoavi.0041178C ; //注册码第17位ASCII码小于41则跳
00411783 . 83FE 46 CMP ESI, 46
00411786 . 7F 04 JG SHORT dvdtoavi.0041178C ; //注册码第17位ASCII码大于46则跳
00411788 . B1 01 MOV CL, 1
0041178A . EB 02 JMP SHORT dvdtoavi.0041178E
0041178C > B1 00 MOV CL, 0
0041178E > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
00411790 . 84C9 TEST CL, CL
00411792 . 74 05 JE SHORT dvdtoavi.00411799
00411794 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
00411797 . EB 03 JMP SHORT dvdtoavi.0041179C
00411799 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
0041179C > 83FA 2A CMP EDX, 2A
0041179F . 0F85 CE000000 JNZ dvdtoavi.00411873 ; //EDX与2Ah比较,相等则跳
004117A5 . 0FBE50 12 MOVSX EDX, BYTE PTR [EAX+12]
004117A9 . 83FA 41 CMP EDX, 41
004117AC . 7C 0A JL SHORT dvdtoavi.004117B8 ; //注册码第19位ASCII码小于41则跳
004117AE . 83FA 46 CMP EDX, 46
004117B1 . 7F 05 JG SHORT dvdtoavi.004117B8 ; //注册码第19位ASCII码大于46则跳
004117B3 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
004117B6 . EB 03 JMP SHORT dvdtoavi.004117BB
004117B8 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
004117BB > 0FBE70 13 MOVSX ESI, BYTE PTR [EAX+13]
004117BF . 83FE 41 CMP ESI, 41
004117C2 . 7C 09 JL SHORT dvdtoavi.004117CD ; //注册码第20位ASCII码小于41则跳
004117C4 . 83FE 46 CMP ESI, 46
004117C7 . 7F 04 JG SHORT dvdtoavi.004117CD ; //注册码第20位ASCII码大于46则跳
004117C9 . B1 01 MOV CL, 1
004117CB . EB 02 JMP SHORT dvdtoavi.004117CF
004117CD > B1 00 MOV CL, 0
004117CF > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
004117D1 . 84C9 TEST CL, CL
004117D3 . 74 05 JE SHORT dvdtoavi.004117DA
004117D5 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
004117D8 . EB 03 JMP SHORT dvdtoavi.004117DD
004117DA > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
004117DD > 0FBE70 14 MOVSX ESI, BYTE PTR [EAX+14]
004117E1 . 83FE 41 CMP ESI, 41
004117E4 . 7C 09 JL SHORT dvdtoavi.004117EF ; //注册码第21位ASCII码小于41则跳
004117E6 . 83FE 46 CMP ESI, 46
004117E9 . 7F 04 JG SHORT dvdtoavi.004117EF ; //注册码第21位ASCII码大于46则跳
004117EB . B1 01 MOV CL, 1
004117ED . EB 02 JMP SHORT dvdtoavi.004117F1
004117EF > B1 00 MOV CL, 0
004117F1 > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
004117F3 . 84C9 TEST CL, CL
004117F5 . 74 05 JE SHORT dvdtoavi.004117FC
004117F7 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
004117FA . EB 03 JMP SHORT dvdtoavi.004117FF
004117FC > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
004117FF > 0FBE70 15 MOVSX ESI, BYTE PTR [EAX+15]
00411803 . 83FE 41 CMP ESI, 41
00411806 . 7C 09 JL SHORT dvdtoavi.00411811 ; //注册码第22位ASCII码小于41则跳
00411808 . 83FE 46 CMP ESI, 46
0041180B . 7F 04 JG SHORT dvdtoavi.00411811 ; //注册码第22位ASCII码大于46则跳
0041180D . B1 01 MOV CL, 1
0041180F . EB 02 JMP SHORT dvdtoavi.00411813
00411811 > B1 00 MOV CL, 0
00411813 > 03D6 ADD EDX, ESI ; //EDX=EDX+ESI
00411815 . 84C9 TEST CL, CL
00411817 . 74 05 JE SHORT dvdtoavi.0041181E
00411819 . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
0041181C . EB 03 JMP SHORT dvdtoavi.00411821
0041181E > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
00411821 > 0FBE40 16 MOVSX EAX, BYTE PTR [EAX+16]
00411825 . 83F8 41 CMP EAX, 41
00411828 . 7C 09 JL SHORT dvdtoavi.00411833 ; //注册码第23位ASCII码小于41则跳
0041182A . 83F8 46 CMP EAX, 46
0041182D . 7F 04 JG SHORT dvdtoavi.00411833 ; //注册码第23位ASCII码大于46则跳
0041182F . B1 01 MOV CL, 1
00411831 . EB 02 JMP SHORT dvdtoavi.00411835
00411833 > B1 00 MOV CL, 0
00411835 > 03D0 ADD EDX, EAX ; //EDX=EDX+EAX
00411837 . 84C9 TEST CL, CL
00411839 . 74 05 JE SHORT dvdtoavi.00411840
0041183B . 83C2 C9 ADD EDX, -37 ; //EDX=EDX-37
0041183E . EB 03 JMP SHORT dvdtoavi.00411843
00411840 > 83C2 D0 ADD EDX, -30 ; //EDX=EDX-30
00411843 > 83FA 2B CMP EDX, 2B
00411846 . 0F84 9C000000 JE dvdtoavi.004118E8 ; //EDX与2Bh比较,相等则跳
0041184C . 33C0 XOR EAX, EAX
0041184E . 50 PUSH EAX
0041184F . 50 PUSH EAX
00411850 . 8BCB MOV ECX, EBX
00411852 . 68 183E9200 PUSH dvdtoavi.00923E18 ; wrong serialnumber,program terminate!
00411857 . E8 B67F0900 CALL dvdtoavi.004A9812
0041185C . FF15 10724B00 CALL DWORD PTR [<&KERNEL32.GetCurrent>; [GetCurrentProcess
00411862 . 6A 01 PUSH 1 ; /ExitCode = 1
00411864 . 50 PUSH EAX ; |hProcess
00411865 . FF15 20724B00 CALL DWORD PTR [<&KERNEL32.TerminateP>; \TerminateProcess
0041186B . 8D73 5C LEA ESI, DWORD PTR [EBX+5C]
0041186E .^ E9 CCFCFFFF JMP dvdtoavi.0041153F
00411873 > 33C0 XOR EAX, EAX
00411875 . 50 PUSH EAX
00411876 . 50 PUSH EAX
00411877 . 8BCB MOV ECX, EBX
00411879 . 68 183E9200 PUSH dvdtoavi.00923E18 ; wrong serialnumber,program terminate!
0041187E . E8 8F7F0900 CALL dvdtoavi.004A9812
00411883 . FF15 10724B00 CALL DWORD PTR [<&KERNEL32.GetCurrent>; [GetCurrentProcess
00411889 . 6A 01 PUSH 1 ; /ExitCode = 1
0041188B . 50 PUSH EAX ; |hProcess
0041188C . FF15 20724B00 CALL DWORD PTR [<&KERNEL32.TerminateP>; \TerminateProcess
00411892 . 8D73 5C LEA ESI, DWORD PTR [EBX+5C]
00411895 .^ E9 A5FCFFFF JMP dvdtoavi.0041153F
0041189A > 33C0 XOR EAX, EAX
0041189C . 50 PUSH EAX
0041189D . 50 PUSH EAX
0041189E . 8BCB MOV ECX, EBX
004118A0 . 68 183E9200 PUSH dvdtoavi.00923E18 ; wrong serialnumber,program terminate!
004118A5 . E8 687F0900 CALL dvdtoavi.004A9812
004118AA . FF15 10724B00 CALL DWORD PTR [<&KERNEL32.GetCurrent>; [GetCurrentProcess
004118B0 . 6A 01 PUSH 1 ; /ExitCode = 1
004118B2 . 50 PUSH EAX ; |hProcess
004118B3 . FF15 20724B00 CALL DWORD PTR [<&KERNEL32.TerminateP>; \TerminateProcess
004118B9 . 8D73 5C LEA ESI, DWORD PTR [EBX+5C]
004118BC .^ E9 7EFCFFFF JMP dvdtoavi.0041153F
004118C1 > 33C0 XOR EAX, EAX
004118C3 . 50 PUSH EAX
004118C4 . 50 PUSH EAX
004118C5 . 8BCB MOV ECX, EBX
004118C7 . 68 183E9200 PUSH dvdtoavi.00923E18 ; wrong serialnumber,program terminate!
004118CC . E8 417F0900 CALL dvdtoavi.004A9812
004118D1 . FF15 10724B00 CALL DWORD PTR [<&KERNEL32.GetCurrent>; [GetCurrentProcess
004118D7 . 6A 01 PUSH 1 ; /ExitCode = 1
004118D9 . 50 PUSH EAX ; |hProcess
004118DA . FF15 20724B00 CALL DWORD PTR [<&KERNEL32.TerminateP>; \TerminateProcess
004118E0 . 8D73 5C LEA ESI, DWORD PTR [EBX+5C]
004118E3 .^ E9 57FCFFFF JMP dvdtoavi.0041153F
004118E8 > 8D0424 LEA EAX, DWORD PTR [ESP]
004118EB . 50 PUSH EAX ; /pHandle
004118EC . 68 643C9200 PUSH dvdtoavi.00923C64 ; |Software\dvdtoavi\Output_Setting
004118F1 . 68 01000080 PUSH 80000001 ; |hKey = HKEY_CURRENT_USER
004118F6 . FF15 0C704B00 CALL DWORD PTR [<&ADVAPI32.RegCreateK>; \RegCreateKeyA
004118FC . 85C0 TEST EAX, EAX
004118FE . 74 08 JE SHORT dvdtoavi.00411908
00411900 . 8D73 5C LEA ESI, DWORD PTR [EBX+5C]
00411903 .^ E9 37FCFFFF JMP dvdtoavi.0041153F
00411908 > 8B43 5C MOV EAX, DWORD PTR [EBX+5C]
0041190B . FF70 F8 PUSH DWORD PTR [EAX-8] ; /Length
0041190E . 50 PUSH EAX ; |Value
0041190F . 8D73 5C LEA ESI, DWORD PTR [EBX+5C] ; |
00411912 . 6A 01 PUSH 1 ; |ValueType = REG_SZ
00411914 . 68 003E9200 PUSH dvdtoavi.00923E00 ; |FileName
00411919 . FF7424 10 PUSH DWORD PTR [ESP+10] ; |hKey
0041191D . FF15 08704B00 CALL DWORD PTR [<&ADVAPI32.RegSetValu>; \RegSetValueA
00411923 . 8B43 60 MOV EAX, DWORD PTR [EBX+60]
00411926 . FF70 F8 PUSH DWORD PTR [EAX-8] ; /Length
00411929 . 50 PUSH EAX ; |Value
0041192A . 6A 01 PUSH 1 ; |ValueType = REG_SZ
0041192C . 68 0C3E9200 PUSH dvdtoavi.00923E0C ; |PathName
00411931 . FF7424 10 PUSH DWORD PTR [ESP+10] ; |hKey
00411935 . FF15 08704B00 CALL DWORD PTR [<&ADVAPI32.RegSetValu>; \RegSetValueA
0041193B . FF3424 PUSH DWORD PTR [ESP] ; /hKey
0041193E . FF15 10704B00 CALL DWORD PTR [<&ADVAPI32.RegCloseKe>; \RegCloseKey
00411944 .^ E9 F6FBFFFF JMP dvdtoavi.0041153F
00411949 90 NOP
0041194A 90 NOP
0041194B 90 NOP
0041194C . B8 D03C9200 MOV EAX, dvdtoavi.00923CD0
00411951 . C3 RETN
==============================================================
根据"thank for registration,please restart the program."可知软件为重启验证类型
根据字符串里的信息很容易找到注册表哦
[HKEY_CURRENT_USER\Software\dvdtoavi\Output_Setting\PathName]
==============================================================0040980C /$ 57 PUSH EDI
0040980D |. B8 0C110000 MOV EAX, 110C
00409812 |. E8 B9BB0800 CALL dvdtoavi.004953D0
00409817 |. 8D5424 0C LEA EDX, DWORD PTR [ESP+C]
0040981B |. 8D4424 08 LEA EAX, DWORD PTR [ESP+8]
0040981F |. C74424 08 000>MOV DWORD PTR [ESP+8], 200
00409827 |. 50 PUSH EAX ; /pValueSize
00409828 |. 52 PUSH EDX ; |Value
00409829 |. 68 40049200 PUSH dvdtoavi.00920440 ; |software\dvdtoavi\output_setting\filename
0040982E |. 68 01000080 PUSH 80000001 ; |hKey = HKEY_CURRENT_USER
00409833 |. FF15 00704B00 CALL DWORD PTR [<&ADVAPI32.RegQueryVa>; \RegQueryValueA
00409839 |. 85C0 TEST EAX, EAX
0040983B |. 0F85 32020000 JNZ dvdtoavi.00409A73
00409841 |. 8D7C24 0C LEA EDI, DWORD PTR [ESP+C]
00409845 |. 33C0 XOR EAX, EAX
00409847 |. 8A37 MOV DH, BYTE PTR [EDI]
00409849 |. 8BCF MOV ECX, EDI
0040984B |. 84F6 TEST DH, DH
0040984D |. 74 0C JE SHORT dvdtoavi.0040985B
0040984F |> 83C1 01 /ADD ECX, 1
00409852 |. 83C0 01 |ADD EAX, 1
00409855 |. 8A11 |MOV DL, BYTE PTR [ECX]
00409857 |. 84D2 |TEST DL, DL
00409859 |.^ 75 F4 \JNZ SHORT dvdtoavi.0040984F
0040985B |> 85C0 TEST EAX, EAX
0040985D |. 0F86 10020000 JBE dvdtoavi.00409A73 ; //用户名为空则跳
00409863 |. C74424 08 000>MOV DWORD PTR [ESP+8], 200
0040986B |. 8D5424 0C LEA EDX, DWORD PTR [ESP+C]
0040986F |. 8D4424 08 LEA EAX, DWORD PTR [ESP+8]
00409873 |. 50 PUSH EAX ; /pValueSize
00409874 |. 52 PUSH EDX ; |Value
00409875 |. 68 64239200 PUSH dvdtoavi.00922364 ; |software\dvdtoavi\output_setting\pathname
0040987A |. 68 01000080 PUSH 80000001 ; |hKey = HKEY_CURRENT_USER
0040987F |. FF15 00704B00 CALL DWORD PTR [<&ADVAPI32.RegQueryVa>; \RegQueryValueA
00409885 |. 85C0 TEST EAX, EAX
00409887 |. 0F85 E6010000 JNZ dvdtoavi.00409A73
0040988D |. 8D7C24 0C LEA EDI, DWORD PTR [ESP+C]
00409891 |. 33C0 XOR EAX, EAX
00409893 |. 8A37 MOV DH, BYTE PTR [EDI]
00409895 |. 8BCF MOV ECX, EDI
00409897 |. 84F6 TEST DH, DH
00409899 |. 74 0C JE SHORT dvdtoavi.004098A7
0040989B |> 83C1 01 /ADD ECX, 1
0040989E |. 83C0 01 |ADD EAX, 1
004098A1 |. 8A11 |MOV DL, BYTE PTR [ECX]
004098A3 |. 84D2 |TEST DL, DL
004098A5 |.^ 75 F4 \JNZ SHORT dvdtoavi.0040989B
004098A7 |> 83F8 1D CMP EAX, 1D
004098AA |. 0F85 C3010000 JNZ dvdtoavi.00409A73 ; //注册码长度不为29位则跳
004098B0 |. 8A4424 11 MOV AL, BYTE PTR [ESP+11]
004098B4 |. 3C 2B CMP AL, 2B
004098B6 |. 74 0A JE SHORT dvdtoavi.004098C2 ; //注册码第6位为“+”则跳
004098B8 |> 33C0 XOR EAX, EAX
004098BA |. 81C4 0C110000 ADD ESP, 110C
004098C0 |. 5F POP EDI
004098C1 |. C3 RETN
004098C2 |> 8A4424 17 MOV AL, BYTE PTR [ESP+17]
004098C6 |. 3C 2B CMP AL, 2B
004098C8 |.^ 75 EE JNZ SHORT dvdtoavi.004098B8 ; //注册码第12位不为“+”则跳
004098CA |. 8A4424 1D MOV AL, BYTE PTR [ESP+1D]
004098CE |. 3C 2B CMP AL, 2B
004098D0 |.^ 75 E6 JNZ SHORT dvdtoavi.004098B8 ; //注册码第18位不为“+”则跳
004098D2 |. 8A4424 23 MOV AL, BYTE PTR [ESP+23]
004098D6 |. 3C 2B CMP AL, 2B
004098D8 |.^ 75 DE JNZ SHORT dvdtoavi.004098B8 ; //注册码第24位不为“+”则跳
004098DA |. 891C24 MOV DWORD PTR [ESP], EBX
004098DD |. 897424 04 MOV DWORD PTR [ESP+4], ESI
004098E1 |. 33FF XOR EDI, EDI
004098E3 |. 33C0 XOR EAX, EAX
004098E5 |. 8BD8 MOV EBX, EAX
004098E7 |> 0FBE441C 0C /MOVSX EAX, BYTE PTR [ESP+EBX+C]
004098EC |. 8D7424 0C |LEA ESI, DWORD PTR [ESP+C]
004098F0 |. 50 |PUSH EAX
004098F1 |. 03F3 |ADD ESI, EBX
004098F3 |. E8 1C7B0000 |CALL dvdtoavi.00411414
004098F8 |. 59 |POP ECX
004098F9 |. 0FBE16 |MOVSX EDX, BYTE PTR [ESI]
004098FC |. 0FB6C0 |MOVZX EAX, AL
004098FF |. 85C0 |TEST EAX, EAX
00409901 |. 74 06 |JE SHORT dvdtoavi.00409909
00409903 |. 8D7C17 C9 |LEA EDI, DWORD PTR [EDI+EDX-37]
00409907 |. EB 04 |JMP SHORT dvdtoavi.0040990D
00409909 |> 8D7C17 D0 |LEA EDI, DWORD PTR [EDI+EDX-30]
0040990D |> 83C3 01 |ADD EBX, 1
00409910 |. 83FB 05 |CMP EBX, 5
00409913 |.^ 7C D2 \JL SHORT dvdtoavi.004098E7 ; //循环,累加注册码
00409915 |. 8B1C24 MOV EBX, DWORD PTR [ESP]
00409918 |. 8B7424 04 MOV ESI, DWORD PTR [ESP+4]
0040991C |. 83FF 28 CMP EDI, 28
0040991F |. 74 0A JE SHORT dvdtoavi.0040992B ; //注册码1-5位之和与28h比较,相等则跳
00409921 |. 33C0 XOR EAX, EAX
00409923 |. 81C4 0C110000 ADD ESP, 110C
00409929 |. 5F POP EDI
0040992A |. C3 RETN
0040992B |> 891C24 MOV DWORD PTR [ESP], EBX
0040992E |. 897424 04 MOV DWORD PTR [ESP+4], ESI
00409932 |. 33C0 XOR EAX, EAX
00409934 |. BF 06000000 MOV EDI, 6
00409939 |. 8BD8 MOV EBX, EAX
0040993B |> 0FBE443C 0C /MOVSX EAX, BYTE PTR [ESP+EDI+C]
00409940 |. 8D7424 0C |LEA ESI, DWORD PTR [ESP+C]
00409944 |. 50 |PUSH EAX
00409945 |. 03F7 |ADD ESI, EDI
00409947 |. E8 C87A0000 |CALL dvdtoavi.00411414
0040994C |. 59 |POP ECX
0040994D |. 0FBE16 |MOVSX EDX, BYTE PTR [ESI]
00409950 |. 0FB6C0 |MOVZX EAX, AL
00409953 |. 85C0 |TEST EAX, EAX
00409955 |. 74 06 |JE SHORT dvdtoavi.0040995D
00409957 |. 8D5C13 C9 |LEA EBX, DWORD PTR [EBX+EDX-37]
0040995B |. EB 04 |JMP SHORT dvdtoavi.00409961
0040995D |> 8D5C13 D0 |LEA EBX, DWORD PTR [EBX+EDX-30]
00409961 |> 83C7 01 |ADD EDI, 1
00409964 |. 83FF 0B |CMP EDI, 0B
00409967 |.^ 7C D2 \JL SHORT dvdtoavi.0040993B ; //循环,累加注册码
00409969 |. 8B7424 04 MOV ESI, DWORD PTR [ESP+4]
0040996D |. 8BC3 MOV EAX, EBX
0040996F |. 8B1C24 MOV EBX, DWORD PTR [ESP]
00409972 |. 83F8 29 CMP EAX, 29
00409975 |. 74 0A JE SHORT dvdtoavi.00409981 ; //注册码7-11位之和与29h比较,相等则跳
00409977 |. 33C0 XOR EAX, EAX
00409979 |. 81C4 0C110000 ADD ESP, 110C
0040997F |. 5F POP EDI
00409980 |. C3 RETN
00409981 |> 891C24 MOV DWORD PTR [ESP], EBX
00409984 |. 897424 04 MOV DWORD PTR [ESP+4], ESI
00409988 |. 33FF XOR EDI, EDI
0040998A |. B8 0C000000 MOV EAX, 0C
0040998F |. 8BD8 MOV EBX, EAX
00409991 |> 0FBE541C 0C /MOVSX EDX, BYTE PTR [ESP+EBX+C]
00409996 |. 8D7424 0C |LEA ESI, DWORD PTR [ESP+C]
0040999A |. 52 |PUSH EDX
0040999B |. 03F3 |ADD ESI, EBX
0040999D |. E8 727A0000 |CALL dvdtoavi.00411414
004099A2 |. 59 |POP ECX
004099A3 |. 0FBE0E |MOVSX ECX, BYTE PTR [ESI]
004099A6 |. 0FB6D0 |MOVZX EDX, AL
004099A9 |. 85D2 |TEST EDX, EDX
004099AB |. 74 06 |JE SHORT dvdtoavi.004099B3
004099AD |. 8D7C0F C9 |LEA EDI, DWORD PTR [EDI+ECX-37]
004099B1 |. EB 04 |JMP SHORT dvdtoavi.004099B7
004099B3 |> 8D7C0F D0 |LEA EDI, DWORD PTR [EDI+ECX-30]
004099B7 |> 83C3 01 |ADD EBX, 1
004099BA |. 83FB 11 |CMP EBX, 11
004099BD |.^ 7C D2 \JL SHORT dvdtoavi.00409991 ; //循环,累加注册码
004099BF |. 8B1C24 MOV EBX, DWORD PTR [ESP]
004099C2 |. 8B7424 04 MOV ESI, DWORD PTR [ESP+4]
004099C6 |. 83FF 2A CMP EDI, 2A
004099C9 |. 74 0A JE SHORT dvdtoavi.004099D5 ; //注册码13-17位之和与2Ah比较,相等则跳
004099CB |. 33C0 XOR EAX, EAX
004099CD |. 81C4 0C110000 ADD ESP, 110C
004099D3 |. 5F POP EDI
004099D4 |. C3 RETN
004099D5 |> 891C24 MOV DWORD PTR [ESP], EBX
004099D8 |. 897424 04 MOV DWORD PTR [ESP+4], ESI
004099DC |. 33FF XOR EDI, EDI
004099DE |. B8 12000000 MOV EAX, 12
004099E3 |. 8BD8 MOV EBX, EAX
004099E5 |> 0FBE441C 0C /MOVSX EAX, BYTE PTR [ESP+EBX+C]
004099EA |. 8D7424 0C |LEA ESI, DWORD PTR [ESP+C]
004099EE |. 50 |PUSH EAX
004099EF |. 03F3 |ADD ESI, EBX
004099F1 |. E8 1E7A0000 |CALL dvdtoavi.00411414
004099F6 |. 59 |POP ECX
004099F7 |. 0FBE16 |MOVSX EDX, BYTE PTR [ESI]
004099FA |. 0FB6C0 |MOVZX EAX, AL
004099FD |. 85C0 |TEST EAX, EAX
004099FF |. 74 06 |JE SHORT dvdtoavi.00409A07
00409A01 |. 8D7C17 C9 |LEA EDI, DWORD PTR [EDI+EDX-37]
00409A05 |. EB 04 |JMP SHORT dvdtoavi.00409A0B
00409A07 |> 8D7C17 D0 |LEA EDI, DWORD PTR [EDI+EDX-30]
00409A0B |> 83C3 01 |ADD EBX, 1
00409A0E |. 83FB 17 |CMP EBX, 17
00409A11 |.^ 7C D2 \JL SHORT dvdtoavi.004099E5 ; //循环,累加注册码
00409A13 |. 8B1C24 MOV EBX, DWORD PTR [ESP]
00409A16 |. 8B7424 04 MOV ESI, DWORD PTR [ESP+4]
00409A1A |. 83FF 2B CMP EDI, 2B
00409A1D |. 74 0A JE SHORT dvdtoavi.00409A29 ; //注册码19-23位之和与2Bh比较,相等则跳
00409A1F |. 33C0 XOR EAX, EAX
00409A21 |. 81C4 0C110000 ADD ESP, 110C
00409A27 |. 5F POP EDI
00409A28 |. C3 RETN
00409A29 |> 891C24 MOV DWORD PTR [ESP], EBX
00409A2C |. 897424 04 MOV DWORD PTR [ESP+4], ESI
00409A30 |. 33FF XOR EDI, EDI
00409A32 |. B8 18000000 MOV EAX, 18
00409A37 |. 8BD8 MOV EBX, EAX
00409A39 |> 0FBE541C 0C /MOVSX EDX, BYTE PTR [ESP+EBX+C]
00409A3E |. 8D7424 0C |LEA ESI, DWORD PTR [ESP+C]
00409A42 |. 52 |PUSH EDX
00409A43 |. 03F3 |ADD ESI, EBX
00409A45 |. E8 CA790000 |CALL dvdtoavi.00411414
00409A4A |. 59 |POP ECX
00409A4B |. 0FBE0E |MOVSX ECX, BYTE PTR [ESI]
00409A4E |. 0FB6D0 |MOVZX EDX, AL
00409A51 |. 85D2 |TEST EDX, EDX
00409A53 |. 74 06 |JE SHORT dvdtoavi.00409A5B
00409A55 |. 8D7C0F C9 |LEA EDI, DWORD PTR [EDI+ECX-37]
00409A59 |. EB 04 |JMP SHORT dvdtoavi.00409A5F
00409A5B |> 8D7C0F D0 |LEA EDI, DWORD PTR [EDI+ECX-30]
00409A5F |> 83C3 01 |ADD EBX, 1
00409A62 |. 83FB 1D |CMP EBX, 1D
00409A65 |.^ 7C D2 \JL SHORT dvdtoavi.00409A39 ; //循环,累加注册码
00409A67 |. 8B1C24 MOV EBX, DWORD PTR [ESP]
00409A6A |. 8B7424 04 MOV ESI, DWORD PTR [ESP+4]
00409A6E |. 83FF 2C CMP EDI, 2C
00409A71 |. 74 0A JE SHORT dvdtoavi.00409A7D ; //注册码25-29位之和与2Ch比较,相等则跳
00409A73 |> 33C0 XOR EAX, EAX
00409A75 |. 81C4 0C110000 ADD ESP, 110C
00409A7B |. 5F POP EDI
00409A7C |. C3 RETN
00409A7D |> B8 01000000 MOV EAX, 1 ; //标志位赋值
00409A82 |. 81C4 0C110000 ADD ESP, 110C
00409A88 |. 5F POP EDI
00409A89 \. C3 RETN
**************************************************************
【破解总结】
--------------------------------------------------------------
【算法总结】
1.注册码与用户名无关
2.注册码为29位,形式为"XXXXX+XXXXX+XXXXX+XXXXX+XXXXX"
3.注册码第6、12、18、24位为"+"
注册码1-5位之和为28h
注册码7-11位之和为29h
注册码13-17位之和为2Ah
注册码19-23位之和为2Bh
注册码25-29位之和为2Ch
--------------------------------------------------------------
【注册信息】
一组可用注册码
用户名:任意
注册码:88888+88889+88899+88999+89999
保存在
[HKEY_CURRENT_USER\Software\dvdtoavi\Output_Setting\PathName]
--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及徐超等所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
_/_/_/ _/ _/ _/_/_/
_/ _/ _/ _/ _/
_/_/_/ _/_/ _/_/_/_/
_/ _/ _/ _/
_/ _/ _/_/_/ _/ tianxj
免费评分
查看全部评分