欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

破解MP3随身听! (3千字)

破解MP3随身听! (3千字)

破解MP3随身听!
2002.03.28
    昨天,突发奇想,想破解我的MP3随身听的软件,因为它只让我把MP3文件从计算机传到播放器(播放器即指mp3随身听,下同)里,而不让我把MP3文件传出来,于是我就开始破解,我反汇编了它的主程序,找到了文件类型检查的地方,然后把它改成了空指令,于是它就不进行检查啦,哈哈,我看着它把MP3文件传出来了,太开心了,但是!我发现它把原来的MP3文件重新进行了编码,让我无法还原! 5~5~5~ 怎么这么黑啊!
    今天,我仔细分析了它的数据转换方式,终于用逆向思维写出了转换公式的算法!并且用VB5实现了算法,编译好的程序只有18k,再把这个文件传到MP3播放器里,呵呵这下走到哪里都不怕了!
    我的播放器是MSC DM-N64,主页http://www.vintion.com/,管理软件下载地址:http://www.vintion.com/support/DM-N64driver.zip
    下面是详细的破解过程:
1、mp3文件上传限制的破解
    安装管理软件(选择英文版),在安装好的目录下,找到DM-N64.exe文件。使用W32Dasm8.93将此文件反汇编,在串式参考里找到String Resource ID=59193: "Copy Protection!
MP3 file(s) will not be uploaded into the P",双击它找到对应汇编,向上找,会发现其调用了DM-N64.VxAPI_GetFileType函数取得文件类型,并进行比较,如下:
* Reference To: DM-N64.VxAPI_GetFileType, Ord:0015h
                                  |
:0041C139 FF15A8E04500            Call dword ptr [0045E0A8]
:0041C13F 83C404                  add esp, 00000004
:0041C142 898510FFFFFF            mov dword ptr [ebp+FFFFFF10], eax
:0041C148 83BD10FFFFFF01          cmp dword ptr [ebp+FFFFFF10], 00000001
:0041C14F 7409                    je 0041C15A
:0041C151 83BD10FFFFFF0C          cmp dword ptr [ebp+FFFFFF10], 0000000C
:0041C158 7576                    jne 0041C1D0
    于是将此处 FF 15 A8 E0 45 00 改为空指令 90 90 90 90 90,再进行验证,发现已经解除文件上传的限制。
2、mpm文件格式的转换
    mp3文件下传到播放器里其格式变成为mpm文件,再上传出来一看,发现已经面目全非,于是按照mp3文件的帧格式,自己用UltraEdit32创建了一个只有3帧的mp3文件用于进行测试:其每帧的帧头为FF FB 92 6C,每帧长418字节(帧长计算:帧长 = 144 * 比特率 / 采样频率 + Padding ),共1254字节。具体信息可到http://www.dv.co.yu/mpgscript/mpeghdr.htm 处查阅,此文件除了帧头,其他全用特殊字节填充,方便观察。
用winamp查看显示如下:
Size: 1254 bytes
Header found at: 0 bytes
Length: 0 seconds
MPEG 1.0 layer 3
128kbit, 6 frames
44100Hz Joint Stereo
CRCs: No
Copyrighted: Yes
Original: Yes
Emphasis: None
    将此文件下传到播放器中,再上传出来,发现增加了32字节。去掉此32字节的附加的文件尾,再不断地进行字节比对,终于发现,其按照512个字节一个数据组的方式进行转换,相当于一个16×32的矩阵,转换后的数据仍在此矩阵中,只是位置发生了变化,而且数值被按奇偶数进行了增减1。最后不足512字节的地方,不于转换。
    转换算法整理成公式为:
    mp3_Position = ((mpm_position Mod 512) \ 32) + 16 * ((mpm_position Mod 512) Mod 32) + 512 * (mpm_position \ 512)
    filemp3(mp3_Position) = filempm(mpm_position) - 2 * (filempm(mpm_position) Mod 2) + 1
    此公式以VB写成,"\" 为 "除,取整数","mod" 为 "除,取余数"。
    最后编译成vb5的程序,大小为18k,进行测试,PIII500的机器,转换10M左右的文件,也就2、3秒钟左右。
    好开心啊,这是我的第一个破解,有需要源码和程序的朋友,特别是拥有此款mp3随身听的朋友,请给我写信: hdy@sina.com 。

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功