Tải bản đầy đủ (.pdf) (6 trang)

Cracker Handbook 1.0 part 224 pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (137.22 KB, 6 trang )

Thanks To: Benina,Kiemanowar, Hacnho, QHQCrker, Merc, TQN, light.phoenix,
iamidiot, takada, haule_nth, trickyboy, thienthanden, stringer …. all my friend, and
YOU.
Để chúng ta có nhiều nguồn tham khảo, tôi xin add một số link. Ai biết trang nào
add thêm nhé.


















blers/ida.html









Benina(reaonline.net)
Using Olly

Using Olly

Tác giả : Sgi
Biên dịch : the_lighthouse

Như các bác thường thấy, các good cracker thường sử dụng SoftICE như 1 vụ khí
để "hạ sát" các soft. Nhưng đó là dành cho các good craker, còn chúng ta - em và
các bác - là những newbie thì cảm thấy rất khó khi dùng nó (các bác thì không biết
thế nào chứ mỗi lần em crack soft với SoftICE thì soft crack đâu không thấy, chỉ
thấy máy tính phải format lại thôi ;) Nhưng từ khi có cái chân lý của bác benina :
W32DASM + HIEW + SI = OLLDBG thì em cũng đỡ khổ hơn (mà cái computer
của em cũng đỡ mệt). Hôm rồi trốn học > lang thang trên mạng thấy được cái bài
này khá hay dành cho newbie > mừng lém :w00t: (mừng như lúc người yêu nói :
). Nay xin mạn phép trans ra cho các newbie đọc (các bác admin đọc đừng có
cười nha), nếu các bác thấy có gì sai thì cho ý kiến nha. Thanks
================================================== =======
Crackme : hxxp://www.xs4all.nl/%7Eanvile/n2c/tuts/n2c-OllyTut1.zip
Đầu tiên, các bác dùng PEiD để check xem crackme có bị pack không (Ở đây em
xin giải thích 1 xíu : để bảo vệ cho chương trình không bị "phơi bày" khi
disassemble và cũng để cho kích thước file nhỏ lại thì các programmer thường sẽ
pack chương trình đó lại, các bác cứ hiểu nôm na pack nghĩa là nén lại, nhưng
không phải là zip hay rar đâu nhé bởi vì mặc dù nén lại nhưng chương trình vẫn
chạy được bình thường. Okey, các bác đã hiểu pack là gì chưa ? Qua PEiD ta biết
chương trình không bị pack (quá khỏe) và được code bằng Microsoft Visual C++
6.0.
Sau khi biết chương trình không bị pack, chúng ta mở OllyDBG lên ( OllyDBG là

1 chương trình debug khá tốt, phiên bản mới nhất là 1.10, down tại hxxp://home.t-
online.de/home/Ollydbg - ở đây em xin không giới thiệu nhiều về Olly, các bác có
thể tham khảo bài của bác rongchaua để biết nhiều hơn về công cụ đa tính năng
này ). Sau đó chúng ta vào File\Open hoặc nhấn F3, sau đó chọn file để Olly load
lên , nếu các bác không muốn phải làm đi làm lại điều này mỗi khi muốn load 1
file nào đó thì các bác có thể cho nó vào menu chuột phải bằng cách vào
Options\Add to Explorer chọn Add OllyDbg to menu in Windows Explorer, khi
muốn xóa thì chọn Remove OllyDbg from menu in Explorer, xong nhấn Done.
Bây giờ chúng ta load file crackme1 lên, sau khi chương trình load xong chúng ta
sẽ ở đây :
Code:
00401B70 | $55 PUSH EBP
Đến đây chúng ta có 2 cách để tìm real serial (1 cách của em, 1 cách của tác giả)
nhưng vì đây là bài viết dành cho newbie nên em xin chỉ post 1 cách (của tác giả).
Okey, chúng ta tiếp tục nào. Bây giờ ta hãy nhấn F9 (hoặc vào Debug\Run) để run
chương trình. Trong crackme, chúng ta nhập 1 fake serial, của em là 1234567890,
nhấn Check. Và bùm 1 cái nag văng ra kèm theo thông tin Incorect try again!!
Mặc xác nó. Bây giờ chúng ta ấn ALT-TAB để chuyển qua Olly, xong ấn ALT-E
để mở cửa sổ Executable modules. Cửa sổ Executable modules hiện lên, các bác
thấy trong list có file crackme của chúng ta > click chuột phải vào dòng đó, chọn
View names (hoặc nhấn Ctrl-N). 1 cửa sổ khác hiện ra với title Names in
crackme1. Trong list các bác tìm dòng như sau :
Code:
00402000 | .rdata | Import | KERNEL32.lstrcmpA
Đây là hàm so sánh > cần set breakpoint > click chuột phải vào dòng đó, chọn
Toogle breakpoint on import. Bây giờ các bác có thể tắt bớt các cửa sổ trong Olly
cho dễ nhìn (nhưng nhớ để lại cửa sổ CPU nha) . Xong các bác nhấn ALT-TAB để
chuyển qua file crackme, chúng ta nhấn check lại và hãy nhìn xem, cửa sổ Olly
nhảy ra => Breakpoint của chúng ta đã hoạt động. Thú vị không các bác, đúng là
cái thàng Olly này nó hay thật. Nhưng cái hay chưa phải đã hết. Nếu như trong

SoftICE để xem giá trị trong các thanh eax, ecx, edx chúng ta phải đánh d eax , d
ecx, d edx thì với Olly mọi thứ đều tự động cả. Các bác không tin ư ? Hãy nhìn
sang cửa sổ Registers (FPU) bên phải xem. Hehehe, có phải các bác thấy 2 số
serial không :
Code:
ECX 0012F8B4 ASCII "<BrD-SoB>"
EDX 0012F8C4 ASCII "123456789"
Nhưng đó là 2 số nào, chúng ta hãy tiếp tục nhìn xuống dưới chỗ khung Address :
Code:
0012F8A4 | 00401593 | CALL to lstrcmpA from crackme1.0040158D
0012F8A8 | 0012F8C4 | String1 = "1234567890"
0012F8AC | 0012F8B4 | String2 = "<BrD-SoB>"
Thì ra ở đây chương trình so sánh 2 số serial : 1 số thì do chúng ta đánh vào rồi,
vậy số kia là gì ? chắc chắn là real serial. Okie, chúng ta hãy ghi nó ra giấy nào
(hoặc nếu bác nào nhớ được thì cảng tốt). Đóng Olly lại, mở crackme lên, nhập vào
<BrD-SoB> và :)

(còn tiếp)





Using Olly - Phần 2

Using Olly II
Chào các bác, chúng ta lại tiếp tục "sự nghiệp đen tối" của mình nào !!!
Chà, crackme xấu số tiếp theo sẽ là evdcm2
( c-OllyMan2.zip)
Ở phần 1, em đã hướng dẫn các bác tìm real serial bằng 1 cách, với crackme này

em sẽ hướng dẫn các bác tìm real serial theo 1 cách khác.
Chúng ta open cái crackme lên, nhập name : the_lighthouse, serial : 1234567890.
Bấm check và 1 nag văng ra : Sorry, Serial not valid. Nhấn OK và bụp nó biến
mất tiêu. Ah, dzậy là cái crackme này khác cái ở phần 1 là sau khi bắn nag ra xong
là nó tự động close lại liền. Okey, tiếp theo chúng ta dùng PEiD để check nó, khỏe
quá không bị pack.
Dùng Olly load nó lên, chúng ta dừng lại ở đây :
Code:
00401099 | $EB 27 | JMP SHORT evdcm2.004010C2
Khác với cách ở phần 1, đến đây chúng ta sẽ tìm nơi mà cái nag Sorry ở trên
được gọi. Cách làm như sau : click chuột phải chọn Search for\All referenced text
strings. Cửa sổ Text strings referenced hiện ra, trong list chúng ta thấy dòng sau :
Code:
00401223 | PUSH evdcm2.00402117 | ASCII "Sorry, Serial not valid !"
Double click vào dòng đó, chúng ta đến đây :
Code:
0040120E | . E8 79000000 | CALL <JMP.&USER32.GetDlgItemTextA |
GetDlgItemTextA <== set breakpoint ở đây
00401213 | . A3 FB204000 | MOV DWORD PTR DS:[4020FB], EAX
00401218 | . 33C0 | XOR EAX, EAX
0040121A | \ EB 19 | JMP SHORT evdcm2.00401235
0040121C | > 6A 00 | PUSH 0 | Style=
MB_OK:MB_APPLMODAL
0040121E | . 68 0F214000 | PUSH evdcm2.0040210F | Title =
"CrackMe"
00401223 | . 68 17214000 | PUSH evdcm2.00402117 | Text =
"Sorry, Serial not invalid !" <== Chúng ta đang ở đây
00401228 | . 6A 00 | PUSH 0 | hOwner =
NULL
0040122A | . E8 69000000 | CALL <JMP.&USER32.MessageBoxA> |

MessageBoxA
0040122F | . 50 | PUSH EAX | ExitCode
00401230 | . E8 7B000000 | CALL <JMP.&KERNEL32.ExitProcess> |
ExitProcess
00401235 | > 68 50204000 | PUSH evdcm2.00402050
0040123A | . 5E | POP ESI
0040123B | . E8 C0FDFFFF | CALL evdcm2.00401000
00401240 | . A3 FF204000 | MOV DWORD PTR DS:[4020FF], EAX
00401245 | . E8 B6FDFFFF | CALL evdcm2.00401000
0040124A | . 55 | PUSH EBP
0040124B | . B8 07214000 | MOV EAX, evdcm2.00402107
00401250 | . 8BE8 | MOV EBP, EAX
00401252 | . FE45 00 | INC BYTE PTR SS:[EBP]
00401255 | . E8 A6FDFFFF | CALL evdcm2.00401000
Nhìn lên trên chúng ta biết địa chỉ nên đặt breakpoint là 0040120E , click vào đó
nhấn F2, xong nhấn F9 để Run chương trình. Nhập name : the_lighthouse và serial
: 1234567890. Bấm check và ngay lập tức Olly nhảy ra => breakpoint của chúng ta
đã hoạt động và chúng ta ice tại địa chỉ 0040120E.
Nhìn xuống dưới chúng ta thấy có 3 lệnh CALL càn chú ý là ở các địa chỉ :
0040123B, 00401245 và 00401255. Nhìn sơ qua thì chúng ta thấy cả 3 lệnh CALL
này khá giống nhau, chẳng biết chọn cái nào bây giờ. Nhưng em mách cho các bác
nhá, chúng ta hãy trace đến lệnh call thứ 3 đó, lí do bởi thường thì lệnh CALL cuối
cùng sẽ làm nhiệm vụ CHECK serial (cái này ngộ quá ta :)). Okey, bây giờ chúng
ta trace over đến đó bằng cách dùng F8 - lưu ý ở đây các bác phải dùng trace over
nếu không chưa kịp đến "nhà nàng" 00401255 đã bị lạc giữa mê cung assemble thì
dễ xa nhau lắm ;) Xong, đến được nhà nàng rồi, bây giờ chúng ta nhấn F7 (trace
into) để mở cửa vào nhà thôi. Và đây là bên trong nhà nàng ( hơi bị rộng đấy :sick:
) :
Code:
00401000 | $ 807D 00 01 | CMP BYTE PTR SS:[EBP], 1 <== chúng

ta đang ở đây
00401004 | .\ 74 22 | JE SHORT evdcm2.00401028
00401006 | . 33C0 | XOR EAX, EAX

0040108B | . 5E | POP ESI
0040108C | . 3B16 | CMP EDX, DWORD PTR DS:[ESI] <== rất
quan trọng
0040108E | .\ 75 01 | JNZ SHORT evdcm2.00401091
00401090 | . C3 | RET
Okie, chúng ta trace into đến 0040108C thôi. Và hãy nhìn vào khung nhỏ nhỏ bên
dưới, chúng ta thấy như sau :
Code:
DS : [004020FF]=499602D2
EDX=00472A37
Lệnh CMP dùng để so sánh, vậy ở đây chắc là so sánh 2 số serial giống như ở phần
1 rồi. Nhưng mà sao lạ quá , 499602D2 là cái số nào, lúc này ta nhập 1234567890
mà. Ah, thì ra đây là hệ hex (hex là hệ thập lục phân) của nó. Nếu các bác không
tin thì có thể dùng calculator có sẵn trong windows để tính lại. Chúng ta quay lại
vấn đề thôi. Vậy thì chắc 472A37 là real serial rồi, nhưng mà fake serial được
chuyển sang hệ hex thì chắc real serial cũng được chuyển sang hex. Vậy ta phải
chuyển nó sang hệ dec (hệ thập phân) thôi. Và số mà ta tìm được là 4663863. Đóng
Olly lại, mở file evdcm2 lên, nhập name : the_lighthouse và serial : 4663863 và
;)
======THE END======
Hi vọng qua bài viết này có thể giúp được các bác phần nào về việc crack soft với
OllyDBG - 1 công cụ đa tính năng đa tác dụng mà lại free nữa chứ !!!
Cảm ơn các bác đã theo dõi bài viết của 1 kẻ newbie như em
Chúc các bác may mắn

Thelighthouse(reaonline.net)

NOP một soft = Olly for Newbie


×