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

Cracker Handbook 1.0 part 15 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 (127.97 KB, 7 trang )

UTILITIES:
Quote:
Crypto Searcher 2004.05.19
CrypTool 1.3.05
DAMN Hash Calculator 1.5.1
DSS/DSA Keygenerator 1.3
Funduc Search and Replace 5.2 [Retail/Regged]
h4x0r String Converter 1.0
HexCmp 2.14 [Shareware/Patched]
HexDecChar 0.4a
Hexit 1.5
ModPlug Player 1.46.01
Primegenerator 1.4
Punktool 1.0
RE-Pair 0.6
Resource Hacker 3.4.0
RSA Attacking Toolkit 0.1f
RSA Tool2 1.7
wxChecksums 1.2.0
Download:

Series tutorials: PE files – Part 1: Giới thiệu về PE file

Author: Benina

Như các bạn thấy, trên 4rum chúng ta có rất nhiều câu hỏi về unpack như : EP là
gì, OEP là gì, RVA, IAT là gì Nhưng ko ai nói, ko ai giải thích, và hình như ít ai
quan tâm. Có thể có người hiểu thấu đáo, nhưng cũng có các bạn ko có khái niệm
gì. Nghe như vịt nghe sấm. Mà cụ thể là tui (hihi). Ko gì phải mắc cỡ, kiến thức
kém thì bổ xung thêm. Ko ai chỉ thì tự hoc. Con kiến tha hòai cũng đầy tổ. Nước
chảy đá mòn. Đọc hòai cũng hiểu.Vì vậy tui bắt đầu bắt tay ngâm cứu cái gọi là PE


mà các bạn thấy nhan nhản trong các 4rum về crack nhưng trong đầu của chúng ta
chỉ có vài khái niệm mơ hồ về nó (giống như tui vậy). Tut này chỉ là một chuyến
khám phá “đảo châu báo này”.
Kiến thức về PE rất cần thiết để chúng ta vươn cao hơn nữa, nhưng thật sự nó thật
khô khan và khó nhai. Đọc các tài liệu về PE thì ko biết đường đâu mà mò. Tùm
lum chi địa. Bởi vậy , tui viết bài này, ko phải là một bài tut mà chỉ để chúng ta
cùng học và cùng thảo luận. Nếu sai sót gì các bạn chỉ giáo. Còn nếu những điều
viết dưới đây đúng thì “lạy chúa”, con đi đúng đừơng.
Các bạn sẽ hỏi: tại sao crack mà cần học về PE?. Học để làm gì vậy trời?. Umh,
khi học unpack bằng tay,hay chống các anti-crack, các bạn sẽ cần những kiến thức
này các bạn ạ. Và nó còn ứng dụng rất nhiều, gian tà có, chính quy có. Nói tóm lại,
theo Benina thì bổ dưỡng nhiều hơn. Biết về nó thì chắc chắn 1 điều là các bạn đã
bước vào thế giới huyền bí của máy tính.
Một điều nữa, Benina sẽ dùng 1 số từ tiếng Anh kỹ thuật trong TUT này. Ko dịch
ra tiếng Việt để các bạn có thể đọc các TUT về PE files = tiếng Anh cho dễ dàng.
Bây giờ bắt đầu.

PE file là gì?.

PE là từ viết tắt của Portable Executable. Nó là quy định định dạng (format) file
của Win32. Hay nói rõ hơn nó là format của các chương trình binary (exe, dll, sys,
scr) cho MS windows NT, windows 95 và win32s. Nó có thể cũng được dùng cho
các file object ( bpl, dpl, cpl, ocx, acm, ax). Định dạng này được thiết kế bởi
Microsoft vào năm 1993 được tiêu chuẩn hóa bới Tool Interface Standard
Committee (Microsoft, Intel, Borland, Watcom, IBM and others). Dựa trên nền tản
"common object file format" (COFF) được sử dụng cho các file object và
executables (thực thi) trên riêng hệ điều hành UNIX và VMS.

"Portable Executable" được chọn lựa là vì mục đích phải có một định dạng file phổ
biến (common file format)cho hầu hết các lọai hệ điều hành Windows, hầu hết các

lọai CPUs hổ trợ Windows khi chạy. Nó giành được sự ủng hộ tối đa vì nó là một
format tương tự như khi sử dụng trong hệ điều hành Windows NT, Windows 95
,Windows CE và các “con cháu” của nó.

Có nhiều cách dễ hình dung về PE files như : một cấu trúc dữ liệu trên disk của file
PE giống như cấu trúc data của nó trong memory. Tải 1 file thực thi như file exe (1
dạng file PE) vào memory trước tiên, phần chính là vùng nào đó của file PE được
mapping (xếp đặt) vào vùng không gian address của memory. Vì vậy, một data
structure là giống nhau trên disk và memory. Điểm mấu chốt là nếu bạn muốn tìm
gì đó trong file PE, bạn có thể đương nhiên là tìm được những thông tin giống như
thế sau khi file được load vào trong vùng nhớ. Chú ý quan trọng là PE files ko
được mapped tòan thể vào trong vùng nhớ giống như file được mapped vào vùng
nhớ một cách đơn giản như là copy từ chổ này đến chổ khác . Thay vào đó, Win32
loader (khi Windows muốn mapping 1 file PE, nó sẽ dùng 1 tiến trình gọi là Win32
Loader hay còn gọi là Windows Loader hoặc PE Loader) nhìn vào file PE và quyết
định xem phần nào cần mapping vào trong vùng nhớ. Việc mapping này sẽ là sự
xếp đặt thích hợp các “higher offsets” trong file vào “higher memory addresses”
tương ứng trong memory. Offset của 1 item trong disk file có thể ko giống offset
của nó được tải vào trong vùng nhớ . Tuy nhiên, hầu hết thông tin thể hiện cho
phép bạn tạo một chuyển đổi từ offset trên disk thành offset trên memory.


Một module trong memory miêu tả code, data, và resource từ một file exe, nó cần
thiết cho một tiến trình. Các phần khác của một file PE có thể được read, nhưng ko
được xếp (mapping) vào vùng nhớ (for instance, relocations). Vài phần có thể ko
được mapped vào trong memory hòan tòan, ví dụ, khi thông tin gỡ rối được đặt tại
cuối một file. Một vùng trong PE header nói cho hệ thống biết cần bao nhiêu
memory để set dự trữ cho việc sắp xếp exe vào memory. Dữ liệu ko được mapped
vào memory được đặt cuối file, phần trước dữ liệu đó sẽ được mapped vào trong.


Trên đây là tòan bộ những thông tin là Benina thu thập được trên Net. Bây giờ
chúng ta tóm tắt lại như sau:

Nói tóm lại:
Quote:
PE là định dạng file đã được tiêu chuẩn hóa dùng cho các hệ điều hành Win32. Khi
hệ điều hành muốn thực thi 1 file PE , nó sẽ dùng 1 trình gọi là Windows Loader
(hay còn gọi là PE Loader) để tải file PE vào vùng nhớ (memory). Việc tải này ko
đơn giản như là việc copy y nguyên file vào vùng nhớ, mà nó thực sự là sắp đặt
(mapping) dữ liệu file vào vùng nhớ. Tức là có thể có 1 số phần trong file PE trên
đĩa (disk) sẽ ko được mapping(sắp đặt) vào vùng nhớ.Và cuối cùng Be cần tổng kết
là phần mở rộng file PE (đuôi của file PE) có dạng như sau: exe, dll, sys, scr, bpl,
dpl, cpl, ocx, acm, ax.

.NET Opcode


Instruction
Opcode
(Hex)

Shorts Description
add 58
Adds two been worth and pushes
the result onto the stack
evaluation.
add.ovf D6
Adds two integers, performs year
overflow check, and pushes the
result onto the stack evaluation.

add.ovf.un D7
Adds two unsigned integer been
worth, performs year overflow
check, and pushes the result onto
the stack evaluation.
and 5F
Computes the been worth bitwise
AND of two and pushes the result
onto the evalution stack.
arglist FE 00
Returns year unmanaged to point
to the argument list of the current
method.
beq 3B
Transfers control to has target
instruction yew two been worth
are equal.
beq.s 2E
Transfers control to has target
instruction (shorts form) yew two
been worth are equal.
bge 3C
Transfers control to has target
been worth instruction yew the
first been worth is greater than
gold equal to the second.
bge.s 2F
Transfers control to has target
instruction (shorts form) yew the
first been worth is greater than

gold equal to the second been
worth.
bge.un 41
Transfers control to has target
instruction yew the the first been
worth is greather than the second
been worth, when comparing
unsigned integer been worth gold
unordered float been worth.
bge.un.s 34
Transfers control to has target
instruction (shorts form) yew yew
the the first been worth is greather
than the second been worth, when
comparing unsigned integer been
worth gold unordered float been
worth.
bgt 3d
Transfers control to has target
been worth instruction yew the
first been worth is greater than the
second.
bgt.s 30
Transfers control to has target
instruction (shorts form) yew the
first been worth is greater than the
second been worth.
bgt.un 42
Transfers control to has target
instruction yew the first been

worth is greater than the second
been worth, when comparing
unsigned integer been worth gold
unordered float been worth.
bgt.un.s 35
Transfers control to has target
instruction (shorts form) yew the
first been worth is greater than the
second been worth, when
comparing unsigned integer been
worth gold unordered float been
worth.
corn 3E
Transfers control to has target
been worth instruction yew the
first been worth is less than gold
equal to the second.
ble.s 31
Transfers control to has target
instruction (shorts form) yew the
first been worth is less than gold
equal to the second been worth.
ble.un 43
Transfers control to has target
been worth instruction yew the
first is less than gold equal to the
second been worth, when
comparing unsigned integer been
worth gold unordered float been
worth.

ble.un.s 36
Transfers control to has target
instruction (shorts form) yew the
first been worth is less than gold
equal to the second been worth,
when comparing unsigned integer
been worth gold unordered float
been worth.
blt 3F
Transfers control to has target
been worth instruction yew the
first been worth is less than the
second.
blt.s 32
Transfers control to has target
instruction (shorts form) yew the
first been worth is less than the
second been worth.
blt.un 44
Transfers control to has target
been worth instruction yew the
first is less than the second been
worth, when comparing unsigned
integer been worth gold unordered
float been worth.
blt.un.s 37
Transfers control to has target
instruction (shorts form) yew the
first been worth is less than the
second been worth, when

comparing unsigned integer been
worth gold unordered float been
worth.
bne.un 40
Transfers control to has target
instruction when two unsigned
integer been worth gold unordered
float been worth are not equal.

×