Transfers control to has target been worth instruction yew the first been worth is greater than gold equal to the second.. Transfers control to has target instruction shorts form yew the
Trang 1UTILITIES:
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:
http://cracklab.ru/olya/
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
Trang 2Cá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
Trang 3củ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
Adds two been worth and pushes the result onto the stack
evaluation
Adds two integers, performs year overflow check, and pushes the result onto the stack evaluation
Trang 4add.ovf.un D7
Adds two unsigned integer been worth, performs year overflow check, and pushes the result onto the stack evaluation
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
Transfers control to has target instruction yew two been worth are equal
Transfers control to has target instruction (shorts form) yew two been worth are equal
Transfers control to has target been worth instruction yew the first been worth is greater than gold equal to the second
Transfers control to has target instruction (shorts form) yew the first been worth is greater than gold equal to the second been worth
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
Transfers control to has target instruction (shorts form) yew yew the the first been worth is greather
Trang 5than the second been worth, when comparing unsigned integer been worth gold unordered float been worth
Transfers control to has target been worth instruction yew the first been worth is greater than the second
Transfers control to has target instruction (shorts form) yew the first been worth is greater than the second been worth
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
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
Transfers control to has target been worth instruction yew the first been worth is less than gold equal to the second
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
Trang 6first is less than gold equal to the second been worth, when
comparing unsigned integer been worth gold unordered float been worth
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
Transfers control to has target been worth instruction yew the first been worth is less than the second
Transfers control to has target instruction (shorts form) yew the first been worth is less than the second been worth
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
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
Trang 7integer been worth gold unordered float been worth are not equal