【破文标题】Ease OGG TO RM Converter 2.70 算法分析
【破文作者】tianxj
【作者邮箱】tianxj_2007@126.com
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】盗版Windows XP sp2
【软件名称】Ease OGG TO RM Converter 2.70
【软件类别】音频转换
【软件授权】共享版
【运行环境】Win9x/Me/NT/2000/XP/2003
【软件语言】英文
【软件大小】5810KB
【更新时间】2008-11-5
【保护方式】注册码
【软件简介】Ease OGG TO RM Converter是一个音频转换工具。可批量转换直接播放RMVB,OGG支持RM, RMVB, OGG 格式之间转换。它建立一个小的ID3编辑器,您可以添加/编辑标题,艺术家,专辑,年份,流派,评论资料纳入档案您建立与小编辑。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"Invalid register code! Please retry!"
**************************************************************
二、用PEiD对OGG TO RM Converter.exe查壳,为 Borland Delphi 6.0 - 7.0
**************************************************************
三、运行OD,打开OGG TO RM Converter.exe,右键超级字串参考查找ASCII.
==============================================================
004AE83C /. 55 PUSH EBP 004AE83D |. 8BEC MOV EBP,ESP 004AE83F |. 33C9 XOR ECX,ECX 004AE841 |. 51 PUSH ECX 004AE842 |. 51 PUSH ECX 004AE843 |. 51 PUSH ECX 004AE844 |. 51 PUSH ECX 004AE845 |. 51 PUSH ECX 004AE846 |. 51 PUSH ECX 004AE847 |. 51 PUSH ECX 004AE848 |. 53 PUSH EBX 004AE849 |. 56 PUSH ESI 004AE84A |. 57 PUSH EDI 004AE84B |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 004AE84E |. 33C0 XOR EAX,EAX 004AE850 |. 55 PUSH EBP 004AE851 |. 68 65EA4A00 PUSH OGG_TO_R.004AEA65 004AE856 |. 64:FF30 PUSH DWORD PTR FS:[EAX] 004AE859 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 004AE85C |. B3 01 MOV BL,1 004AE85E |. FF05 FC7D4B00 INC DWORD PTR DS:[4B7DFC] 004AE864 |. 833D FC7D4B00>CMP DWORD PTR DS:[4B7DFC],3 004AE86B |. 7E 1D JLE SHORT OGG_TO_R.004AE88A 004AE86D |. 6A 00 PUSH 0 ; /Arg1 = 00000000 004AE86F |. 66:8B0D 74EA4>MOV CX,WORD PTR DS:[4AEA74] ; | 004AE876 |. B2 02 MOV DL,2 ; | 004AE878 |. B8 80EA4A00 MOV EAX,OGG_TO_R.004AEA80 ; |Invalid register code! Please retry! 004AE87D |. E8 4E74F8FF CALL OGG_TO_R.00435CD0 ; \OGG_TO_R.00435CD0 004AE882 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 004AE885 |. E8 1221FDFF CALL OGG_TO_R.0048099C 004AE88A |> 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10] 004AE88D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 004AE890 |. 8B80 10030000 MOV EAX,DWORD PTR DS:[EAX+310] 004AE896 |. E8 C15BFBFF CALL OGG_TO_R.0046445C 004AE89B |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; //用户名 004AE89E |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] 004AE8A1 |. E8 4EA0F5FF CALL OGG_TO_R.004088F4 004AE8A6 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14] 004AE8A9 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 004AE8AC |. E8 77A0F5FF CALL OGG_TO_R.00408928 004AE8B1 |. 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14] ; //用户名 004AE8B4 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 004AE8B7 |. E8 345AF5FF CALL OGG_TO_R.004042F0 004AE8BC |. BF 15000000 MOV EDI,15 004AE8C1 |. BE F05E4B00 MOV ESI,OGG_TO_R.004B5EF0 ; VS88T6-Vs6 004AE8C6 |> 8B45 F8 /MOV EAX,DWORD PTR SS:[EBP-8] ; //用户名 004AE8C9 |. 8B16 |MOV EDX,DWORD PTR DS:[ESI] 004AE8CB |. E8 945DF5FF |CALL OGG_TO_R.00404664 ; //比较CALL 004AE8D0 |. 75 04 |JNZ SHORT OGG_TO_R.004AE8D6 ; //不等则跳 004AE8D2 |. 33DB |XOR EBX,EBX 004AE8D4 |. EB 06 |JMP SHORT OGG_TO_R.004AE8DC 004AE8D6 |> 83C6 04 |ADD ESI,4 004AE8D9 |. 4F |DEC EDI 004AE8DA |.^ 75 EA \JNZ SHORT OGG_TO_R.004AE8C6 ; //循环,比较输入的用户名是否在内置的用户名库之中 004AE8DC |> 84DB TEST BL,BL 004AE8DE |. 74 1A JE SHORT OGG_TO_R.004AE8FA 004AE8E0 |. 6A 00 PUSH 0 ; /Arg1 = 00000000 004AE8E2 |. 66:8B0D 74EA4>MOV CX,WORD PTR DS:[4AEA74] ; | 004AE8E9 |. B2 02 MOV DL,2 ; | 004AE8EB |. B8 80EA4A00 MOV EAX,OGG_TO_R.004AEA80 ; |Invalid register code! Please retry! 004AE8F0 |. E8 DB73F8FF CALL OGG_TO_R.00435CD0 ; \OGG_TO_R.00435CD0 004AE8F5 |. E9 30010000 JMP OGG_TO_R.004AEA2A 004AE8FA |> 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18] 004AE8FD |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 004AE900 |. 8B80 14030000 MOV EAX,DWORD PTR DS:[EAX+314] 004AE906 |. E8 515BFBFF CALL OGG_TO_R.0046445C 004AE90B |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] ; //试练码 004AE90E |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C] 004AE911 |. E8 DE9FF5FF CALL OGG_TO_R.004088F4 004AE916 |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C] 004AE919 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] 004AE91C |. E8 07A0F5FF CALL OGG_TO_R.00408928 004AE921 |. 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C] 004AE924 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 004AE927 |. E8 C459F5FF CALL OGG_TO_R.004042F0 004AE92C |. 837D F8 00 CMP DWORD PTR SS:[EBP-8],0 004AE930 |. 0F84 F4000000 JE OGG_TO_R.004AEA2A ; //用户名为空则跳 004AE936 |. 837D F4 00 CMP DWORD PTR SS:[EBP-C],0 004AE93A |. 0F84 EA000000 JE OGG_TO_R.004AEA2A ; //注册码为空则跳 004AE940 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] 004AE943 |. E8 D05BF5FF CALL OGG_TO_R.00404518 004AE948 |. 85C0 TEST EAX,EAX 004AE94A |. 7E 35 JLE SHORT OGG_TO_R.004AE981 004AE94C |. BA 01000000 MOV EDX,1 004AE951 |> 8B4D F4 /MOV ECX,DWORD PTR SS:[EBP-C] ; //试练码 004AE954 |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1] ; //逐位取注册码ASCII码 004AE959 |. 83F9 30 |CMP ECX,30 004AE95C |. 7C 05 |JL SHORT OGG_TO_R.004AE963 ; //小于"0"则跳 004AE95E |. 83F9 39 |CMP ECX,39 004AE961 |. 7E 1A |JLE SHORT OGG_TO_R.004AE97D ; //小于等于"9"则跳 004AE963 |> 6A 00 |PUSH 0 ; /Arg1 = 00000000 004AE965 |. 66:8B0D 74EA4>|MOV CX,WORD PTR DS:[4AEA74] ; | 004AE96C |. B2 02 |MOV DL,2 ; | 004AE96E |. B8 80EA4A00 |MOV EAX,OGG_TO_R.004AEA80 ; |Invalid register code! Please retry! 004AE973 |. E8 5873F8FF |CALL OGG_TO_R.00435CD0 ; \OGG_TO_R.00435CD0 004AE978 |. E9 AD000000 |JMP OGG_TO_R.004AEA2A 004AE97D |> 42 |INC EDX 004AE97E |. 48 |DEC EAX 004AE97F |.^ 75 D0 \JNZ SHORT OGG_TO_R.004AE951 ; //循环,比较注册码里的字符是否全是数字 004AE981 |> 33DB XOR EBX,EBX ; //EBX=0 004AE983 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; //用户名 004AE986 |. E8 8D5BF5FF CALL OGG_TO_R.00404518 004AE98B |. 85C0 TEST EAX,EAX 004AE98D |. 7E 13 JLE SHORT OGG_TO_R.004AE9A2 004AE98F |. BF 01000000 MOV EDI,1 004AE994 |> 8B55 F8 /MOV EDX,DWORD PTR SS:[EBP-8] ; //用户名 004AE997 |. 0FB6543A FF |MOVZX EDX,BYTE PTR DS:[EDX+EDI-1] ; //逐位取用户名ASCII码 004AE99C |. 03DA |ADD EBX,EDX ; //EBX=EBX+EDX 004AE99E |. 47 |INC EDI 004AE99F |. 48 |DEC EAX 004AE9A0 |.^ 75 F2 \JNZ SHORT OGG_TO_R.004AE994 ; //循环,累加用户名ASCII码 004AE9A2 |> 69C3 A3EF0700 IMUL EAX,EBX,7EFA3 ; //EAX=EBX*7EFA3 004AE9A8 |. 05 D5020000 ADD EAX,2D5 ; //EAX=EAX+2D5 004AE9AD |. D1F8 SAR EAX,1 ; //EAX右移1位 004AE9AF |. 79 03 JNS SHORT OGG_TO_R.004AE9B4 004AE9B1 |. 83D0 00 ADC EAX,0 004AE9B4 |> 8BD8 MOV EBX,EAX ; EBX=EAX 004AE9B6 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; //试练码 004AE9B9 |. E8 F2A2F5FF CALL OGG_TO_R.00408CB0 ; //试练码转16进制 004AE9BE |. 3BD8 CMP EBX,EAX ; //关键比较,真假码的16进制比较 004AE9C0 |. 75 53 JNZ SHORT OGG_TO_R.004AEA15 ; //关键跳转 004AE9C2 |. 6A 00 PUSH 0 ; /Arg1 = 00000000 004AE9C4 |. 66:8B0D 74EA4>MOV CX,WORD PTR DS:[4AEA74] ; | 004AE9CB |. B2 02 MOV DL,2 ; | 004AE9CD |. B8 B0EA4A00 MOV EAX,OGG_TO_R.004AEAB0 ; |Congratuation! You have successfully registered! 004AE9D2 |. E8 F972F8FF CALL OGG_TO_R.00435CD0 ; \OGG_TO_R.00435CD0 004AE9D7 |. A1 74624B00 MOV EAX,DWORD PTR DS:[4B6274] 004AE9DC |. C600 01 MOV BYTE PTR DS:[EAX],1 004AE9DF |. A1 88634B00 MOV EAX,DWORD PTR DS:[4B6388] 004AE9E4 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 004AE9E6 |. 33C9 XOR ECX,ECX 004AE9E8 |. BA 04000000 MOV EDX,4 004AE9ED |. 8B18 MOV EBX,DWORD PTR DS:[EAX] 004AE9EF |. FF53 14 CALL DWORD PTR DS:[EBX+14] 004AE9F2 |. 8B15 74624B00 MOV EDX,DWORD PTR DS:[4B6274] ; OGG_TO_R.004B81D4 004AE9F8 |. A1 88634B00 MOV EAX,DWORD PTR DS:[4B6388] 004AE9FD |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 004AE9FF |. B9 01000000 MOV ECX,1 004AEA04 |. E8 3B04F7FF CALL OGG_TO_R.0041EE44 004AEA09 |. A1 F87D4B00 MOV EAX,DWORD PTR DS:[4B7DF8] 004AEA0E |. E8 891FFDFF CALL OGG_TO_R.0048099C 004AEA13 |. EB 15 JMP SHORT OGG_TO_R.004AEA2A 004AEA15 |> 6A 00 PUSH 0 ; /Arg1 = 00000000 004AEA17 |. 66:8B0D 74EA4>MOV CX,WORD PTR DS:[4AEA74] ; | 004AEA1E |. B2 02 MOV DL,2 ; | 004AEA20 |. B8 80EA4A00 MOV EAX,OGG_TO_R.004AEA80 ; |Invalid register code! Please retry! 004AEA25 |. E8 A672F8FF CALL OGG_TO_R.00435CD0 ; \OGG_TO_R.00435CD0 004AEA2A |> 33C0 XOR EAX,EAX 004AEA2C |. 5A POP EDX 004AEA2D |. 59 POP ECX 004AEA2E |. 59 POP ECX 004AEA2F |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 004AEA32 |. 68 6CEA4A00 PUSH OGG_TO_R.004AEA6C 004AEA37 |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] 004AEA3A |. E8 1958F5FF CALL OGG_TO_R.00404258 004AEA3F |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 004AEA42 |. E8 1158F5FF CALL OGG_TO_R.00404258 004AEA47 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14] 004AEA4A |. E8 0958F5FF CALL OGG_TO_R.00404258 004AEA4F |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] 004AEA52 |. E8 0158F5FF CALL OGG_TO_R.00404258 004AEA57 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 004AEA5A |. BA 02000000 MOV EDX,2 004AEA5F |. E8 1858F5FF CALL OGG_TO_R.0040427C 004AEA64 \. C3 RETN 004AEA65 .^ E9 3251F5FF JMP OGG_TO_R.00403B9C 004AEA6A .^ EB CB JMP SHORT OGG_TO_R.004AEA37 004AEA6C . 5F POP EDI 004AEA6D . 5E POP ESI 004AEA6E . 5B POP EBX 004AEA6F . 8BE5 MOV ESP,EBP 004AEA71 . 5D POP EBP 004AEA72 . C3 RETN ============================================================== 内置的用户名 004AE694 56 53 38 38 54 36 2D 56 73 36 00 00 FF FF FF FF VS88T6-Vs6.. 004AE6A4 0A 00 00 00 54 56 36 53 50 36 2D 54 56 36 00 00 ....TV6SP6-TV6.. 004AE6B4 FF FF FF FF 0A 00 00 00 53 31 52 39 50 36 2D 53 ....S1R9P6-S 004AE6C4 56 30 00 00 FF FF FF FF 0A 00 00 00 54 44 52 49 V0......TDRI 004AE6D4 70 36 2D 53 54 36 00 00 FF FF FF FF 0A 00 00 00 p6-ST6...... 004AE6E4 54 44 52 36 54 55 2D 45 56 53 00 00 FF FF FF FF TDR6TU-EVS.. 004AE6F4 0A 00 00 00 54 44 52 55 70 36 2D 53 54 31 00 00 ....TDRUp6-ST1.. 004AE704 FF FF FF FF 0A 00 00 00 54 73 66 48 70 36 2D 56 ....TsfHp6-V 004AE714 31 31 00 00 FF FF FF FF 0A 00 00 00 42 38 66 59 11......B8fY 004AE724 70 36 2D 56 49 31 00 00 FF FF FF FF 0A 00 00 00 p6-VI1...... 004AE734 42 38 54 44 70 36 2D 56 50 31 00 00 FF FF FF FF B8TDp6-VP1.. 004AE744 0A 00 00 00 42 53 34 35 66 36 2D 50 42 31 00 00 ....BS45f6-PB1.. 004AE754 FF FF FF FF 0A 00 00 00 4F 73 72 66 36 70 2D 56 ....Osrf6p-V 004AE764 4C 31 00 00 FF FF FF FF 0A 00 00 00 4F 66 72 51 L1......OfrQ 004AE774 70 36 2D 56 39 31 00 00 FF FF FF FF 0A 00 00 00 p6-V91...... 004AE784 45 53 72 67 70 36 2D 37 37 31 00 00 FF FF FF FF ESrgp6-771.. 004AE794 0A 00 00 00 49 55 72 67 36 36 2D 56 50 37 00 00 ....IUrg66-VP7.. 004AE7A4 FF FF FF FF 0A 00 00 00 49 55 44 4B 54 36 2D 42 ....IUDKT6-B 004AE7B4 58 31 00 00 FF FF FF FF 0A 00 00 00 44 55 49 48 X1......DUIH 004AE7C4 54 36 2D 74 56 31 00 00 FF FF FF FF 0A 00 00 00 T6-tV1...... 004AE7D4 53 31 45 49 54 36 2D 44 56 31 00 00 FF FF FF FF S1EIT6-DV1.. 004AE7E4 09 00 00 00 53 4E 4D 53 36 2D 44 56 31 00 00 00 ....SNMS6-DV1... 004AE7F4 FF FF FF FF 0A 00 00 00 53 4E 57 49 53 36 2D 54 ....SNWIS6-T 004AE804 4E 31 00 00 FF FF FF FF 0A 00 00 00 53 4E 57 49 N1......SNWI 004AE814 53 36 2D 4D 4F 33 00 00 FF FF FF FF 0A 00 00 00 S6-MO3...... 004AE824 54 44 56 54 53 36 2D 4D 4D 33 00 00 A1 F8 7D 4B TDVTS6-MM3..▲}K
【破解总结】
--------------------------------------------------------------
【算法总结】
用户名必须是内置用户名中的一个,然后经过累加用户名ASC值,乘以7EFA3,加上2D5,右移1位后,与注册码16进制比较
--------------------------------------------------------------
【算法注册机】
〖易语言代码〗
.版本 2 .子程序 _按钮1_被单击 .局部变量 Name, 文本型, , "21" .局部变量 Code, 文本型 .局部变量 x, 整数型 .局部变量 y, 整数型 .局部变量 i, 整数型 .局部变量 n, 整数型 置随机数种子 () n = 取随机数 (1, 21) Name [1] = “VS88T6-Vs6” Name [2] = “TV6SP6-TV6” Name [3] = “S1R9P6-SV0” Name [4] = “TDRIp6-ST6” Name [5] = “TDR6TU-EVS” Name [6] = “TDRUp6-ST1” Name [7] = “TsfHp6-V11” Name [8] = “B8fYp6-VI1” Name [9] = “B8TDp6-VP1” Name [10] = “BS45f6-PB1” Name [11] = “Osrf6p-VL1” Name [12] = “OfrQp6-V91” Name [13] = “ESrgp6-771” Name [14] = “IUrg66-VP7” Name [15] = “IUDKT6-BX1” Name [16] = “DUIHT6-tV1” Name [17] = “S1EIT6-DV1” Name [18] = “SNMS6-DV1” Name [19] = “SNWIS6-TN1” Name [20] = “SNWIS6-MO3” Name [21] = “TDVTS6-MM3” 编辑框1.内容 = Name [n] x = 0 .计次循环首 (取文本长度 (编辑框1.内容), i) x = x + 取代码 (编辑框1.内容, i) .计次循环尾 () y = 右移 (x × 十六进制到十进制 (“7EFA3”) + 十六进制到十进制 (“2D5”), 1) 编辑框2.内容 = 到文本 (y) .子程序 十六进制到十进制, 整数型 .参数 十六进制文本, 文本型 .局部变量 文本, 文本型 .局部变量 最终值, 整数型 .局部变量 i, 整数型, , , 中间循环变量 .局部变量 临时数值, 文本型, , , 每一位上的值 文本 = 到小写 (十六进制文本) .变量循环首 (1, 取文本长度 (文本), 1, i) 临时数值 = 取文本中间 (文本, i, 1) .如果 (取代码 (临时数值, ) ≥ 取代码 (“a”, ) 且 取代码 (临时数值, ) ≤ 取代码 (“f”, )) 最终值 = 最终值 + (取代码 (临时数值, ) - 取代码 (“a”, ) + 10) × 求次方 (16, 取文本长度 (文本) - i) .否则 最终值 = 最终值 + 到数值 (临时数值) × 求次方 (16, 取文本长度 (文本) - i) .如果结束 .变量循环尾 () 返回 (最终值)
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及徐超等所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
_/_/_/ _/ _/ _/_/_/
_/ _/ _/ _/ _/
_/_/_/ _/_/ _/_/_/_/
_/ _/ _/ _/
_/ _/ _/_/_/ _/ tianxj