PECompact.v1.80.b2解密分析(SMC) - By A Lamer...:) (6千字)
/////////////////////////////////////////////////////////////////////
//
// 目標軟體:PECompact
//
// 軟體版本:1.80 Build 2
//
// 官方網站:http://www.CollakeSoftware.com/
//
// 軟體授權:共享軟體
//
// 作業系統:Win95/98/ME、WinNT/2000
//
// 軟體簡介:知名的PE格式檔案壓縮工具...
//
// 軟體保護:PECompact殼保護
//
/////////////////////////////////////////////////////////////////////
//
// 使用工具:TRW2000 v1.22 娃娃修改版
//
(主要用於除錯分析)
//
//
LordPE Armageddon by y0da
// (Dump
& PE檔案分析修改)
//
// WinHEX
v10.4 SR-3
// (用於PE檔案的16進位制修改)
//
// Hiew v6.70
//
(用於新增SMC程式碼)
//
//
Our Brain...:-)
//
/////////////////////////////////////////////////////////////////////
//
// 關於本文:本文主要目的在於教學,研究PECompact殼的分析及多重SMC解
//
密方法...請勿將此教程用於商業目的。
//
//
Always Your Best Friend: FiNALSErAPH
//
// 水平有限,難免疏漏...
//
// Any Question?
// Mail To: FiNALSErAPH@yahoo.com.cn
//
//
2002-05-10
//
/////////////////////////////////////////////////////////////////////
//
// 第1步:得到可正確執行的脫殼檔案(其實只要DUMP就行,沒必要可執行)
//
/////////////////////////////////////////////////////////////////////
這一步比較簡單,我就不詳細敘述...詳細過程可參看以前的文章。關於OEP可
參看DiKeN的“快速找到PECompact加殼檔案的OEP”
/////////////////////////////////////////////////////////////////////
//
// 第2步:分析脫殼後的檔案,找到我們要修改的地方
//
//
這裡比較有意思的是對於PE檔案控制元件的遮蔽...
//
// 這是最近研究ViRiLiTY做的破解才注意到的。
//
/////////////////////////////////////////////////////////////////////
對於解決日期限制問題就不多說了,比較簡單。
pec1:004011E9
call sub_40542F
pec1:004011EE
mov ds:dword_40D69D,
eax
//返回值是剩餘的使用時間
//修改方法是將0040542F的指令變為ret
pec1:0040542F enter
30h, 0
//MOV b,[0040542F],0C3
/////////////////////////////////////////////////////////////////////
對於顯示Unregister! 我找到以下關鍵點:
pec1:004053A5
push offset aUnregistered ; lpString
//->"Unregistered!"
//這裡的程式碼要改為我們想儲存自己姓名資訊
//的地址。(這個地址可稍後確定)
//MOV
d,[004053A6],????????
pec1:004053AA
push 434h
; nIDDlgItem
pec1:004053AF
push [ebp+hDlg] ; hDlg
pec1:004053B2
call SetDlgItemTextA
/////////////////////////////////////////////////////////////////////
找到控制元件的屬性值,做相應修改...這裡主要依靠Unicode的特殊性加快速度
1)P.L.E.A.S.E. .R.E.G.I.S.T.E.R.!
注意前面最近的P(0x50)(檔案偏移0x13017),我想實際應該是0x50 02 00 00
是指這個控制元件的屬性。根據查到的WINDOWS.INC知道WS_VISIBLE
= 0x10 00 00 00。
所以將0x50 -> 0x40將會使這個控制元件不可見
經過對脫殼檔案的修改(我實際是動態除錯的),可以確定這個結論...
注意:這裡為了做SMC補丁必須計算修改的地方位於記憶體的地址
使用LordPE檢視SECTION:
VOffset VSize ROffset
RSize
.src 00014000 00003000 00012400
00002128
Memory Address = Imagebase + 0x00014000 + (0x00013017
- 0x00012400) = 0x00414C17
得到:MOV b,[00414C17],40
2)S.T.A.T.I.C
Memory Address = Imagebase + 0x00014000 + (0x000131EB - 0x00012400)
= 0x00414DEB
得到:MOV b,[00414DEB],40
3)...這個特徵不明顯,我是根據R.e.s.t.r.a.t.i.o.n.
.I.n.f.o.m.a.t.i.o.n
相對位置推的。準確定位我還不會...:)
Memory Address = Imagebase
+ 0x00014000 + (0x000132D7 - 0x00012400) = 0x00414ED7
得到:MOV b,[00414ED7],40
/////////////////////////////////////////////////////////////////////
//
// 第3步:在即將進入OEP前的地方加上自己的補丁程式碼
//
/////////////////////////////////////////////////////////////////////
即將轉入OEP的程式碼,可是直接在PECOMPACT.EXE裡找不到哦...:)(多重的...)
00441551 6800E04300
PUSH DWORD 0043E000
00441556 C204
RET 04
BPM 00441551...看看這裡的程式碼是什麼時候放進來的
0044119E F3A5 REP MOVSD
執行完後就...不用想了,追ESI->...查到004425FC是這段程式碼。接著下BPM
004425FC
這裡具體怎麼傳資料我倒不用管(我可以在傳輸完整片資料後補),F12到了以下
片段:
004442AF 5D
POP EBP
004442B0 2B7D0C
SUB EDI, [EBP+0C]
004442B3 8BC7
MOV EAX, EDI
004442B5 C9
LEAVE
004442B6 C208
RET 08
注意:這裡你會發現所處位置"PECOMPACT!.rsrc"...而且底下一片0000...000
呵呵,還不偷著樂?
00441551 6800E04300 PUSH DWORD 0043E000
//我要改這條指令,轉向我要補的修改程式碼
//留些餘地,暫時改為JMP 004442D0(E97A2D0000)
//最後可修正為JMP 004442C3(E96D2D0000)
00441556 C204 RET 04
/////////////////////////////////////////////////////////////////////
004442AF
5D POP EBP
004442B0
2B7D0C SUB EDI, [EBP+0C]
004442B3
8BC7 MOV EAX, EDI
//MOV d,[00441551],002D7AE9
//MOV b,[00441555],00 -> 本無必要,但...我在修
//改1.68版時發現這裡移的資料在後面會加上ImageBase
//所以要進行修正(因為會是個負數,所以這裡要留著)
//呵呵,這個版本還方便些...不過知道思想就好
004442B5 C9
LEAVE
004442B6 C208 RET 08
/////////////////////////////////////////////////////////////////////
//
// 小結一下修改的程式碼
//
/////////////////////////////////////////////////////////////////////
004442B5 MOV
d,[00441551],002D6DE9
004442BF
LEAVE
004442C0 RET
08
004442C3 MOV
b,[00414C17],40
004442CA
MOV b,[00414DEB],40
004442D1
MOV b,[00414ED7],40
004442D8
MOV b,[0040542F],C3
004442DF
MOV d,[004053A6],00444300
//位於檔案偏移12900處,寫上大名啊
004442E9
PUSH 0043E000
004442EE
RET 04
/////////////////////////////////////////////////////////////////////
呵呵,拙文...是分析ViRiLiTY的解密檔案整理而成的。One Lamer more...:)
/////////////////////////////////////////////////////////////////////
//
// 謹以此文獻給茁壯成長的iPB(inside Pandora's Box - 原OCG)...
//
// Personal Greeting To: [AFO] [CCG] [BCG] Members & All My Friends
//
/////////////////////////////////////////////////////////////////////
相關文章
- Photo Watermark破解(SMC) (3千字)2015-11-15
- EVC.SerialMe.Beta解密分析 (17千字)2002-03-13解密
- 貼個程式的smc破解。 (1千字)2001-09-24
- 一篇SMC補丁方法的教程
(7千字)2015-11-15
- SMC2024-03-21
- 關於webzip4.0585的SMC應用----教我? (1千字)2001-03-04Web
- 入門級smc(self modifying code)例子一個。
(4千字)2001-02-04
- SMC逆向2024-05-27
- CPUCOOL 5.1000註冊碼分析 (6千字)2001-01-19
- 個人學習SMC的一點體會--回答dREAMhTEATER兄 (2千字)2000-10-07
- 一段win commander
5.1的smc破解程式碼 (2千字)2015-11-15
- PC 安全虎[Beta 1]演算法分析 (6千字)2001-12-05演算法
- Mass Downloader v2.2.223 SR1解密分析(1) (10千字)2001-12-21解密
- 解密標準操作流程-----解密技術規範之總則 (1千字)2015-11-15解密
- 空檔接龍助手2.01註冊碼分析。 (6千字)2003-01-13
- Directory Scanner v1.5 註冊演算法分析 (6千字)2015-11-15演算法
- SMC技術在破解WINDOWS優化大師3.2A中的運用。 (8千字)2001-01-20Windows優化
- 加解密演算法分析2020-06-29解密演算法
- 完美解除安裝 V5.01 演算法分析 (6千字)2002-02-02演算法
- 翻譯(1) (6千字)2000-07-22
- JVM原始碼分析之Metaspace解密2020-07-15JVM原始碼解密
- 好工具,SWOT分析大解密!2022-08-22解密
- 伺服器遷移中心SMC是什麼?SMC是做什麼用的2022-12-02伺服器
- 暴力破解3 (6千字)2001-02-18
- TRW短篇教學 (6千字)2001-09-29
- Registry Crawler 4.0.0.3破解 (6千字)2002-02-28
- 初學者作品(6) (1千字)2000-05-04
- 菜鳥破解錄自之 Dialup Constructor 及演算法分析
(6千字)2000-09-11Struct演算法
- duelist crackme 2 破解(上) (6千字)2000-10-17
- 我的破解心得(6) (3千字)2001-03-13
- flashsoft得簡單破解 (6千字)2001-05-26
- 轉貼一個,linux 解密,www.zoudan.com (8千字)2001-04-14Linux解密
- 華表3.34專業版解密過程及思考 (3千字)2001-08-22解密
- SMC無線網路裝置-日本2010-01-30
- [SMC+OpenSSL]r3ctf nSMC2024-07-18
- Windows系統下EFS加密解密原理分析2019-12-05Windows加密解密
- 海海DRM視訊保護解密流程分析2015-01-21解密
- 1.6正式版本PJ方法
(6千字)2002-06-27