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
Trang 1Thanks 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é
http://members.fortunecity.com/quine/
http://www.idapro.ru/
http://assarbad.net/en/stuff/IDA.idc/
http://home.arcor.de/idapalace/
http://members.fortunecity.com/quine/
http://pilorama.com.ru/library/ida1.php
http://pilorama.com.ru/library/ida2.php
http://www.jasonweiler.com/idcrt.html
http://www.woodmann.com/crackz/Tutorials/Quine3.htm
http://www.woodmann.com/fravia/enh_ida.htm
http://www.woodmann.com/fravia/quine1.htm
http://www.woodmann.com/fravia/quine_21.htm
http://www.woodmann.com/fravia/quine_51.htm
http://www.datarescue.com/idadoc/919.htm
http://www.hexblog.com/
http://www.the-interweb.com/serendipity/index.php
http://www.xs4all.nl/~itsme/projects blers/ida.html
http://home.arcor.de/idapalace/links.htm
http://www.program-transformation.org/Transform/WebHome
http://sourceforge.net/projects/openaudit/
http://dennis.backtrace.de/
http://www.sabre-security.com/
http://www.datarescue.com/
http://www.datarescue.com/idabase/idasupport.htm
Benina(reaonline.net)
Using Olly
Using Olly
Tác giả : Sgi
Biên dịch : the_lighthouse
Trang 2Như 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
Trang 3thấ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
Trang 4(http://www.xs4all.nl/%7Eanvile/n2c/t 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
Trang 500401245 | 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
Trang 6vấ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