UNPack CommView v.3.0 (8千字)
作個自我介紹先,我叫Liotta[BCG],CRACK初學者,請多關照。
下文簡述Asprotect1.3脫殼及重構問題,僅供新手參考。
CommView v.3.0
關於CommView:
CommView is a program for monitoring Internet and Local Area
Network (LAN) activity capable of capturing and analyzing
network packets. It gathers information about data passing
through your dial-up connection or Ethernet card and decodes
the analyzed data.
WWW: http://www.tamos.com
目標 :CV.exe
Entry Point :00001000 Image Base :00400000
Base of Data :00177000 Size of Image
:001E5000
相關工具:
FI
Peditor
Softice
icedump + iceload
ImpREC
參考文件:
ljttt “對Asprotect脫殼的一點總結”
fs0 “脫Advanced Email Extractor PRO的殼 ”
一,脫殼
用FI查一查CV.exe的保護方式,顯示是用Asprotect.V1.2?加殼的。
現在讓我們來找到CV.exe的OEP。找OEP方法請參考以上文件。
我是這樣做的:
用iceload裝入CV.exe
BPX GetProcAddress中斷進入加殼程式,
BD*
按幾下F12來到
017F:01791AD0 55
PUSH EBP
017F:01791AD1 8BEC
MOV EBP,ESP
017F:01791AD3 83C4F4 ADD
ESP,-0C
017F:01791AD6 E85516FFFF CALL
01783130
017F:01791ADB 0F856B23FFFF JNZ
01783E4C
017F:01791AE1 E82228FFFF CALL
01784308
017F:01791AE6 E8DD6FFFFF CALL
01788AC8
017F:01791AEB E86C79FFFF CALL
0178945C
017F:01791AF0 E89BA4FFFF CALL
0178BF90
017F:01791AF5 E85223FFFF CALL
01783E4C <--按F8進入
按F10一會就到一段所謂SEH(Structure Exception Handling)反跟蹤程式碼
如果你不小心中招,可用icedump中的/tracex 400000 eip-8來回到正道。
017F:01790614 31C0
XOR EAX,EAX
017F:01790616 C3
RET <--小心SEH,向下看看
017F:01790617 EB01
JMP 0179061A
017F:01790619 E831C0EB02 CALL
0464C64F
017F:0179061E CD20
INT 20 VXDJmp EB30,7F64
017F:01790624 01E9
ADD ECX,EBP
017F:01790626 648920 MOV
FS:[EAX],ESP
017F:01790629 3100
XOR [EAX],EAX
017F:0179062B EB01
JMP 0179062E <--在該行按F7直接跳到這裡
017F:0179062D 68648F0500 PUSH
00058F64
按F8幾次來到
017F:01790639 58
POP EAX
017F:0179063A 6830E27801 PUSH
0178E230 <--以下是可選擇的斷點
017F:0179063F 6864077901 PUSH
01790764
017F:01790644 68DCFC7801 PUSH
0178FCDC
017F:01790649 688CF97801 PUSH
0178F98C
017F:0179064E 6864F37801 PUSH
0178F364
017F:01790653 68F4ED7801 PUSH
0178EDF4
017F:01790658 6878007901 PUSH
01790078
017F:0179065D C3
RET
下斷點bpx 0178e230
你如果想了解Asprotect是如何還原資料及處理DLL,可參考
fs0的“脫Advanced Email Extractor PRO的殼 ”一文
按F10來到
017F:017911C4 68FF691A33 PUSH
331A69FF
017F:017911C9 6850250000 PUSH
00002550
017F:017911CE 6870EC0000 PUSH
0000EC70
017F:017911D3 6800600100 PUSH
00016000
017F:017911D8 FF3514307901 PUSH
DWORD PTR [01793014]
017F:017911DE E801000000 CALL
017911E4 <--注意花指令
017F:017911E3 8183C404E888B8FFFFE8ADD DWORD PTR [EBX+88E804C4],E8FFFFB8
017F:017911ED 0100
ADD [EAX],EAX
017F:017911EF 0000
ADD [EAX],AL
017F:017911F1 8183C404310424E80100ADD DWORD PTR [EBX+043104C4],0001E824
017F:017911FB 0000
ADD [EAX],AL
017F:017911FD 6883C4048B PUSH
8B04C483
017F:01791202 0514307901 ADD
EAX,01793014
017F:01791207 E802000000 CALL
0179120E <--按F8進入
017F:0179120C E86883C404 CALL
063D9579
017F:01791211 010424 ADD
[ESP],EAX
017F:01791214 C3
RET
017F:01791215 C3
RET
按F10來到
017F:01790060 B8BC397901 MOV
EAX,017939BC
017F:01790065 BA0A000000 MOV
EDX,0000000A
017F:0179006A E8A9C2FFFF CALL
0178C318 <--F10略過
017F:0179006F E82CFEFFFF CALL
0178FEA0 <--F8進入
017F:01790074 C3
RET
按F10來到
017F:0178FFE5 B9A4397901 MOV
ECX,017939A4
017F:0178FFEA 8D45F8 LEA
EAX,[EBP-08]
017F:0178FFED BA04000000 MOV
EDX,00000004
017F:0178FFF2 E879C4FFFF CALL
0178C470 <--F10略過
017F:0178FFF7 E815000000 CALL
01790011 <--F8進入
017F:0178FFFC 8B44240C MOV
EAX,[ESP+0C]
017F:01790000 8380B800000002 ADD
DWORD PTR [EAX+000000B8],02
017F:01790007 C7401800000000 MOV
DWORD PTR [EAX+18],00000000
017F:0179000E 31C0
XOR EAX,EAX
017F:01790010 C3
RET
以下有段指令比較花,可用icedump中的/tracex 400000 eip-8來找到OEP
CV.exe的OEP是00576164-00400000
然後用/dump 400000 001E5000 c:\dump.exe
A EIP
017F:00576164 JMP EIP
按F5回到Windows
把c:\dump.exe複製到CommView的安裝目錄下
再用Peditor的dumpfixer來修改dump.exe,並改CV.exe的OEP是00176164
然後用ImpREC重構輸入表,完成後不要忘了KILL這個程式。
二,用ImpREC重構輸入表
在ImpREC中"Attach to an Active Process"下拉框中選擇目標CV.exe,
填入OEP,按"IAT AutoSearch"、"Get Import"、"Auto Trace",
接著按"Show Invalid",發現有6個KERNEL32.dll未知函式
Target: C:\TOOLS\COMMVIEW\CV.EXE
OEP: 00176164 IATRVA: 00189204 IATSize:
000008F4
RVA ModuleName
PTR
(1) 00189274 ?
0178C960
(2) 001893D0 ?
0178C968
(3) 00189414 ?
0178C928
(4) 00189474 ?
0178C958
(5) 00189478 ?
0178C950
(6) 00189480 ?
0178C974
記下這些未知函式的RVA和PTR,並Save Tree。
然後設斷BPX GetVersion並再次裝入目標程式
017F:0178C7BC 6A00
PUSH 00
017F:0178C7BE E8897CFFFF CALL
KERNEL32!GetModuleHandleA
017F:0178C7C3 A34C367901 MOV
[0179364C],EAX
017F:0178C7C8 E8977CFFFF CALL
KERNEL32!GetVersion <--(3)號未知函式
017F:0178C7CD A344367901 MOV
[01793644],EAX
017F:0178C7D2 68AC357901 PUSH
017935AC
017F:0178C7D7 E8907CFFFF CALL
KERNEL32!GetVersionExA
017F:0178C7DC E83B7CFFFF CALL
KERNEL32!GetCurrentProcess <--(5)號未知函式
017F:0178C7E1 A348367901 MOV
[01793648],EAX
017F:0178C7E6 E8397CFFFF CALL
KERNEL32!GetCurrentProcessId <--(4)號未知函式
017F:0178C7EB A350367901 MOV
[01793650],EAX
017F:0178C7F0 E81F7CFFFF CALL
KERNEL32!GetCommandLineA <--(1)號未知函式
017F:0178C7F5 A340367901 MOV
[01793640],EAX <-a-注意01793640
017F:0178C7FA C3
RET
對於每項未知函式都先u PTR看看。
如(1):
u 0178C960
017F:0178C960 A140367901 MOV
EAX,[01793640] <-b-注意01793640
017F:0178C965 C3
RET
看到的吧!a和b處方括號內的地址是相同的,故(1)號未知函式是KERNEL32!GetCommandLineA
同理
(3)
u 0178C928
017F:0178C928 A144367901 MOV
EAX,[01793644]
017F:0178C92D C3
RET
(3)號未知函式是KERNEL32!GetVersion
(4)
u 0178C958
017F:0178C958 A150367901 MOV
EAX,[01793650]
017F:0178C95D C3
RET
(4)號未知函式是KERNEL32!GetCurrentProcessId
(5)
u 0178C950
017F:0178C950 A148367901 MOV
EAX,[01793648]
017F:0178C955 C3
RET
(5)號未知函式是KERNEL32!GetCurrentProcess
另外二個比較複雜,請參考fs0的“脫Advanced Email Extractor PRO的殼 ”一文
(2)
u 0178C968
017F:0178C968 55
PUSH EBP
017F:0178C969 8BEC
MOV EBP,ESP
017F:0178C96B 8B4508 MOV
EAX,[EBP+08]
017F:0178C96E 5D
POP EBP
017F:0178C96F C20400 RET
0004
(2)號未知函式是KERNEL32.dll!LockResource
(6)
u 0178C974
017F:0178C974 55
PUSH EBP
017F:0178C975 8BEC
MOV EBP,ESP
017F:0178C977 5D
POP EBP
017F:0178C978 C20400 RET
0004
(6)號未知函式是KERNEL32.dll!FreeResource
修復完輸入表後,就可"Fix Dump",為了避免不必要的麻煩我們還是"add new section"吧。
完工。咦,執行……沒反應!
那裡出問題了?
讓我們LOAD脫殼後的程式,來到
017F:00576A21 E8A229EFFF CALL
004693C8
017F:00576A26 3D00CC0A00 CMP
EAX,000ACC00 <--改EAX=000ACC00就OK
017F:00576A2B 7405
JZ 00576A32 <--不等就退出
017F:00576A2D E8DAD2E8FF CALL
00403D0C <--退出處理
017F:00576A32 8B0D7CDC5700 MOV
ECX,[0057DC7C]
017F:00576A38 A1F8D95700 MOV
EAX,[0057D9F8]
017F:00576A3D 8B00
MOV EAX,[EAX]
017F:00576A3F 8B1520115600 MOV
EDX,[00561120]
017F:00576A45 E822E7EDFF CALL
0045516C
在SOFTICE中修改EAX=000ACC00後就一切OK。請注意,直接改74->EB無效,好像在前面有段還原始碼。
難道還要SMC,請高手指點!
相關文章
- winimage完全破解 (8千字)2001-07-04
- 初學者(8) (4千字)2000-05-07
- 初學者(10) (8千字)2000-05-14
- 嘗試使用 pack 與 unpack 函式2019-03-15函式
- GO 實現一個 PACK 和 UnPack2019-07-21Go
- PHP 中,pack 與 unpack 的使用示例。2022-04-15PHP
- Java 程式的破解方法 (8千字)2002-08-15Java
- 八字解析_1.21 (8千字)2002-11-07
- 我的破解心得(8) (2千字)2001-03-13
- WebLogic10.3 domain克隆方式 - pack, unpack2013-05-01WebAI
- ThemeFreak V1.6破解 (8千字)2001-03-07
- 炒股理財1.65破解方法 (8千字)2001-04-13
- Trojan Remover 4.3.0破解手記 (8千字)2001-08-31REM
- 破解GIF Movie Gear 3.01 (8千字)2002-03-13
- Maven - Maven-dependency-plugin (goals "copy-dependencies","unpack") is not supported2018-05-18MavenPluginGo
- winxp總管破解筆記(一) (8千字)2002-10-07筆記
- 贏家股票盤後分析1.2 (8千字)2001-07-07
- 破解WS_FTP Pro 7.02 (8千字)2001-10-28FTP
- SeaMoon Pic Hunter 1.2破解手記 (8千字)2015-11-15
- Python中struct.pack()和struct.unpack()用法詳解2017-03-07PythonStruct
- Password Keeper v6.3破解過程 (8千字)2002-04-12
- 破解華琦庫管精靈1.2.4 (8千字)2000-09-11
- PwlTool的功能限制的破解---DDXia[CCG] (8千字)2001-03-10
- crackcode程式碼分享筆記(一) (8千字)2001-08-09筆記
- 使用KERNEL32.DLL破解???(譯文)
(8千字)2000-08-29
- Python使用struct處理二進位制(pack和unpack用法)2016-10-10PythonStruct
- Update NOW 2000 暴力破解方法! (8千字)2001-02-11
- 如何完美破解winhex9.73的功能限制! (8千字)2001-03-13
- Embird32 防破解技術的分析 (8千字)2001-04-29
- MP3 to EXE v 2.6破解手記 (8千字)2001-09-08
- 用W32DASM破解JPEG Optimizer 4.0 (8千字)2000-02-21ASM
- 乾涸的(Asp maker version 2.2 破解手記) (8千字)2015-11-15
- Python中struct.pack()和struct.unpack()用法詳細說明2017-07-19PythonStruct
- 用ISDCC2破KPT 6的安裝 (8千字)2001-04-17
- 脫Remote Administrator v2.0的殼 (8千字)2001-06-24REM
- git push出現unpack failed: error Missing tree錯誤的解決方法2018-12-03GitAIError
- 輕鬆試卷 V4.5版破解實錄。 (8千字)2002-06-30
- 轉貼一個,linux 解密,www.zoudan.com (8千字)2001-04-14Linux解密