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

Cracker Handbook 1.0 part 382 potx

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 (341.31 KB, 5 trang )


Rồi các bạn nhìn xuống một chút, chúng ta sẽ thấy 00416245 JMP EDI, Hãy đến
00416245, àh các bạn nên đặt Hardware breakpoints executation (đừng nên đặt F2
tại địa chỉ trên), và nhớ xóa các breakpoints khi mà trace xong, ta sẽ đến đoạn mã
sau:

Các bác nên F8 từng cái thì mới có được hình dạng như trên. Ta ngưng ở
00378353:
JMP 0040400F  lệnh nhảy tới FALSE OEP
Ừm F7, ta tới đây:

Nếu có ai đó chưa hiện đúng như vậy thì hãy dùng chức năng plugin Analyze this!
Của OLLY.
OEP thì tại 00404000, những chỉ lệnh trên là những junk code, Chúng sẽ làm rối
mù chúng ta. Bây giờ ta tiến hành DUMP. (trong crackme này thì crackme vẫn làm
việc tốt).

3. IMPORTS
Các bạn hãy tìm chuỗi nhị phân sau: FF 25, rồi chọn đại một lệnh nhảy, Enter, các
bạn sẽ thây như sau:

Các lệnh nhảy lúc này sẽ nhảy đến những thủ tục của Obsidium.Ở đó, Obsidium
không dùng hàm GetProcAddress mà thay vào đó, những imports được lưu trữ
như:
- dll image base (handle),
- some flag (FFFFFFFF is good one),
- import code (which is 2,4,1,80, or 40),
- first character of import,
- CRC32 hash.
Obsidium sẽ lấy thông tin mà chương trình cần dùng dll, sau đó nó sẽ dùng một vài
kỹ thuật kiểm tra bên trong (đây có phải là import cần hay không,…), sau đó nó sẽ


tìm kiếm trong export Dll mà ký hiệu đầu tiên sẽ phù hợp với một cái gì đó trong
bảng “obsidium import info", sau đó nó sẽ tìm kiếm cho cái import đó dựa vào
CRC32 hash bằng với một giá trị trong bảng này.
Giờ thì xem ví dụ của chúng ta:


Ta hãy xem phân tích sau:

003E00B4 60 PUSHAD
003E00B5 66:BE 25A2 MOV SI,0A225 < Đây là 2giá trị mà chứa
thông
003E00B9 B7 67 MOV BH,67 < / tin về Dll
003E00BB -E9 695389FF JMP 00395429
Sau đó, ta enter vào địa chỉ 003E00BB:

Xem:
00375467 CMP DWORD PTR DS[EDI+EAX+4]  kiểm tra, nếu là DLL được
load, giá trị là FFFFFFFF. Tôi gọi đây là [1]
00375477 MOVZX EAX,WORD PTR DS:[ESI] < Nó sẽ lấy từ bảng
“import code” (2,4,1,80,40) [2]
003754AA CALL DWORD PTR DS:[EBX+50] < Nếu "import code" is 2,
nó tìm kiếm import đó ở đây.
TEST EAX,EAX < [3] EAX sẽ là API value. [3]
Hầu hết các import thì ở trong “code 2” loại.
Tôi đã dùng script để chỉnh sửa imports. Đầu tiên, ta xem xét bảng Imports trong
file gốc :






Giờ thì ta tiến hành fix Imports bằng tay heng.
Đặt “New Origin here” tại vị trí đầu tiên 003E0000, sau đó F7 đến
003E0007 Jmp 00375421
Rồi F7 tới 00375421, rồi đặt điểm ngắt tại 3 vị trí [1], [2],[3]:

Ta shift+F9, dừng tại 003754AD TEST EAX,EAX để xem API, rồi điền vào bảng
IAT,lần lượt như sau:

×