吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6632|回复: 7
收起左侧

[分享] 宽带MP3录音转换录音器之爆破分析

[复制链接]
孤漂江湖狼 发表于 2008-12-25 11:56
本帖最后由 孤漂江湖狼 于 2010-1-26 07:27 编辑

【破文标题】宽带MP3录音转换录音器之爆破分析
【破文作者】孤漂江湖狼
破解工具】OD,DUP2
【破解平台】WinXP
【软件名称】宽带MP3录音转换录音器
【原版下载】http://www.mpegnet.cn/download/changemp3.rar
【软件简介】
宽网MP3转换录音器是武汉宽网开发且用于MP3制作的工具软件,该产品实现不限时实时MP3录音,FLV、
AMR、WAV、CD、WMA、ASF、WMV、MP4、M4A、AAC转换MP3,CD、WMA、MP3转换WAV,WAV录音,MP3裁减、
分割以及合并等功能,同时提供快速转换、边播边转等三种转换功能。  
------------------------------------------------------------------------
【破解过程】
  一、 程序为无壳VC编写。输入注册码点击注册软件无反应,但当第三次点击时软件会退出,可以通过
下EXIEPROCESS函数断点来定位验证代码,也可以通过查找关键信息来定位,在字符串中,我们可以找到
这样的信息:“产品注册授权成功,谢谢使用”。
   我们可以定位的以下代码:
0041EB23   .  E8 407C0600   call    <jmp.&MFC42.#6334_CWnd::UpdateDa>
0041EB28   .  8B93 F0110000 mov     edx, dword ptr [ebx+11F0]        ;  出现假码
0041EB2E   .  83C9 FF       or      ecx, FFFFFFFF
0041EB31   .  8BFA          mov     edi, edx
0041EB33   .  33C0          xor     eax, eax
0041EB35   .  F2:AE         repne   scas byte ptr es:[edi]
0041EB37   .  F7D1          not     ecx
0041EB39   .  2BF9          sub     edi, ecx
0041EB3B   .  8D6C24 24     lea     ebp, dword ptr [esp+24]
0041EB3F   .  8BC1          mov     eax, ecx
0041EB41   .  8BF7          mov     esi, edi
0041EB43   .  8BFD          mov     edi, ebp
0041EB45   .  C1E9 02       shr     ecx, 2
0041EB48   .  F3:A5         rep     movs dword ptr es:[edi], dword p>;  
0041EB4A   .  8BC8          mov     ecx, eax
0041EB4C   .  83E1 03       and     ecx, 3
0041EB4F   .  F3:A4         rep     movs byte ptr es:[edi], byte ptr>
0041EB51   .  837A F8 10    cmp     dword ptr [edx-8], 10            ;  假码位数与16比较
0041EB55   .  74 1A         je      short 0041EB71                   ;  不跳则执行程序退出

代码
0041EB57   .  8B4B 60       mov     ecx, dword ptr [ebx+60]
0041EB5A   .  41            inc     ecx
0041EB5B   .  8BC1          mov     eax, ecx
0041EB5D   .  894B 60       mov     dword ptr [ebx+60], ecx
0041EB60   .  83F8 03       cmp     eax, 3
0041EB63   .  0F8C 22010000 jl      0041EC8B
0041EB69   .  6A 00         push    0                                ;
0041EB6B   .  FF15 A8C74800 call    dword ptr [<&MSVCRT.exit>]       ; 进程退出CALL
0041EB71   >  8D4C24 14     lea     ecx, dword ptr [esp+14]
0041EB75   .  6A 04         push    4
0041EB77   .  8D5424 28     lea     edx, dword ptr [esp+28]
0041EB7B   .  51            push    ecx
0041EB7C   .  52            push    edx
0041EB7D   .  FF15 6CE24D00 call    dword ptr [4DE26C]               ;
0041EB83   .  83C4 0C       add     esp, 0C
0041EB86   .  B9 02000000   mov     ecx, 2
0041EB8B   .  8D7C24 14     lea     edi, dword ptr [esp+14]
0041EB8F   .  8D73 64       lea     esi, dword ptr [ebx+64]
0041EB92   .  33C0          xor     eax, eax
0041EB94   .  F3:A7         repe    cmps dword ptr es:[edi], dword p>
0041EB96   .  74 1A         je      short 0041EBB2                   ;  关键跳转一,改为jmp
0041EB98   .  8B4B 60       mov     ecx, dword ptr [ebx+60]
0041EB9B   .  41            inc     ecx
0041EB9C   .  8BC1          mov     eax, ecx
0041EB9E   .  894B 60       mov     dword ptr [ebx+60], ecx
0041EBA1   .  83F8 03       cmp     eax, 3
0041EBA4   .  0F8C E1000000 jl      0041EC8B
0041EBAA   .  6A 00         push    0                                ;
0041EBAC   .  FF15 A8C74800 call    dword ptr [<&MSVCRT.exit>]       ; \进程退出CALL
0041EBB2   >  8D4C24 24     lea     ecx, dword ptr [esp+24]
0041EBB6   .  6A 04         push    4
0041EBB8   .  51            push    ecx
0041EBB9   .  FF15 68E24D00 call    dword ptr [4DE268]               ;
0041EBBF   .  83C4 08       add     esp, 8
0041EBC2   .  3D 80000000   cmp     eax, 80
0041EBC7   .  7C 05         jl      short 0041EBCE
0041EBC9   .  2D 80000000   sub     eax, 80
0041EBCE   >  83F8 04       cmp     eax, 4
0041EBD1   .  74 1A         je      short 0041EBED                   ;  关键跳转二,改为jmp
0041EBD3   .  8B4B 60       mov     ecx, dword ptr [ebx+60]
0041EBD6   .  41            inc     ecx
0041EBD7   .  8BC1          mov     eax, ecx
0041EBD9   .  894B 60       mov     dword ptr [ebx+60], ecx
0041EBDC   .  83F8 03       cmp     eax, 3
0041EBDF   .  0F8C A6000000 jl      0041EC8B
0041EBE5   .  6A 00         push    0                                ;
0041EBE7   .  FF15 A8C74800 call    dword ptr [<&MSVCRT.exit>]       ; \进程退出CALL
0041EBED   >  8D4C24 10     lea     ecx, dword ptr [esp+10]
0041EBF1   .  E8 DA030300   call    0044EFD0
0041EBF6   .  8D7C24 24     lea     edi, dword ptr [esp+24]
0041EBFA   .  83C9 FF       or      ecx, FFFFFFFF
0041EBFD   .  33C0          xor     eax, eax
0041EBFF   .  C78424 2C0100>mov     dword ptr [esp+12C], 0
0041EC0A   .  F2:AE         repne   scas byte ptr es:[edi]
0041EC0C   .  F7D1          not     ecx
0041EC0E   .  2BF9          sub     edi, ecx
0041EC10   .  8D4424 24     lea     eax, dword ptr [esp+24]
0041EC14   .  8BD1          mov     edx, ecx
0041EC16   .  8BF7          mov     esi, edi
0041EC18   .  BF 10F64C00   mov     edi, 004CF610
0041EC1D   .  50            push    eax
0041EC1E   .  C1E9 02       shr     ecx, 2
0041EC21   .  F3:A5         rep     movs dword ptr es:[edi], dword p>
0041EC23   .  8BCA          mov     ecx, edx
0041EC25   .  68 38634A00   push    004A6338                         ;  whmpegnet.ini
0041EC2A   .  83E1 03       and     ecx, 3
0041EC2D   .  68 2C634A00   push    004A632C                         ;  注册授权号
0041EC32   .  F3:A4         rep     movs byte ptr es:[edi], byte ptr>
0041EC34   .  68 D0584A00   push    004A58D0                         ;  
0041EC39   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
0041EC3D   .  C705 10DE4D00>mov     dword ptr [4DDE10], 7B
0041EC47   .  E8 C4030300   call    0044F010
0041EC4C   .  8B4B 20       mov     ecx, dword ptr [ebx+20]
0041EC4F   .  6A 01         push    1                                ;
0041EC51   .  6A 00         push    0                                ;
0041EC53   .  51            push    ecx                              ;
0041EC54   .  FF15 14C94800 call    dword ptr [<&USER32.InvalIDAteRe>;
0041EC5A   .  6A 00         push    0
0041EC5C   .  68 485E4A00   push    004A5E48                         ;  产品注册
0041EC61   .  68 10634A00   push    004A6310                         ;  产品注册授权成功,

谢谢使用

  我们可以看到注册码存放在whmpegnet.ini。
二、接下来我们要定位重启验证的代码,下bp GetPrivateProfileStringA函数断点,经过代码返回,单

步跟踪,来到以下代码:
00421A39   . /7F 13         jg      short 00421A4E
00421A3B   . |8B95 9C270000 mov     edx, dword ptr [ebp+279C]
00421A41   . |6A 00         push    0
00421A43   . |50            push    eax
00421A44   . |68 4E010000   push    14E
00421A49   . |52            push    edx
00421A4A   . |FFD7          call    edi
00421A4C   . |EB 37         jmp     short 00421A85
00421A4E   > \8B85 9C270000 mov     eax, dword ptr [ebp+279C]
00421A54   .  6A 00         push    0
00421A56   .  6A 00         push    0
00421A58   .  68 4E010000   push    14E
00421A5D   .  50            push    eax
00421A5E   .  C74424 20 000>mov     dword ptr [esp+20], 0
00421A66   .  FFD7          call    edi
00421A68   .  8B4C24 10     mov     ecx, dword ptr [esp+10]
00421A6C   .  51            push    ecx
00421A6D   .  68 38634A00   push    004A6338                         ;  whmpegnet.ini
00421A72   .  68 D0584A00   push    004A58D0                         ;  宽网mp3转换录音器
00421A77   .  68 446C4A00   push    004A6C44                         ;  
00421A7C   .  8D4C24 24     lea     ecx, dword ptr [esp+24]
00421A80   .  E8 4BD70200   call    0044F1D0                         ;  去硬件码

   继续单步,来到这里:
00421CC3   .  68 38634A00   push    004A6338                         ;  whmpegnet.ini
00421CC8   .  68 2C634A00   push    004A632C                         ;  注册授权号
00421CCD   .  68 D0584A00   push    004A58D0                         ;  宽网mp3转换录音器
00421CD2   .  8D4C24 24     lea     ecx, dword ptr [esp+24]
00421CD6   .  8935 10DE4D00 mov     dword ptr [4DDE10], esi
00421CDC   .  E8 4FD40200   call    0044F130                         ;  取假码
  往后分析没有定位到算法部分,也没找到关键地方。
  就采用另一种方法定位,我们在字符串信息里可以找到:“宽网mp3转换录音器 共享版 v3.80 未注册”。
  定位到如下代码:
00413630   .  FF15 F8C84800 call    dword ptr [<&USER32.GetWindowRec>;
00413636   .  A1 10DE4D00   mov     eax, dword ptr [4DDE10]
0041363B   .  C705 F80C4C00>mov     dword ptr [4C0CF8], 1
00413645   .  83F8 7B       cmp     eax, 7B
00413648      75 07         jnz     short 00413651                      关键跳转,修改为je
0041364A   .  68 74584A00   push    004A5874
0041364F   .  EB 05         jmp     short 00413656
00413651   >  68 4C584A00   push    004A584C                         ;宽网mp3转换录音器 共享版 v3.80 未注册
00413656   >  8BCE          mov     ecx, esi
00413658   .  E8 3B340700   call    <jmp.&MFC42.#6199_CWnd::SetWindo>
  修改跳转后,程序名称现实注册成功。但是仅仅修改这个还是不行。程序存在功能限制。
三、功能限制的去除:
  当你使用一些功能时,程序会退出,我们下EXITPROCESS断点,使用MP3录音功能,会点下来,堆栈回

溯到以下代码:
004356E1   > \E8 CAD2FDFF   call    004129B0                              关键验证CALL
004356E6   .  84C0          test    al, al
004356E8   .  75 13         jnz     short 004356FD                         跳过退出程序CALL
004356EA   .  8B45 00       mov     eax, dword ptr [ebp]
004356ED   .  8BCD          mov     ecx, ebp
004356EF   .  FF90 CC000000 call    dword ptr [eax+CC]
004356F5   .  6A 00         push    0                                      ; /status = 0
004356F7   .  FF15 A8C74800 call    dword ptr [<&MSVCRT.exit>]             ; \exit
  我们进入上面的验证CALL,发现16处地方调用此CALL,猜测至少有16处功能验证,我们把开始的代码:
004129B0      6A FF         push    -1
004129B2      68 AB914800   push    004891AB                              
改为:mov     al, 1
     retn

这样就可以跳过退出程序的CALL了。
  但是程序还是有验证,使用某一功能超过十秒将会出现对话框,提示“共享软件,功能限制,请与武

汉宽网联系注册使用”,查找字符串信息发现16处这种信息,与上面16处调用程序退出CALL相符。但是

通过对照发现在程序调用对话框前都有类似这样的代码:
00435AE1   .  E8 B20F0500   call    <jmp.&MFC42.#6199_CWnd::SetWindo>;  
00435AE6   .  8B8E 00150000 mov     ecx, dword ptr [esi+1500]
00435AEC   .  6A 01         push    1                                ; /Erase = TRUE
00435AEE   .  6A 00         push    0                                ; |pRect = NULL
00435AF0   .  51            push    ecx                              ; |hWnd
00435AF1   .  FF15 14C94800 call    dword ptr [<&USER32.InvalidateRe>; \InvalidateRect
00435AF7   .  833D 10DE4D00>cmp     dword ptr [4DDE10], 7B
00435AFE   . /74 38         je      short 00435B38
  最后一行的跳转代码可以跳过提示的对话框,但是没找到修改一处代码就可以使16处都跳过,只好一一修改了,还请高手在此指点指点。就分析到这里吧,因为不懂算法,就没分析算法。有不对的地方多多指教
  另外在冰糖葫芦论坛看到lmg7005大牛发了完美破解的图片,不知道是采用的什么方法,我破解的怎么有的地方程序错误,还希望指点指点。希望有人写个算法分析学习学习。
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!

免费评分

参与人数 1威望 +1 收起 理由
wgz001 + 1 鼓励原创 52有你更精彩

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wgz001 发表于 2008-12-25 12:57
多谢了   期待更深入的分析  学习

DUP2干什么用的哦

[ 本帖最后由 wgz001 于 2008-12-25 13:00 编辑 ]
binke 发表于 2008-12-25 13:01

回复 2# wgz001 的帖子

制作Patch或者Loader 的工具
界面精美.
Squn 发表于 2008-12-25 13:19
原帖由 wgz001 于 2008-12-25 12:57 发表
多谢了   期待更深入的分析  学习

DUP2干什么用的哦


做补丁的工具。

常用来做loader。
1.GIF
wgz001 发表于 2008-12-25 14:22
多谢了   就是没看到楼主用用   
所以 ....................

[ 本帖最后由 wgz001 于 2008-12-25 14:24 编辑 ]
 楼主| 孤漂江湖狼 发表于 2008-12-25 22:07
在破文里没详细写,利用这个软件的二进制代码模糊搜索来查找功能相近得到代码
半瓶水 发表于 2008-12-26 19:42
赞楼主。待兴致来时也下来研究研究。
天天快乐 发表于 2010-8-30 20:17
看不懂哦 嘻嘻
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 22:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表