脫掉QSound Qmp3D V1.0的vbox殼 (2千字)

看雪資料發表於2002-07-22

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]

相關文章