大家好,我是胡一米。這期視頻是關(guān)于2016年看雪CTF第29題解題資料。
視頻是基于其他大佬文字Writeup錄制的,所以在視頻操作之前就已知了該題中的各種坑,如反調(diào)試等,所以不再演示踩坑過(guò)程。
第29題主要參看了HighHand和HHHso的Writeup,鏈接如下:
HighHand:
https://bbs.pediy.com/thread-214953.htm
HHHso:
https://bbs.pediy.com/thread-214911.htm
還有部分其他人的Writeup,鏈接如下:
yber:
https://bbs.pediy.com/thread-214949.htm
風(fēng)間仁:
https://bbs.pediy.com/thread-214896.htm
Quizow:
https://bbs.pediy.com/thread-214918.htm
在本期中,主要討論4個(gè)問(wèn)題。這4個(gè)問(wèn)題可能與最終的Key沒(méi)有太大的聯(lián)系,但題目中既然出現(xiàn)了,還是說(shuō)一說(shuō)。此4個(gè)問(wèn)題分別是:
a. CM中的查找函數(shù)的過(guò)程
b. CM中的俄羅斯方塊游戲
c. CM中的各個(gè)驗(yàn)證步驟
d. 窮舉得到最終的Key
結(jié)合其他大佬的分析過(guò)程,可以直接定位到關(guān)鍵點(diǎn)。
a. 查找函數(shù)的過(guò)程
b. patch反調(diào)試
c. 俄羅斯方塊
d. 各個(gè)驗(yàn)證步驟
typedef struct _IMAGE_EXPORT_DIRECTORY {
DWORD Characteristics;
DWORD TimeDateStamp;
WORD MajorVersion;
WORD MinorVersion;
WORD Name;
DWORD Base;
DWORD NumberOfFunctions;
DWORD NumberOfNames;
DWORD AddressOfFunctions; // RVA from base of image
DWORD AddressOfNames; // RVA from base of image, not FOA
DWORD AddressOfNameOrdinals; // RVA from base of image
} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
+0x18 NumberOfNames ;
+0x20 AddressOfNames;
401069 jz short loc_401072 >> jmp
401505 jz short loc_40150E >> jmp
401847 jz short loc_401850 >> jmp
????
????
????
????
****
*
*
*
*
8位:x7 x6 x5 x4 x3 x2 x1 x0
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
kahuSKey
條件一:0x325 < 0x3D0
條件二:int (x7 x6 x5 x4 ^ 0x66) +int( x3 x2 x1 x0 ^ 0x66) = 0x32113442
條件三:push 004032b5
通過(guò)動(dòng)態(tài)調(diào)試,理解程序加解密過(guò)程。
使用visual studio,窮舉驗(yàn)證碼。這里直接使用HighHand大佬貼出的代碼。
(無(wú)進(jìn)位,不溢出)
題目很好。