Cracking part 40 pps

6 297 0
Cracking part 40 pps

Đang tải... (xem toàn văn)

Thông tin tài liệu

Mặc dù còn nhiều tính năng hạn chế nhưng Plugin này cũng vẫn cung cấp cho chúng ta các chức năng đầy đủ mà một chương trình debug cần phải có. Nhưng bù lại thì mã nguồn của Plugin này là mở cho nên cho phép chúng ta add thêm bất kì câu lệnh mới nào vào đồng thời nó cũng cho phép chúng ta chỉnh sửa các chức năng của những câu lệnh đã có. Bài viết này được dịch ra từ file Help , mong rằng sẽ đáp ứng được phần nào thông tin , cũng như chức năng cơ bản của Plugin này. Như chúng ta đã biết , để gọi Plugin này trong Olly chúng ta dùng phím tắt sau : Alt + F1. Hiện tại theo tài liệu mà em có thì Plugin này hỗ trợ những câu lệnh sau : 1. Expressions (Biểu thức) : Code: CALC expression : Tính toán giá trị của một biểu thức ? expression : Tương tự như trên expression (kí tự đầu tiên không được là chữ cái) : Tương tự như trên WATCH expression : Theo dõi, quan sát một biểu thức W expression : Tương tự 2. Assignments (Gán) : Code: SET reg=expression : Ghi giá trị củ a biểu thức vào thanh ghi chung 8, 16, hay 32 bits reg=expression : Tương tự SET memory=expression : Ghi giá trị của biểu thức vào bộ nhớ 8 , 16, hay 32 bits 3. Disassembler : Code: AT expression : Theo dõi địa chỉ trong cửa sổ Disassembler FOLLOW expression : Tương tự ORIG : Đi tới thanh ghi EIP hiện tại * : Tương tự 4. Dump and Stack : Code: D expression : Theo một địa chỉ trong cửa sổ Dump DUMP expression : Tương tự DA [expression] : Dump theo dạng assembler DB [expression] : Dump ở dạng byte (hexa) DC [expression] : Dump dưới dạng ASCII text DD [expression] : Dump dưới dạng địa chỉ (áp dụng cho stack) DU [expression] : Dump theo dạ ng Unicode text DW [expression] : Dump ở dạn word (hexa) STK expression : Lần theo một địa chỉ trong Stack 5. Assembling : Code: A expression [,command] : Assemble tại một địa chỉ 6. Labels and comments (Các lệnh liên quan đến nhãn và chú thích): Code: L expression, label : Gán nhãn cho một địa chỉ C expression, comment : Gán chú thích tại một địa chỉ 7. Breakpoint commands (Các lệnh liên quan đến việc đặt BP trong Olly): Code: BP expression [,condition] : Đặt breakpoint INT3 tại địa chỉ BPX label : Đặt breakpoint lên tất cả các hàm Call BC expression : Xóa điểm đặt BP tại địa chỉ MR expression1 [,expression2] : Đặt một BP là memory on access trên một phạm vi nào đó MW expression1 [,expression2] : Đặt một BP là memory on write trên một phạm vi nào đó MD : Xóa điểm đặt BP memory HR expression : Đặt 1-byte BP có dạng hardware on access lên một địa chỉ HW expression : Đặt 1-byte BP có d ạng hardware on write lên một địa chỉ HE expression : Đặt một BP có dạng hardware on execute lên một địa chỉ HD [expression] : Xóa điểm đặt hardware BP tại một địa chỉ 8. Tracing commands (Các lệnh liên quan đến việc Trace code trong Olly): Code: STOP : Tạm dừng sự thi hành PAUSE : Tương tự RUN : Chạy chương trình G [expression]: Chạy chương trình đến một địa chỉ nào đó GE [expression]: Bỏ qua các ngoại lệ để điều khiển và chạy đến một địa chỉ nào đó S : Nhảy vào trong một hàm SI : Tương tự SO : Nhảy qua một hàm T [expression]: Trace vào trong một hàm đến một địa chỉ nào đó TI [expression]: Tương tự TO [expression]: Trace qua một hàm đến một điạh chỉ nào đó TC condition : Trace vào trong một hàm đến một điều kiện nào đó TOC condition : Trace qua một hàm đến một điều kiện nào đó TR : Thực thi cho đến khi Return TU : Thực thi cho đến đoạn user code 9. OllyDbg windows (Các lệnh liên quan đến c ửa sổ): Code: LOG : Xem cửa sổ Log MOD : Xem cửa sổ Executable MEM : Xem cửa sổ Memory CPU : Xem cửa sổ CPU CS : Xem cửa sổ Call Stack BRK : Xem cửa sổ Break Points OPT : Xem cửa sổ Options 10. Miscellaneous commands (Các lệnh khác): Code: EXIT : Đóng OllyDbg QUIT : Tương tự OPEN [filename]: Mở một file để Debug (executable file or dll) CLOSE : Đóng chương trình đang Debug RST : Restart lại chương trình đang Debug HELP : Mở cửa Help của Plugin Command Line HELP OllyDbg : Mở cửa sổ Help của Olly HELP APIfunction : Mở cửa sổ Help của hàm API Các lệnh dùng trong Plugin Command Line không phân biệt chữ hoa và chữ thường , các tham số trong ngoặc vuông là những tùy chọn. Các biểu thức có thể bao gồm các hằng số, các thanh ghi và các tham chiế u bộ nhớ , bên cạnh đó nó còn hỗ trợ tất cả các phép tính số học cơ bản và các Boolean Function. Theo mặc định thì tất cả các hằng số đều ở dạng Hexa. Để biểu diễn các hằng số về dạng Decimal , đi kèm nó là dấu thập phân. Ví dụ : Code: 1. 2 + 2 : Tính toán giá trị của biểu thức (Cộng ở kiểu Hexa); 2. 2.0 + 2.0: Tính toán giá trị của biểu thức (Cộng ở kiểu thập phân); 3. AT [EAX+10] : disassemble tại địa chỉ mà địa chỉ này là nội dung của Dw mem tại địa chỉ EAX + 0x10; 4. BP KERNEL32.GetProcAddress : Đặt một BP lên hàm API . Chú ý bạn có thể đặt một BP trong file Dll hệ thống , nhưng chỉ đối với các hệ điều hành NT; 5. BPX GetProcAddress : Đặt BP lên tất cả các lệnh gọi hàm API GetProcAddress; 6. BP 412010,EAX==WM_CLOSE : Đặt một Conditional BP tại địa chỉ 0x412010. Chương trình sẽ dừ ng lại khi mà giá trị của EAX = WM_CLOSE; Các tác giả: Moonbaby Benina Kienmanowar © http://www.reaonline.com Using Olly I 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à :) 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 (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:  . chúng ta hãy tiếp tục nhìn xuống dưới chỗ khung Address : Code: 0012F8A4 | 0 0401 593 | CALL to lstrcmpA from crackme1.0 0401 58D 0012F8A8 | 0012F8C4 | String1 = "1234567890" 0012F8AC |. quá không bị pack. Dùng Olly load nó lên, chúng ta dừng lại ở đây : Code: 0 0401 099 | $EB 27 | JMP SHORT evdcm2.0 0401 0C2 Khác với cách ở phần 1, đến đây chúng ta sẽ tìm nơi mà cái nag Sorry. chúng ta load file crackme1 lên, sau khi chương trình load xong chúng ta sẽ ở đây : Code: 0 0401 B70 | $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

Ngày đăng: 01/07/2014, 13:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan