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

Cracking part 40 pps

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 (165.48 KB, 6 trang )

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
©

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 ( 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:

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×