使用KERNEL32.DLL破解???(譯文) (8千字)
原標題:
Cracking using KERNEL32.DLL??
Amazing how things don't change!
原文:http://208.50.16.104/madmasu.htm
作者: madmax 翻譯 DDXia[CCG]
丁丁蝦有話說:(那還用問,肯定有是廢話啦^_*)===如果你是高手,請使用暴力,JMP過去^_^
Crack也有段時間了,老是在想,一天到晚的Crack,(這小子開始吹牛,踞我所知,已有
3個月沒有發市啦:) 什麼嘛!我可是天天都到看雪論壇報到的哦)有沒有好的辦法能提高自己的
功力?很多人都關心。畢竟外國的CrAcK發展比較快,所以經常去外國網站,洋為中用嘛?
今天無意中看到一篇文章,有比較大的啟發。好的東東,大家分享嘛!!!順便說一聲,英語不
是俺的母語(好象tKC也說過),也比較菜,翻譯內容大概的意思應該都對吧!哈哈~~~~ :)
英文的原文:http://208.50.16.104/madmasu.htm
標題:使用KERNEL32.DLL破解???
介紹:
在Internet上有一個非常出色的遊戲。。。Subspace,by VIE(Virgin),(DDXia:好象沒有聽過)
最近剛拿到它的零售版,。。。。 零售版程式中含有CRC檢查和記憶體駐留(時時檢查)(DDXia:好怕怕哦)
我們應該如何CrAck???
工具:
Winice 3.22
Hiew 5.66
W32Dasm 8.9 (Regged helps)
API 知識 (有Win32.Hlp 就行)
遊戲的 URL/FTP
http://subspace.vie.com/
教學
SubSpace,是一個已經發布了一段時間的線上遊戲。在玩遊戲過程很難作弊。。。這就是執行它的樂趣,
但不會玩這個遊戲。現在遊戲發行了零售版,在其中加入了CD-Check。。。啊哦!!來,坐下來開始CRACK,
如果你有零售版,你會發現遊戲提示"請插入CD....",並帶有時間限制....哈哈~~~~~~....但有點我懂啦....
於是進入Winice。(DDXia:真是聰明!!)
BPX GetDriveTypeA (DDXia:一般,尋找CDROM都是使用這個API)
捕獲、進入SubSpace的程式碼中....這個程式的CDCHEK步驟如下:(DDXia:重點之一,具有普遍性)
查CDROM的驅動器號-----------------------------GetDriveTypeA
獲取CD的空間--------------------------------------GetDiskSpaceFreeA
如果等於零,那肯定是CD。
獲取CD的標籤 -------------------------------------GetVolumeInformationA
如果標籤=='SUBSPACE' 那麼 CD OK
開啟 CD根目錄的'INTRO.FLC'。 ---------------CreateFileA
如果存在, 那麼 CD OK
獲取INTRO.FLC的大小---------------------------GetFileSize?
比較它的大小
如果相等,就設一個標誌。
既然大多數人讀了這篇文章也不會去CRACK它,所以對原始碼不會在這裡貼出來。但最有趣的部分,也就是關鍵,
是如何繞過檢測部分。我們可以透過HIEW來修改跳過,但有CRC 校驗檢測會中斷程式,那麼再補丁CRC檢測,
可是記憶體中的還有動態校驗....真的很難debug,在Winice中需要修改的斷點就有0CCh(DDXia:換算過來就是204處,
哇!!我倒。。。。。。).....該怎麼辦呢??恩,考慮一下API Hooking,看來沒有什麼希望。再想一想,
.......TSR Crack!但是這可不是DOS環境啊!在Window中沒有 AX=25XX, INT 21h功能,那麼哪裡是突破口呢?
.......YEAH !Windows的本身。
有了這個想法,於是到IRC中發表(DDXia:外國的Cracker非常喜歡到IRC中交流),但是這個想法就好象
自己準備去修理一顆核彈,和核心玩簡直就是發瘋了(DDXia:呵呵~~~~~我還是非常欣賞他的冒險精神和創
造力)我們知道在SubSpace保護程式中,第一次呼叫的API是 GetDriveTypeA,這個API返回一個數值,
2代表軟碟機,3代表硬碟,5代表CDROM,(至於其他的數值,我們不關心).....實際上,我們要象FAKECD
程式那樣攻擊它的保護....當用TSR模擬一個CD的時候,我們在硬碟中模擬那些必需的檔案。
在Winice中,輸入:
U GetDriveTypeA (DDXia:俺孤漏寡聞,可是第一聽說這樣用U命令啊!!!牢記在心!哈哈~~~~,
又學到一招)
將看到API被反彙編過的程式碼......下面的程式碼是其中的一部分,也可以靜態反彙編kernel32.dll。但你看到的程式,
會有些莫名其妙的比較後,使用JMP跳轉到其他的API:
(DDXia:也許程式碼部分會有不一樣,那是因為kernel32.dll版本不同)
:BFF777C4 57
push edi
:BFF777C5 6A21
push 00000021
:BFF777C7 2BD2
sub edx, edx
:BFF777C9 68EFE2F9BF push BFF9E2EF
:BFF777CE 64FF32
push dword ptr fs:[edx]
:BFF777D1 648922
mov dword ptr fs:[edx], esp
:BFF777D4 8B7C2414 mov
edi, dword ptr [esp+14]
:BFF777D8 0BFF
or edi, edi
:BFF777DA 7407
je BFF777E3
:BFF777DC 2BC0
sub eax, eax
:BFF777DE 8D48FF
lea ecx, dword ptr [eax-01]
:BFF777E1 F2
repnz
:BFF777E2 AE
scasb
* Referenced by a Jump at Address:BFF777DA(C)
|
:BFF777E3 648F02
pop dword ptr fs:[edx]
:BFF777E6 83C408
add esp, 00000008
:BFF777E9 5F
pop edi
:BFF777EA E9E5D4FFFF jmp BFF74CD4
在這個程式中,我們如何放入自己的程式碼呢?!?在JE處設BPX,結果是它會不斷被中斷。所以
BPX BFF777DA,然後執行 Explorer或者某些程式就會被BPX中斷。你將看到什麼都不做,也會中斷!
所以我們敢肯定(這主要因為是微軟寫的程式碼)這段程式有點垃圾......讓我們修改和最佳化它:
(遊戲中第一次呼叫是檢查C:)
:BFF777C4 57
xor edx,edx ; 標誌位
:BFF777C5 6A21
mov eax,[esp] ; 得到正在呼叫的程式的地址
:BFF777C7 2BD2
cmp eax,413e6e ; 是否是遊戲的CD-CHECK
:BFF777C9 68EFE2F9BF jnz
BFF777EA ; 如果不是,繼續
:BFF777CE 64FF32
mov [esp+4],eax ; 儲存返回地址
:BFF777D1 648922
pop eax ;
ESP+4
:BFF777D4 8B7C2414 mov
eax,5 ; 返回5,表示我們是CDROM
:BFF777D8 0BFF
ret
:BFF777DA 7407
je BFF777E3 ; 微軟程式碼
:BFF777DC 2BC0
sub eax, eax ; 這裡!
:BFF777DE 8D48FF
lea ecx, dword ptr [eax-01]
:BFF777E1 F2
repnz
:BFF777E2 AE
scasb
* Referenced by a Jump at Address:BFF777DA(C)
|
:BFF777E3 648F02
pop dword ptr fs:[edx]
:BFF777E6 83C408
add esp, 00000008
:BFF777E9 5F
pop edi
:BFF777EA E9E5D4FFFF jmp BFF74CD4
你能看到,我們非常暴力的擷取了這個API........每一次呼叫,我們都去 檢查是否是被遊戲呼叫.......非常簡單!
現在我們欺騙它C:就是CDROM,我們再到磁碟剩餘空間的檢查:
(原程式和上面的很相相似,但也是很多垃圾....誰能解決?因為這段程式是大了點.....下面是新的改良過的
程式!)
(DDXia:不過在NT中就沒有怎麼多的程式廢話了,比較緊湊,WIN98沒有看過是如何的?)
:BFF778C5 2BD2
xor edx,edx ; 好象所有的微軟都喜歡這程式碼呢?
:BFF778C7 68B8E2F9BF mov
eax,[esp] ; 得到正在呼叫的程式地址
:BFF778CC 64FF32
cmp eax,491E22 ;是否是 SubSpace?
:BFF778CF 648922
jnz BFF77900 ;如果不是,繼續
:BFF778D2 8B4C240C add
esp,14h ; 修改堆疊,保證返回正常
:BFF778D6 E302
mov [esp],eax ; 返回指標
:BFF778D8 8A01
mov [esp+18],eax ; 這裡是空間大小返回。(DDXia:我覺應該是edx,
而不是eax,也許是筆誤)
:BFF778DA 8B4C2410 ret
; 返回
:BFF778DE E302
jcxz BFF778EA ; 剩下的程式碼不變
:BFF778E0 8B01
mov eax, dword ptr [ecx]
:BFF778E2 8B4C2414 mov
ecx, dword ptr [esp+14]
:BFF778E6 E302
jcxz BFF778EA
:BFF778E8 8B01
mov eax, dword ptr [ecx]
:BFF778EA 8B4C2418 mov
ecx, dword ptr [esp+18]
:BFF778EE E302
jcxz BFF778F2
:BFF778F0 8B01
mov eax, dword ptr [ecx]
:BFF778F2 8B4C241C mov
ecx, dword ptr [esp+1C]
:BFF778F6 E302
jcxz BFF778FA
:BFF778F8 8B01
mov eax, dword ptr [ecx]
:BFF778FA 648F02
pop dword ptr fs:[edx]
:BFF778FD 83C404
add esp, 00000004
:BFF77900 E954D5FFFF jmp BFF74E59
這樣看來,我們截獲這段程式,同時強迫它返回磁碟剩餘空間為零,C:象個CDROM.......現在剩下的就是標籤檢
查和檔案檢查.......這樣簡單,修改C:的標籤為SUBSPACE,和還使用一小段ASM編的程式,我們編個大小為
37,433,486的檔案..然後修改KERNEL32.DLL,重新啟動。不停的畫十字架吧,企求不要系統崩潰吧!!
後語:
這是非常有趣的CRACK的一種方法.....不過我從來沒有看見任何一個人使用這種方法,也許是因為它太
冒險,同時還有一個相容性的問題。我主要是想交流我發現的想法,(DDXia:YEAH!Crack的精神
所在,不斷的探索和傳播)也許在未來會考慮這種技術.....這主要的問題是修改了 KERNEL32.DLL,因為
它有許多的版本。如果Patch 所有的版本那簡直就是發瘋了。
非常驚奇的是無論DOS走多遠, its roots still follow us in cracking!(DDXia:這句太難翻譯了)
丁丁蝦再說幾句:(暴力法-----Crack第一式,牢記 EB----JMP,跳過、跳過、再跳過)
的確,有些瘋狂,但他思考的方式和他的自創力都是值得學習!翻譯的目的是希望大家能比較深層
的思考問題。
(丁丁蝦長長地、長長地吐了一口氣)終於完成翻譯了!請多多指教!拜託啦!好久好久都沒有
寫過什麼東東了!就當給大家的一份小小小的禮吧!!!現在凌晨1:00 還差10分鐘。該收工了!
DDXia[CCG]
2000.8.29 01:50
相關文章
- winimage完全破解 (8千字)2001-07-04
- 再貼一篇cd-chcek破解譯文 (4千字)2000-08-27
- 用DeDe破解------Ativa Pro v3.18 的破文 (8千字)2001-08-29
- Java 程式的破解方法 (8千字)2002-08-15Java
- 我的破解心得(8) (2千字)2001-03-13
- 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
- winxp總管破解筆記(一) (8千字)2002-10-07筆記
- 破解WS_FTP Pro 7.02 (8千字)2001-10-28FTP
- SeaMoon Pic Hunter 1.2破解手記 (8千字)2015-11-15
- tKC破解教程#113(第一部分)中文譯文 (2千字)2001-02-22
- 破文一篇:易經八卦占卜程式7.0的破解(高手莫入) (8千字)2001-08-31
- Password Keeper v6.3破解過程 (8千字)2002-04-12
- 破解華琦庫管精靈1.2.4 (8千字)2000-09-11
- PwlTool的功能限制的破解---DDXia[CCG] (8千字)2001-03-10
- 再貼一篇譯文 (1千字)2000-09-10
- 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
- 文晟掃描5. 0
之破解經過 (7千字)2002-09-25
- 《wifi加密破解論文》翻譯介紹-wifi不再安全2017-10-17WiFi加密
- 輕鬆試卷 V4.5版破解實錄。 (8千字)2002-06-30
- Kugle Regediter 1.0 註冊碼破解法(非明碼) (8千字)2001-11-03
- Visual CHM 4.0的演算法“特別破解” (8千字)2015-11-15演算法
- PolyView 破解 (5千字)2000-12-31View
- 破解FAQGenie (4千字)2001-04-10
- 破解MyMahj (5千字)2001-06-20
- 破解winimage (1千字)2001-10-07
- 使用loader方式破解 arm 1.01 (6千字)2001-04-16
- 如何使用smartcheck6.03破解《彩票王》 (1千字)2001-04-17
- 使用DEDE破解天網防火牆 2.46! (2千字)2001-11-01防火牆
- [翻譯]用dede破解-另一篇~請大家指正~~ (5千字)2015-11-15
- CDSPACE1.95破解手記(專為初學者而作!) (8千字)2000-12-30