【破文标题】MP3 Cutter Joiner最新版 算法分析+Delphi嵌入汇编注册机
【破文作者】Playboysen
【作者邮箱】playboysen@126.com
【作者主页】playboysen2.photo.163.com
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件名称】MP3 Cutter Joiner
【软件大小】2.94 MB
【软件类别】国外软件/音频编辑
【软件授权】共享版
【软件语言】英文
【更新时间】2008-8-8 【奥运献礼】
【原版下载】http://www.audiotoolsfactory.com/mp3cutter/mp3cutter.htm
【保护方式】用户名、注册码
【软件简介】MP3 Cutter Joiner是一款功能强大、简单易用的音频编辑工具,可以将音频文件进行分割,也可以将多个音频文件合并为一个文件,支持MP3、WAV、WMA以及OGG格式,支持批量处理,通过内置的音频播放器,用户可以预先听取音频文件然后设置分隔/合并时的开始/结束时间。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
初学破解与编程,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------
【破解内容】
昨天七夕,写了一篇算法分析“【七夕礼物】Power Video Converter算法分析+另类注册机”,以纪念我们中国自己的“情人节”,图个彩头(*^__^*) 嘻嘻……
可今天是咱们的奥运开幕——2008年8月8日,快8点了,呵呵我得快点,回去看开幕式去,支持中国!这样的一个特别的日子,当然也不舍得错过,一鼓作气再写一篇,奥运献礼,一是希望自己明年毕业时能找到像样的工作,二是祝福我们论坛越干越火,三是诅咒大家生活越过越顺,男孩没娶的娶,女孩该嫁的嫁,百年梦想今实现,大伙天天好心情!!
抓紧时间来入正题哦,OD载入试运行知道是用户名注册码保护,无壳,加载查找字符串定位关键,输入假码立即断下:
004B2079 |. 8D55 F4 lea edx, dword ptr [ebp-C]
004B207C |. 8B87 1C030000 mov eax, dword ptr [edi+31C]
004B2082 |. E8 CD65FBFF call 00468654 ; 求用户名长度
004B2087 |. 8B45 F4 mov eax, dword ptr [ebp-C] ; 用户名入EAX
004B208A |. 8D55 FC lea edx, dword ptr [ebp-4]
004B208D |. E8 3E67F5FF call 004087D0
004B2092 |. 8D55 F0 lea edx, dword ptr [ebp-10]
004B2095 |. 8B45 FC mov eax, dword ptr [ebp-4]
004B2098 |. E8 6767F5FF call 00408804
004B209D |. 8B55 F0 mov edx, dword ptr [ebp-10]
004B20A0 |. 8D45 FC lea eax, dword ptr [ebp-4]
004B20A3 |. E8 3822F5FF call 004042E0
004B20A8 |. BB 15000000 mov ebx, 15
004B20AD |. BE EC1B4C00 mov esi, 004C1BEC
004B20B2 |> 8B45 FC /mov eax, dword ptr [ebp-4] ; 用户名放入EAX
004B20B5 |. 8B16 |mov edx, dword ptr [esi] ; 此处查看数据窗口会发现一个用户名表
004B20B7 |. E8 9825F5FF |call 00404654
004B20BC |. 75 09 |jnz short 004B20C7
004B20BE |. C605 5C3E4C00>|mov byte ptr [4C3E5C], 0
004B20C5 |. EB 06 |jmp short 004B20CD
004B20C7 |> 83C6 04 |add esi, 4
004B20CA |. 4B |dec ebx
004B20CB |.^ 75 E5 \jnz short 004B20B2 ; 上面这个循环是在比较用户名是否是软件预定义的20多个用户名中的一个
004B20CD |> 803D 5C3E4C00>cmp byte ptr [4C3E5C], 0 ; 用户名若不是预定义的用户名中的一个,则提示错误
004B20D4 |. 74 1A je short 004B20F0
004B20D6 |. 6A 00 push 0 ; /Arg1 = 00000000
004B20D8 |. 66:8B0D FC224>mov cx, word ptr [4B22FC] ; |
004B20DF |. B2 02 mov dl, 2 ; |
004B20E1 |. B8 08234B00 mov eax, 004B2308 ; |invalid register code! please retry!
004B20E6 |. E8 B13BF8FF call 00435C9C ; \MP3_Cutt.00435C9C
004B20EB |. E9 C0010000 jmp 004B22B0
004B20F0 |> 8D55 EC lea edx, dword ptr [ebp-14]
004B20F3 |. 8B87 20030000 mov eax, dword ptr [edi+320]
004B20F9 |. E8 5665FBFF call 00468654
004B20FE |. 8B45 EC mov eax, dword ptr [ebp-14] ; 假码放入EAX
004B2101 |. 8D55 F8 lea edx, dword ptr [ebp-8]
004B2104 |. E8 C766F5FF call 004087D0
004B2109 |. 8D55 E8 lea edx, dword ptr [ebp-18]
004B210C |. 8B45 F8 mov eax, dword ptr [ebp-8]
004B210F |. E8 F066F5FF call 00408804
004B2114 |. 8B55 E8 mov edx, dword ptr [ebp-18]
004B2117 |. 8D45 F8 lea eax, dword ptr [ebp-8]
004B211A |. E8 C121F5FF call 004042E0
004B211F |. 837D FC 00 cmp dword ptr [ebp-4], 0 ; 比较用户名是否为空
004B2123 |. 0F84 87010000 je 004B22B0
004B2129 |. 837D F8 00 cmp dword ptr [ebp-8], 0 ; 比较注册码是否为空
004B212D |. 0F84 7D010000 je 004B22B0
004B2133 |. 8B45 F8 mov eax, dword ptr [ebp-8] ; 假码入栈
004B2136 |. E8 CD23F5FF call 00404508 ; 求假码长度
004B213B |. 85C0 test eax, eax
004B213D |. 7E 35 jle short 004B2174
004B213F |. BA 01000000 mov edx, 1
004B2144 |> 8B4D F8 /mov ecx, dword ptr [ebp-8] ; 这个循环是在检测用户名是不是数字,不是则提示错误
004B2147 |. 0FB64C11 FF |movzx ecx, byte ptr [ecx+edx-1]
004B214C |. 83F9 30 |cmp ecx, 30
004B214F |. 7C 05 |jl short 004B2156
004B2151 |. 83F9 39 |cmp ecx, 39
004B2154 |. 7E 1A |jle short 004B2170
004B2156 |> 6A 00 |push 0 ; /Arg1 = 00000000
004B2158 |. 66:8B0D FC224>|mov cx, word ptr [4B22FC] ; |
004B215F |. B2 02 |mov dl, 2 ; |
004B2161 |. B8 08234B00 |mov eax, 004B2308 ; |invalid register code! please retry!
004B2166 |. E8 313BF8FF |call 00435C9C ; \MP3_Cutt.00435C9C
004B216B |. E9 40010000 |jmp 004B22B0
004B2170 |> 42 |inc edx
004B2171 |. 48 |dec eax
004B2172 |.^ 75 D0 \jnz short 004B2144
004B2174 |> 33F6 xor esi, esi
004B2176 |. 8B45 FC mov eax, dword ptr [ebp-4]
004B2179 |. E8 8A23F5FF call 00404508 ; 计算用户名长度
004B217E |. 85C0 test eax, eax
004B2180 |. 7E 13 jle short 004B2195
004B2182 |. BB 01000000 mov ebx, 1
004B2187 |> 8B55 FC /mov edx, dword ptr [ebp-4] ; 求用户名十六进制和,设为Sum
004B218A |. 0FB6541A FF |movzx edx, byte ptr [edx+ebx-1]
004B218F |. 03F2 |add esi, edx
004B2191 |. 43 |inc ebx
004B2192 |. 48 |dec eax
004B2193 |.^ 75 F2 \jnz short 004B2187
004B2195 |> 69C6 9FF30700 imul eax, esi, 7F39F ; 把Sum*0x7F39F的值放入EAX
004B219B |. 83C0 20 add eax, 20 ; 上一步求出的值加上0x20
004B219E |. D1F8 sar eax, 1 ; 对EAX的值算数右移1位,值依旧放入EAX
004B21A0 |. 79 03 jns short 004B21A5 ; 非负跳转
004B21A2 |. 83D0 00 adc eax, 0 ; EAX+0+CF标志位
004B21A5 |> 8BF0 mov esi, eax ; 把根据用户民求出的值放入ESI保存(即真正的注册码)
004B21A7 |. 8B45 F8 mov eax, dword ptr [ebp-8] ; 假码放入EAX
004B21AA |. E8 DD69F5FF call 00408B8C ; 这个函数应该是strtoint,然后inttohex,既然核心算法已经结束,我们就不看了
004B21AF |. 3BF0 cmp esi, eax
004B21B1 |. 75 56 jnz short 004B2209 ; 很明显,跳向错误哦
004B21B3 |. 6A 00 push 0 ; /Arg1 = 00000000
004B21B5 |. 66:8B0D FC224>mov cx, word ptr [4B22FC] ; |
004B21BC |. B2 02 mov dl, 2 ; |
004B21BE |. B8 38234B00 mov eax, 004B2338 ; |congratulation! you have successfully registered!
004B21C3 |. E8 D43AF8FF call 00435C9C ; \MP3_Cutt.00435C9C
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件: