PECompact.v1.80.b2解密詳解
互聯(lián)網(wǎng) 發(fā)布時間:2008-10-08 19:02:43 作者:佚名
我要評論

/////////////////////////////////////////////////////////////////////
//
// 目標(biāo)軟件:PECompact
//
// 軟件版本:1.80 Build 2
//
// 官方網(wǎng)站:http://www.CollakeSoftware.com/
//
// 軟件授權(quán):共享軟件
//
// 操
/////////////////////////////////////////////////////////////////////
//
// 目標(biāo)軟件:PECompact
//
// 軟件版本:1.80 Build 2
//
// 官方網(wǎng)站:http://www.CollakeSoftware.com/
//
// 軟件授權(quán):共享軟件
//
// 操作系統(tǒng):Win95/98/ME、WinNT/2000
//
// 軟件簡介:知名的PE格式文件壓縮工具...
//
// 軟件保護:PECompact殼保護
//
/////////////////////////////////////////////////////////////////////
//
// 使用工具:TRW2000 v1.22 娃娃修改版
// (主要用于調(diào)試分析)
//
// LordPE Armageddon by y0da
// (Dump & PE文件分析修改)
//
// WinHEX v10.4 SR-3
// (用于PE文件的16進制修改)
//
// Hiew v6.70
// (用于添加SMC代碼)
//
// Our Brain...:-)
//
/////////////////////////////////////////////////////////////////////
//
// 關(guān)于本文:本文主要目的在于教學(xué),研究PECompact殼的分析及多重SMC解
// 密方法...請勿將此教程用于商業(yè)目的。
//
// Always Your Best Friend: FiNALSErAPH
//
// 水平有限,難免疏漏...
//
// Any Question?
// Mail To: FiNALSErAPH@yahoo.com.cn
//
// 2002-05-10
//
/////////////////////////////////////////////////////////////////////
//
// 第1步:得到可正確執(zhí)行的脫殼文件(其實只要DUMP就行,沒必要可執(zhí)行)
//
/////////////////////////////////////////////////////////////////////
這一步比較簡單,我就不詳細敘述...詳細過程可參看以前的文章。關(guān)于OEP可
參看DiKeN的“快速找到PECompact加殼文件的OEP”
/////////////////////////////////////////////////////////////////////
//
// 第2步:分析脫殼后的文件,找到我們要修改的地方
//
// 這里比較有意思的是對于PE文件控件的屏蔽...
//
// 這是最近研究ViRiLiTY做的破解才注意到的。
//
/////////////////////////////////////////////////////////////////////
對于解決日期限制問題就不多說了,比較簡單。
pec1:004011E9 call sub_40542F
pec1:004011EE mov ds:dword_40D69D, eax
//返回值是剩余的使用時間
//修改方法是將0040542F的指令變?yōu)閞et
pec1:0040542F enter 30h, 0
//MOV b,[0040542F],0C3
/////////////////////////////////////////////////////////////////////
對于顯示Unregister! 我找到以下關(guān)鍵點:
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
/////////////////////////////////////////////////////////////////////
找到控件的屬性值,做相應(yīng)修改...這里主要依靠Unicode的特殊性加快速度 1)P.L.E.A.S.E. .R.E.G.I.S.T.E.R.! 注意前面最近的P(0x50)(文件偏移0x13017),我想實際應(yīng)該是0x50 02 00 00 是指這個控件的屬性。根據(jù)查到的WINDOWS.INC知道WS_VISIBLE = 0x10 00 00 00。 所以將0x50 -> 0x40將會使這個控件不可見 經(jīng)過對脫殼文件的修改(我實際是動態(tài)調(diào)試的),可以確定這個結(jié)論... 注意:這里為了做SMC補丁必須計算修改的地方位于內(nèi)存的地址 使用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)...這個特征不明顯,我是根據(jù)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前的地方加上自己的補丁代碼 // ///////////////////////////////////////////////////////////////////// 即將轉(zhuǎn)入OEP的代碼,可是直接在PECOMPACT.EXE里找不到哦...:)(多重的...) 00441551 6800E04300 PUSH DWORD 0043E000 00441556 C204 RET 04 BPM 00441551...看看這里的代碼是什么時候放進來的 0044119E F3A5 REP MOVSD 執(zhí)行完后就...不用想了,追ESI->...查到004425FC是這段代碼。接著下BPM 004425FC 這里具體怎么傳數(shù)據(jù)我倒不用管(我可以在傳輸完整片數(shù)據(jù)后補),F(xiàn)12到了以下 片段: 004442AF 5D POP EBP 004442B0 2B7D0C SUB EDI, [EBP 0C] 004442B3 8BC7 MOV EAX, EDI 004442B5 C9 LEAVE 004442B6 C208 RET 08 注意:這里你會發(fā)現(xiàn)所處位置"PECOMPACT!.rsrc"...而且底下一片0000...000 呵呵,還不偷著樂? 00441551 6800E04300 PUSH DWORD 0043E000 //我要改這條指令,轉(zhuǎn)向我要補的修改代碼 //留些余地,暫時改為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版時發(fā)現(xiàn)這里移的數(shù)據(jù)在后面會加上ImageBase //所以要進行修正(因為會是個負數(shù),所以這里要留著) //呵呵,這個版本還方便些...不過知道思想就好 004442B5 C9 LEAVE 004442B6 C208 RET 08 ///////////////////////////////////////////////////////////////////// // // 小結(jié)一下修改的代碼 // ///////////////////////////////////////////////////////////////////// 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 // /////////////////////////////////////////////////////////////////////
找到控件的屬性值,做相應(yīng)修改...這里主要依靠Unicode的特殊性加快速度 1)P.L.E.A.S.E. .R.E.G.I.S.T.E.R.! 注意前面最近的P(0x50)(文件偏移0x13017),我想實際應(yīng)該是0x50 02 00 00 是指這個控件的屬性。根據(jù)查到的WINDOWS.INC知道WS_VISIBLE = 0x10 00 00 00。 所以將0x50 -> 0x40將會使這個控件不可見 經(jīng)過對脫殼文件的修改(我實際是動態(tài)調(diào)試的),可以確定這個結(jié)論... 注意:這里為了做SMC補丁必須計算修改的地方位于內(nèi)存的地址 使用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)...這個特征不明顯,我是根據(jù)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前的地方加上自己的補丁代碼 // ///////////////////////////////////////////////////////////////////// 即將轉(zhuǎn)入OEP的代碼,可是直接在PECOMPACT.EXE里找不到哦...:)(多重的...) 00441551 6800E04300 PUSH DWORD 0043E000 00441556 C204 RET 04 BPM 00441551...看看這里的代碼是什么時候放進來的 0044119E F3A5 REP MOVSD 執(zhí)行完后就...不用想了,追ESI->...查到004425FC是這段代碼。接著下BPM 004425FC 這里具體怎么傳數(shù)據(jù)我倒不用管(我可以在傳輸完整片數(shù)據(jù)后補),F(xiàn)12到了以下 片段: 004442AF 5D POP EBP 004442B0 2B7D0C SUB EDI, [EBP 0C] 004442B3 8BC7 MOV EAX, EDI 004442B5 C9 LEAVE 004442B6 C208 RET 08 注意:這里你會發(fā)現(xiàn)所處位置"PECOMPACT!.rsrc"...而且底下一片0000...000 呵呵,還不偷著樂? 00441551 6800E04300 PUSH DWORD 0043E000 //我要改這條指令,轉(zhuǎn)向我要補的修改代碼 //留些余地,暫時改為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版時發(fā)現(xiàn)這里移的數(shù)據(jù)在后面會加上ImageBase //所以要進行修正(因為會是個負數(shù),所以這里要留著) //呵呵,這個版本還方便些...不過知道思想就好 004442B5 C9 LEAVE 004442B6 C208 RET 08 ///////////////////////////////////////////////////////////////////// // // 小結(jié)一下修改的代碼 // ///////////////////////////////////////////////////////////////////// 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 // /////////////////////////////////////////////////////////////////////
相關(guān)文章
- “CMOS密碼”就是通常所說的“開機密碼”,主要是為了防止別人使用自已的計算機,設(shè)置的一個屏障2023-08-01
QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調(diào)用QQ的OCR的,但翻譯按鈕確實沒啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04- QQ截圖是我用過的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨立版目前除了屏幕錄制功能其他都逆出來了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導(dǎo)致軟件無法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤分區(qū)安全時會采用 Windows 自帶的 BitLocker 加密工具對電腦磁盤分區(qū)進行加密。但有些人加密后就會忘記自己設(shè)置的密碼從而導(dǎo)致在安裝其它軟2020-11-25防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細介紹了如何才能防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-27徹底防止計算機泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計算機泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價值,2017-06-27- 最近有電腦用戶反應(yīng)量子計算機可以破解下載的所有的加密算法嗎?其實也不是不可以,下面虛擬就為大家講解買臺量子計算機,如何分分鐘破解加密算法2016-09-26
怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁后門。黑客通常會通過它控制別人網(wǎng)絡(luò)服務(wù)器,那么怎么破解webshell密碼呢?一起來看看吧2016-09-19- 本文討論了針對Linux系統(tǒng)全盤加密的冷啟動攻擊,大家都認為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28
防止泄露公司機密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對日漸嚴重的內(nèi)部泄密事件,我們?nèi)绾问刈o企業(yè)的核心信息,如何防止內(nèi)部泄密也就成了擺在各個企業(yè)領(lǐng)導(dǎo)面前的一大問題。其實,針對內(nèi)網(wǎng)安全,防止內(nèi)部信息泄漏早已有了比較2015-12-17