【破解作者】 小子贼野
【作者主页】 http://mayday.unpack.cn/
【使用工具】 OD
【破解平台】 Win9x/NT/2000/XP
【软件名称】 Open Video Capture 1.24.553
【下载地址】 http://www.onlinedown.net/soft/46986.htm
【软件简介】 Open Video Converter 是一款易于使用的视频转换,分割和编辑工具。它能转换多个视频 格式如MPG,AVI,ASF,WMV到AVI 文件。它能改变帧尺寸,帧频,视频和音频压缩编码。 主要功能有:-转换MPEG,WMV,ASF,MPG,VCD,OGM,DAT,SVCD为AVI。
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
超级字串参考, 项目 54
地址=00402D23
反汇编=PUSH openvcap.0041B744
文本字串=registration has succeeded!
--------------------------------------------------------------------------------
来到下面:
--------------------------------------------------------------------------------
00402B2D > \8B7C24 1C MOV EDI,DWORD PTR SS:[ESP+1C] ; 案例 1 --> 分支 00402AD9
00402B31 . 8B35 04B34100 MOV ESI,DWORD PTR DS:[<&USER32.GetDlgIte>; USER32.GetDlgItemTextA
00402B37 . 68 00010000 PUSH 100 ; /Count = 100 (256.)
00402B3C . 68 B0104200 PUSH openvcap.004210B0 ; |Buffer = openvcap.004210B0
00402B41 . 68 E8030000 PUSH 3E8 ; |ControlID = 3E8 (1000.)
00402B46 . 57 PUSH EDI ; |hWnd
00402B47 . FFD6 CALL ESI ; \GetDlgItemTextA
00402B49 . 68 00010000 PUSH 100 ; /Count = 100 (256.)
00402B4E . 68 20164200 PUSH openvcap.00421620 ; |Buffer = openvcap.00421620
00402B53 . 68 E9030000 PUSH 3E9 ; |ControlID = 3E9 (1001.)
00402B58 . 57 PUSH EDI ; |hWnd
00402B59 . FFD6 CALL ESI ; \GetDlgItemTextA
00402B5B . B8 B0104200 MOV EAX,openvcap.004210B0 ; ASCII "mayday"
00402B60 . 8D50 01 LEA EDX,DWORD PTR DS:[EAX+1]
00402B63 > 8A08 MOV CL,BYTE PTR DS:[EAX]
00402B65 . 40 INC EAX
00402B66 . 84C9 TEST CL,CL
00402B68 .^ 75 F9 JNZ SHORT openvcap.00402B63
00402B6A . 2BC2 SUB EAX,EDX
00402B6C . 83F8 02 CMP EAX,2 ; 用户名必须大于2
00402B6F . 73 22 JNB SHORT openvcap.00402B93
00402B71 . 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
00402B73 . 68 B0B74100 PUSH openvcap.0041B7B0 ; |Title = "Error"
00402B78 . 68 90B74100 PUSH openvcap.0041B790 ; |Text = "Please input correct User Name!"
00402B7D . 57 PUSH EDI ; |hOwner
00402B7E . FF15 68B24100 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
00402B84 . 5F POP EDI
00402B85 . 5E POP ESI
00402B86 . 5D POP EBP
00402B87 . B8 01000000 MOV EAX,1
00402B8C . 5B POP EBX
00402B8D . 83C4 08 ADD ESP,8
00402B90 . C2 1000 RETN 10
00402B93 > B8 20164200 MOV EAX,openvcap.00421620 ; ASCII "123456789"
00402B98 . 8D50 01 LEA EDX,DWORD PTR DS:[EAX+1]
00402B9B . EB 03 JMP SHORT openvcap.00402BA0
00402B9D 8D49 00 LEA ECX,DWORD PTR DS:[ECX]
00402BA0 > 8A08 MOV CL,BYTE PTR DS:[EAX]
00402BA2 . 40 INC EAX
00402BA3 . 84C9 TEST CL,CL
00402BA5 .^ 75 F9 JNZ SHORT openvcap.00402BA0
00402BA7 . 2BC2 SUB EAX,EDX
00402BA9 . 83F8 08 CMP EAX,8 ; 注册码必须大于8
00402BAC . 73 22 JNB SHORT openvcap.00402BD0
00402BAE . 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
00402BB0 . 68 B0B74100 PUSH openvcap.0041B7B0 ; |Title = "Error"
00402BB5 . 68 68B74100 PUSH openvcap.0041B768 ; |please input correct registration code!
00402BBA . 57 PUSH EDI ; |hOwner
00402BBB . FF15 68B24100 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
00402BC1 . 5F POP EDI
00402BC2 . 5E POP ESI
00402BC3 . 5D POP EBP
00402BC4 . B8 01000000 MOV EAX,1
00402BC9 . 5B POP EBX
00402BCA . 83C4 08 ADD ESP,8
00402BCD . C2 1000 RETN 10
00402BD0 > 0FB60D B01042>MOVZX ECX,BYTE PTR DS:[4210B0] ; ECX=用户名第一位的Ascii
00402BD7 . 8BC1 MOV EAX,ECX ; ECX=EAX
00402BD9 . 83C8 57 OR EAX,57 ; EAX=EAX OR $57
00402BDC . 99 CDQ
00402BDD . BE 0A000000 MOV ESI,0A ; ESI=$A
00402BE2 . F7FE IDIV ESI ; EAX与A进行idiv运算
00402BE4 . 0FB635 B11042>MOVZX ESI,BYTE PTR DS:[4210B1] ; ESI=用户名第二位的Ascii
00402BEB . 8BC6 MOV EAX,ESI ; ESI=EAX
00402BED . 83C8 45 OR EAX,45 ; EAX=EAX OR $45
00402BF0 . BF 0A000000 MOV EDI,0A ; EDI=$A
00402BF5 . 33ED XOR EBP,EBP ; EBP=0
00402BF7 . 885424 20 MOV BYTE PTR SS:[ESP+20],DL ; dl=07,送ESP+20
00402BFB . 99 CDQ
00402BFC . F7FF IDIV EDI ; EAX与A进行idiv运算
00402BFE . 8BC1 MOV EAX,ECX ; 用户名第一位的Ascii
00402C00 . 83C8 42 OR EAX,42 ; EAX=EAX OR $42
00402C03 . 8BCF MOV ECX,EDI ; EDI=用户名第一位Ascii
00402C05 . 885424 24 MOV BYTE PTR SS:[ESP+24],DL ; DL=1,送ESP+24
00402C09 . 99 CDQ
00402C0A . F7F9 IDIV ECX ; EAX与A进行idiv运算
00402C0C . 8BC6 MOV EAX,ESI ; EAX=用户名第二位的Ascii
00402C0E . 83C8 43 OR EAX,43 ; EAX=EAX OR $43
00402C11 . 885424 12 MOV BYTE PTR SS:[ESP+12],DL
00402C15 . 99 CDQ
00402C16 . F7F9 IDIV ECX ; EAX与A进行idiv运算
00402C18 . B9 B0104200 MOV ECX,openvcap.004210B0 ; ASCII "mayday"
00402C1D . 33F6 XOR ESI,ESI
00402C1F . 8D79 01 LEA EDI,DWORD PTR DS:[ECX+1]
00402C22 . 885424 13 MOV BYTE PTR SS:[ESP+13],DL
00402C26 > 8A01 MOV AL,BYTE PTR DS:[ECX] ; 注册名逐位ascii码送al,进入循环
00402C28 . 41 INC ECX
00402C29 . 84C0 TEST AL,AL
00402C2B .^ 75 F9 JNZ SHORT openvcap.00402C26
00402C2D . 2BCF SUB ECX,EDI
00402C2F . 894C24 14 MOV DWORD PTR SS:[ESP+14],ECX
00402C33 . 74 2A JE SHORT openvcap.00402C5F
00402C35 . EB 09 JMP SHORT openvcap.00402C40
00402C37 . 8DA424 000000>LEA ESP,DWORD PTR SS:[ESP]
00402C3E . 8BFF MOV EDI,EDI
00402C40 > 0FB696 B01042>MOVZX EDX,BYTE PTR DS:[ESI+4210B0]
00402C47 . B9 B0104200 MOV ECX,openvcap.004210B0 ; ASCII "mayday"
00402C4C . 03EA ADD EBP,EDX
00402C4E . 46 INC ESI
00402C4F . 8D79 01 LEA EDI,DWORD PTR DS:[ECX+1]
00402C52 > 8A01 MOV AL,BYTE PTR DS:[ECX] ; 注册名逐位ascii码送al,进入循环
00402C54 . 41 INC ECX
00402C55 . 84C0 TEST AL,AL
00402C57 .^ 75 F9 JNZ SHORT openvcap.00402C52
00402C59 . 2BCF SUB ECX,EDI
00402C5B . 3BF1 CMP ESI,ECX
00402C5D .^ 72 E1 JB SHORT openvcap.00402C40
00402C5F > 8A0D 20164200 MOV CL,BYTE PTR DS:[421620]
00402C65 . 0FB67C24 20 MOVZX EDI,BYTE PTR SS:[ESP+20]
00402C6A . 8A1D 21164200 MOV BL,BYTE PTR DS:[421621] ; $32给bl
00402C70 . A0 22164200 MOV AL,BYTE PTR DS:[421622] ; $33给al
00402C75 . 8A15 23164200 MOV DL,BYTE PTR DS:[421623] ; $34给dl
00402C7B . 0FB6F1 MOVZX ESI,CL
00402C7E . 83EE 30 SUB ESI,30 ; ESI-$30 ESI=1
00402C81 . 3BFE CMP EDI,ESI ; EDI=7和ESI=1比较,即第一位必须是7
00402C83 . 75 48 JNZ SHORT openvcap.00402CCD ; 不相等回家睡觉
00402C85 . 0FB67C24 24 MOVZX EDI,BYTE PTR SS:[ESP+24]
00402C8A . 0FB6F3 MOVZX ESI,BL
00402C8D . 83EE 30 SUB ESI,30
00402C90 . 3BFE CMP EDI,ESI ; EDI=1和ESI=2比较,即第二位必须是1
00402C92 . 75 39 JNZ SHORT openvcap.00402CCD ; 不相等回家睡觉
00402C94 . 0FB67424 12 MOVZX ESI,BYTE PTR SS:[ESP+12]
00402C99 . 0FB6C0 MOVZX EAX,AL
00402C9C . 83E8 30 SUB EAX,30
00402C9F . 3BF0 CMP ESI,EAX ; ESI=1和EAX=3比较,即第三位必须是1
00402CA1 . 75 2A JNZ SHORT openvcap.00402CCD ; 不相等回家睡觉
00402CA3 . 0FB64424 13 MOVZX EAX,BYTE PTR SS:[ESP+13]
00402CA8 . 0FB6D2 MOVZX EDX,DL
00402CAB . 83EA 30 SUB EDX,30
00402CAE . 3BC2 CMP EAX,EDX ; EAX=9和EDX=4比较,即第四位必须是9
00402CB0 . 75 1B JNZ SHORT openvcap.00402CCD ; 不相等回家睡觉
00402CB2 . 8BC5 MOV EAX,EBP ; EAX=EBP=285(用户名的Ascii)
00402CB4 . 99 CDQ
00402CB5 . BE 0A000000 MOV ESI,0A ; ESI=$A
00402CBA . F7FE IDIV ESI ; EAX=285 IDIV $A
00402CBC . 0FB605 241642>MOVZX EAX,BYTE PTR DS:[421624]
00402CC3 . 83E8 30 SUB EAX,30
00402CC6 . 0FB6D2 MOVZX EDX,DL
00402CC9 . 3BD0 CMP EDX,EAX ; EDX=5和EAX=5比较
00402CCB . 74 4B JE SHORT openvcap.00402D18 ; 相等就注册成功
00402CCD > 80F9 32 CMP CL,32
00402CD0 . 0F85 99000000 JNZ openvcap.00402D6F
00402CD6 . 80FB 33 CMP BL,33
00402CD9 . 0F85 90000000 JNZ openvcap.00402D6F
00402CDF . 803D 22164200>CMP BYTE PTR DS:[421622],39
00402CE6 . 0F85 83000000 JNZ openvcap.00402D6F
00402CEC . 803D 23164200>CMP BYTE PTR DS:[421623],31
00402CF3 . 75 7A JNZ SHORT openvcap.00402D6F
00402CF5 . 381D 24164200 CMP BYTE PTR DS:[421624],BL
00402CFB . 75 72 JNZ SHORT openvcap.00402D6F
00402CFD . 803D 25164200>CMP BYTE PTR DS:[421625],31
00402D04 . 75 69 JNZ SHORT openvcap.00402D6F
00402D06 . 803D 26164200>CMP BYTE PTR DS:[421626],34
00402D0D . 75 60 JNZ SHORT openvcap.00402D6F
00402D0F . 803D 27164200>CMP BYTE PTR DS:[421627],36
00402D16 . 75 57 JNZ SHORT openvcap.00402D6F
00402D18 > 8B7C24 1C MOV EDI,DWORD PTR SS:[ESP+1C]
00402D1C . 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
00402D1E . 68 60B74100 PUSH openvcap.0041B760 ; |message
00402D23 . 68 44B74100 PUSH openvcap.0041B744 ; |registration has succeeded!
00402D28 . 57 PUSH EDI ; |hOwner
00402D29 . FF15 68B24100 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
00402D2F . 8B35 A0B04100 MOV ESI,DWORD PTR DS:[<&KERNEL32.WritePr>; kernel32.WriteProfileStringA
00402D35 . 68 B0104200 PUSH openvcap.004210B0 ; /String = "mayday"
00402D3A . 68 38B74100 PUSH openvcap.0041B738 ; |username
00402D3F . 68 ECB64100 PUSH openvcap.0041B6EC ; |openvideocapture
00402D44 . FFD6 CALL ESI ; \WriteProfileStringA
00402D46 . 68 20164200 PUSH openvcap.00421620 ; /String = "123456789"
00402D4B . 68 24B74100 PUSH openvcap.0041B724 ; |registration_code
00402D50 . 68 ECB64100 PUSH openvcap.0041B6EC ; |openvideocapture
00402D55 . FFD6 CALL ESI ; \WriteProfileStringA
00402D57 . 6A 01 PUSH 1 ; /Result = 1
00402D59 . 57 PUSH EDI ; |hWnd
00402D5A . FF15 18B34100 CALL DWORD PTR DS:[<&USER32.EndDialog>] ; \EndDialog
00402D60 . 5F POP EDI
00402D61 . 5E POP ESI
00402D62 . 5D POP EBP
00402D63 . B8 01000000 MOV EAX,1
00402D68 . 5B POP EBX
00402D69 . 83C4 08 ADD ESP,8
00402D6C . C2 1000 RETN 10
00402D6F > 8B4C24 1C MOV ECX,DWORD PTR SS:[ESP+1C]
00402D73 . 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
00402D75 . 68 B0B74100 PUSH openvcap.0041B7B0 ; |error
00402D7A . 68 0CB74100 PUSH openvcap.0041B70C ; |registration failed!
00402D7F . 51 PUSH ECX ; |hOwner
00402D80 . FF15 68B24100 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
00402D86 . 5F POP EDI
00402D87 . 5E POP ESI
00402D88 . 5D POP EBP
00402D89 . B8 01000000 MOV EAX,1
00402D8E . 5B POP EBX
00402D8F . 83C4 08 ADD ESP,8
00402D92 . C2 1000 RETN 10
00402D95 > 8B7424 1C MOV ESI,DWORD PTR SS:[ESP+1C] ; 案例 110 --> 分支 00402AB7
00402D99 . 8B3D 0CB34100 MOV EDI,DWORD PTR DS:[<&USER32.SetDlgIte>; USER32.SetDlgItemTextA
00402D9F . 68 B0104200 PUSH openvcap.004210B0 ; /Text = "mayday"
00402DA4 . 68 E8030000 PUSH 3E8 ; |ControlID = 3E8 (1000.)
00402DA9 . 56 PUSH ESI ; |hWnd
00402DAA . FFD7 CALL EDI ; \SetDlgItemTextA
00402DAC . 68 20164200 PUSH openvcap.00421620 ; /Text = "123456789"
00402DB1 . 68 E9030000 PUSH 3E9 ; |ControlID = 3E9 (1001.)
00402DB6 . 56 PUSH ESI ; |hWnd
00402DB7 . FFD7 CALL EDI ; \SetDlgItemTextA
00402DB9 > 5F POP EDI ; 分支 00402AD9 默认案例
00402DBA . 5E POP ESI
00402DBB . 5D POP EBP
00402DBC . B8 01000000 MOV EAX,1
00402DC1 . 5B POP EBX
00402DC2 . 83C4 08 ADD ESP,8
00402DC5 . C2 1000 RETN 10
--------------------------------------------------------------------------------
注册名须不小于两位,注册码位数为8位以上,主要思路如下:
1.注册名第一位的ascii码与$57做or运算,再与A进行idiv运算,余数“7”为注册码第一位;
2.注册名第二位的ascii码与$45做or运算,再与A进行idiv运算,余数“1”为注册码第二位;
3.注册名第一位的ascii码与$42做or运算,再与A进行idiv运算,余数“1”为注册码第三位;
4.注册名第二位的ascii码与$43做or运算,再与A进行idiv运算,余数“9”为注册码第四位;
5.此时ebp=$285(用户名的Ascii),与A进行idiv运算,余数“5”为注册码第五位;
6.第六位以后任意
--------------------------------------------------------------------------------
合起来,即注册名:mayday,注册码:71195***,还有一组通用注册码:2391146
--------------------------------------------------------------------------------
【Delphi注册机源码】
--------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
sn1,sn2,sn3,sn4,sn5,i:integer;
begin
sn5:=0;
for i:=1 to length(edit1.text) do
sn5:=sn5+ord(edit1.text[i]);
sn5:=sn5 mod $A;
sn1:=ord(edit1.text[1]) or $57;
sn1:=sn1 mod $A;
sn2:=ord(edit1.text[2]) or $45;
sn2:=sn2 mod $A;
sn3:=ord(edit1.text[1]) or $42;
sn3:=sn3 mod $A;
sn4:=ord(edit1.text[2]) or $43;
sn4:=sn4 mod $A;
edit2.Text:=inttostr(sn1)+inttostr(sn2)+inttostr(sn3)+inttostr(sn4)+inttostr(sn5)+'555';
end;
end.
[注意]APP应用上架合规检测服务,协助应用顺利上架!