• 标 题:脱掉QSound Qmp3D V1.0的vbox壳 (2千字)
  • 作 者:zombieys
  • 时 间:2002-7-22 10:43:05
  • 链 接:http://bbs.pediy.com

Program          : QSound Qmp3D Version 1.0
Type            : a multi-function audio enhancement plug-in for the Winamp MP3 player
OS              : only for Win9x/2K
Protection      : Vbox 4.3 Preview
Homepage        : http://www.qsound.com/
Download        :

Cracked by      : zombieys[CCG]
Release type    : full unpacked
Release date    : Jul 22,2002
Release name    : cr-dsp_qsnd.dll (430,080 bytes)
Release Download : http://8287.my.west163.com/cr-dsp_qsnd.rar


    第一次接触dll文件脱壳,极其不适应,花了2整天搞定。要感谢ljttt老大的指点了,大脱神呀^^


1.找oep

    首先执行icedump,运行winamp,加载dsp插件qsound,弹出vbox对话框,下bpx getprocaddress,按f5。点continued后被中断,按一下f12来到这里

01A7:0700BB36  PUSH      DWORD PTR [EBP-20]
01A7:0700BB39  CALL      [KERNEL32!GetProcAddress]
01A7:0700BB3F  MOV        EDI,EAX
01A7:0700BB41  CMP        EDI,EBX
01A7:0700BB43  JZ        0700BCE6
01A7:0700BB49  MOV        ESI,[ESI+16]
01A7:0700BB4C  ADD        ESI,[EBP+08]
01A7:0700BB4F  CMP        [EBP-24],EBX
01A7:0700BB52  JZ        0700BB89    -〉jmp 700bb89

上面代码用来控制是否破坏it表,所以必须要他跳过去。
省略跟踪过成,原因是不记得怎么找到oep的了:(
当来到

01A7:7007f57  SETZ CL
01A7:7007f5A  TEST EAX,EAX
01A7:7007f5C  MOV [EBP+08],ECX
01A7:7007f5F  JNZ 7007F71
01A7:7007f61  PUSH DWORD PTR [EBP+14]
01A7:7007f64  PUSH DWORD PTR [EBP+10]
01A7:7007f67  PUSH DWORD PTR [EBP+0C]
01A7:7007f6A  CALL EAX                  ->按f8进去就是程序的入口了
01A7:7007f6C  MOV [ESI+18],EAX
01A7:7007f6F  JMP 7007E75

Entry Point:15480


2.dump程序,提取it表
   
    在入口处下a,jmp eip,用lordpe来dump dsp_qsnd.dll进程(用prodump会死掉的),dump出来的大约有568kb。运行ImportREC,oep填15480,找到it表后保存。


3.修复程序(最麻烦最花时间的工作)

    用peditor删掉除Preview以外的所有sections,用winhex删除相应的数据只剩下大约416kb,再用ImportREC添加一个it表。重新给dll文件分配sections并修改Directory table中的Export table,Import table,Rescoures,Basereloce,Import address table为正确的值,修改Base of data以及Size of image为正确的值,把image base修改成对应的值(一开始不知道要改这个,花了我好长时间, 笨呐)。

4.测试正常运行for Win9x/2K,not for Winme(程序比较老)

ok到此为止

2002.7.22
zombieys[CCG]/[iPB]