duelist crackme 2 破解(上) (6千字)
duelist crackme 2 破解(上) (希望轉載的時候保持完整)
作者 丁丁蝦 ddxia/[CCG]
目標 duelist crackme 2
目標URL http:\\go.163.com\~ddxia\crackme\DueList\Due-cm2.zip
工具 SoftIce4.01 for NT WinHex
winapi.hlp
我們讀一下它的readme.txt,就知道這是一道解keyfile型別crackme。
keyfile型別解決方法:
1、得到檔名
2、透過分析程式碼來獲得檔案內容!
首先執行它,看看有什麼出錯訊息---->>"你的使用期限到了,請複製keyfile到
該目錄下!"。它要讀取檔案一定用CreateFileA這個API函式。於是在目標程式執行前下
中斷
bpx CreateFileA
被攔截下來,按F11回到程式程式碼中
001B:0040105C 6A00
PUSH 00
001B:0040105E 686F214000 PUSH 0040216F
001B:00401063 6A03
PUSH 03
001B:00401065 6A00 PUSH
00
001B:00401067 6A03
PUSH 03
001B:00401069 68000000C0 PUSH C0000000
001B:0040106E 6879204000 PUSH
00402079
001B:00401073 E80B020000 CALL KERNEL32!CreateFileA
001B:00401078 83F8FF CMP
EAX,-01
^^^^^^^^^^^^^^^^^^^^^^^^^^------>如果開啟檔案失敗,eax=-01
001B:0040107B 751D
JNZ 0040109A
001B:0040107D 6A00
PUSH 00
001B:0040107F 6801204000 PUSH
00402001
001B:00401084 6817204000 PUSH
00402017
001B:00401089 6A00
PUSH 00
001B:0040108B E8D7020000 CALL
USER32!MessageBoxA
^^^^^^^^^^^^^^^^^^^^^^^^^^------>出錯資訊
001B:00401090 E824020000 CALL
KERNEL32!ExitProcess
讓我們看一下呼叫CreateFileA API的引數含義。
HANDLE CreateFile(
LPCTSTR lpFileName, // 指向檔名的指標
DWORD dwDesiredAccess, //讀寫模式
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //
安全屬性指標
DWORD dwCreationDistribution, // 建立標誌
DWORD dwFlagsAndAttributes, // 檔案屬性
HANDLE hTemplateFile // 檔案屬性的複製控制程式碼
);
其中我們最關心的是 LPCTSTR lpFileName這個引數。需要注意的是在API
的呼叫中ASM和高階語言是有區別的,最先出現的引數,ASM中最後PUSH。然後我們
就看出是以下這行程式碼是檔名指標
PUSH 00402079
d 402079
看到什麼??-----due-cm2.dat----->>>keyfile的名字
到目前我們就完成了第一步!
接著我們進行下面一步進行挖掘檔案的內容,好象有的點觀看挖掘老山漢墓的
感覺 呵呵~~~~~~
在目錄下建一個檔名字為due-cm2.dat,再跟蹤看一看是怎樣的情形。
001B:00401073 E80B020000 CALL KERNEL32!CreateFileA
001B:00401078 83F8FF CMP
EAX,-01
^^^^^^^^^^^^^^^^^^^^^^^^^^------>如果開啟檔案失敗,eax=-01
001B:0040107B 751D
JNZ 0040109A
^^^^^^^^^^^^^^^^^^^^^^^^^^------>如果成功,就跳到40109A
然後看一看40109A的程式碼
001B:0040109A 6A00
PUSH 00 //資料結構指標
001B:0040109C 6873214000 PUSH 00402173
//實際讀取的位元組數
001B:004010A1 6A46
PUSH 46 //需要讀取的位元組數
001B:004010A3 681A214000 PUSH 0040211A
//存放內容的檔案指標
001B:004010A8 50
PUSH EAX
//檔案的控制程式碼
001B:004010A9 E82F020000 CALL KERNEL32!ReadFile
^^^^^^^^^^^^^^^^^^^^^^^^^^------>返回引數為非零,就成功
ReadFile API中需要注意的三個引數:402173 46
40211A
001B:004010AE 85C0
TEST EAX,EAX
001B:004010B0 7502
JNZ 004010B4
001B:004010B2 EB43
JMP 004010F7
^^^^^^^^^^^^^^^^^^^^^^^^^^------>出錯跳遠
001B:004010B4 33DB
XOR EBX,EBX
001B:004010B6 33F6
XOR ESI,ESI
001B:004010B8 833D7321400012 CMP
DWORD PTR [00402173],12
^^^^^^^^^^^^^^^^^^^^^^^^^^------>檔案的位元組數是否大於12,
注意12是十六進位制=18,小於18個位元組就出錯!
001B:004010BF 7C36
JL 004010F7
001B:004010C1 8A831A214000 MOV
AL,[EBX+0040211A]
^^^^^^^^^^^^^^^^^^^^^^^^^^------>取每一個位元組進行比較
001B:004010C7 3C00
CMP AL,00
001B:004010C9 7408
JZ 004010D3
001B:004010CB 3C01 CMP
AL,01
001B:004010CD 7501
JNZ 004010D0
001B:004010CF 46
INC ESI
^^^^^^^^^^^^^^^^^^^^^^^^^^------>ESI是累計01的個數
001B:004010D0 43
INC EBX
^^^^^^^^^^^^^^^^^^^^^^^^^^------>檔案偏移指標
001B:004010D1 EBEE JMP
004010C1
001B:004010D3 83FE02 CMP
ESI,02
^^^^^^^^^^^^^^^^^^^^^^^^^^------>01的個數要大於等於2
001B:004010D6 7C1F
JL 004010F7
001B:004010D8 33F6
XOR ESI,ESI
001B:004010DA 33DB
XOR EBX,EBX
001B:004010DC 8A831A214000 MOV
AL,[EBX+0040211A]
001B:004010E2 3C00
CMP AL,00
001B:004010E4 7409
JZ 004010EF
^^^^^^^^^^^^^^^^^^^^^^^^^^------>判斷是否到檔案尾部
001B:004010E6 3C01
CMP AL,01
001B:004010E8 7405
JZ 004010EF
001B:004010EA 03F0
ADD ESI,EAX
^^^^^^^^^^^^^^^^^^^^^^^^^^------>當不等於01和00的時候進行
累加
001B:004010EC 43
INC EBX
001B:004010ED EBED JMP
004010DC
001B:004010EF 81FED5010000 CMP
ESI,000001D5
^^^^^^^^^^^^^^^^^^^^^^^^^^------>當累加到1D5時,就跳轉,
否則出錯!!!
001B:004010F5 741D
JZ 00401114
001B:004010F7 6A00
PUSH 00
001B:004010F9 6801204000 PUSH 00402001
001B:004010FE 6886204000 PUSH 00402086
001B:00401103 6A00
PUSH 00
001B:00401105 E85D020000 CALL USER32!MessageBoxA
^^^^^^^^^^^^^^^^^^^^^^^^^^------>錯誤資訊。
001B:0040110A E8AA010000 CALL KERNEL32!ExitProcess
到這裡我們中場休息10分鐘,看看目前戰果如何?^_^
1、檔案的長度至少18個位元組。
2、檔案中01的位元組至少有2個。
3、檔案中再遇到01位元組前,至少累加和為1D5。
aa+aa+81=1d5 (十六進位制數字順便取)
檔案內容至少是這樣 AA AA 81 01 01 00 00......湊夠18個位元組就行了
下課了,3點俺要上班了,下回接著講啊!呵呵~~~~~~~~~~~~
啊哦!!遲到了,沒有關係,領導不在!!呵呵~~~~~~~~~~~~
時間:2000.10.17
15:02:33
相關文章
- duelist crackme 1 破解 (5千字)2000-10-16
- 第二個CrackMe的破解 (6千字)2001-08-17
- crackme破解教程(續) (高手莫入) (2千字)2001-03-17
- 今天工作太忙了!好不容易才可以上來5分鐘---》duelist
crackme 4 破解(上) (7千字)2000-10-20
- 由於昨晚朋友過生日,今天睡過頭了!:)
才遲遲貼出《duelist crackme 3 破解》 (4千字)2000-10-19
- Fpc大哥crackme的破解。 (4千字)2001-09-22
- Nullz CrackMe 1.1破解過程 (13千字)2001-09-18Null
- 四個簡單的VB6 PCODE的crackme的2 Nag, 2 Code的破解。 (5千字)2001-10-14
- 破解YATS32 v8.1 build 6 (2千字)2000-09-22S3UI
- 破解練習-CRACKME0012023-02-11
- 暴力破解3 (6千字)2001-02-18
- Registry Crawler 4.0.0.3破解 (6千字)2002-02-28
- 一個CrackMe的破解以及序號產生器的製作
(4千字)2001-08-16
- [原創]破解-分析Crackme演算法2009-06-13演算法
- 我的破解心得(6) (3千字)2001-03-13
- flashsoft得簡單破解 (6千字)2001-05-26
- 一個CrackMe的破解 *KeyFIle保護* (教你如何獲得
KeyFile) (5千字)2001-02-06
- 《破解webmirror殘記》 (2千字)2001-01-11Web
- 破解冰盾IV (2千字)2001-06-23
- 破解 程式獵人 1.2 (2千字)2000-08-10
- 萬能五筆的破解 (6千字)2001-07-09
- Teleport Pro破解實戰錄 (6千字)2000-05-28
- 冷雨飄心的第二個crackme的破解方法,大家看看對不對! (5千字)2001-10-18
- 我的破解心得(8) (2千字)2001-03-13
- 破解All to Wma Coverter 1.3 (2千字)2001-10-22
- 用ollydbg快速破解UniView
(2千字)2015-11-15View
- mac上破解photoshop cs62015-07-01Mac
- 繼 My Flash player 1.3 破解 (2千字)2002-04-09
- 破解90天試用期 (2千字)2001-04-03
- serv-u 3.0 beta破解 (2千字)2001-04-20
- 古今大戰80分破解 (2千字)2002-03-13
- DISKdata v3.2.0之暴力破解 (6千字)2000-10-01
- 使用loader方式破解 arm 1.01 (6千字)2001-04-16
- 破解OICQ的密碼演算法 (6千字)2001-06-25密碼演算法
- 破解Advanced Find and Replace V1.2.2
(6千字)2000-03-31
- rOYALaCCEZZ Trial Crackme 3.2 演算法分析 (10千字)2002-02-27演算法
- 。先在這裡貼上俺的破解方法。各位請扔磚頭。 (2千字)2015-11-15
- WinImage密碼的另一種破解――WinHex破解法 (2千字)2001-07-12密碼