DANH MỤC TÀI LIỆU
Tìm hiểu về Pack và Unpack
TÌM HI U V PACK VÀ UNPACKỂ Ề
Vi c Pack các file th c thi (Executable) đ c th c hi n nh m m c ượ ự ệ
đích ngăn ch n phân tích hay t o ra m t t p tin nh h n giúp công ẹ ơ
vi c t i v đ c d dàng h n. N u file th c thi đ c Pack, vi c ki m ề ượ ơ ế ượ
tra các ch ng trình g c s g p khó khăn và ngăn ch n vi c phân tích ươ ẽ ặ
tĩnh các ho t đ ng c a file này.ạ ộ
C th khi s d ng, Packer nén, mã hóa, l u ho c d u code g c c a ử ụ ư
ch ng trình, t đ ng b sung m t ho c nhi u section, sau đó s thêm ươ ự ộ
đo n code Unpacking Stub và chuy n h ng Entry Point (EP) t i vùng code ể ướ
này. Bình th ng m t file không đóng gói (Nonpacked) s đ c t i b i OS.ườ ẽ ượ
V i file đã đóng gói thì Unpacking Stub s đ c t i b i OS, sau đó ch ng ẽ ượ ươ
trình g c s t i Unpacking Stub. Lúc này code EP c a file th c thi s tr ẽ ả
t i Unpacking Stub thay vì tr vào mã g c. Đ hi u đ c các ph n trên thì ể ể ượ
các b n c n hi u c u trúc PE file và cách th c thi c a nó. B n có th xem ạ ầ ể ấ
bài vi t Tìm hi u c u trúc PE file.ế ể ấ
C u trúc đ y đ c a m t PE file nh sau: ủ ủ ư
Trong môi tr ng DOS, ch ng trình s ki m tra DOS header và n u h p ườ ươ ẽ ể ế
l s th c thi DOS Stub. Còn bình th ng file c a chúng ta hay ch y trên ệ ẽ ườ
Windows thì 2 tr ng này có th b qua. Tr ng này là m t c u trúc có 19 ườ ể ỏ ườ
thành ph n.
Cu i tr ng DOS header s có m t thành ph n là: e_lfanew s ch a offset ố ườ
c a PE header so v i v trí đ u file. Ch ng trình s th c thi đ n PE ớ ị ươ ẽ ự ế
header. Ti p đ n là đ c Section Table đ xem trong ch ng trình có nh ng ế ế ươ
section nào. Sau đó ch ng trình s nh y đ n t ng section và th c thi. ươ ế ừ
Entry Point th ng n m các section đ u n u file ch a b đóng gói.ườ ằ ở ế ư
Tìm hi u các k thu t phân tích tĩnh c b n ơ mà b t kỳ ng i l p trình ườ ậ
nào cũng c n ph i bi t ả ế
Nguyên lí ho t đ ng c a Packerạ ộ
C u trúc c a file PE ban đ u s có d ng nh sau: ầ ẽ ư
File này s b nén và mã hóa r i đ c thêm vào m t hay nhi u section do ẽ ị ượ
packer t t o ra.ự ạ
Khi ch y file thì ch ng trình s đ c th c thi nh sau: ươ ẽ ượ ư
Ti p theo ch ng trình s th c thi PE header:ế ươ ẽ ự
Sau khi nh y đ n Entry Point c a section UMPACKER thì toàn b giá tr ả ế
c a các thanh ghi s đ c l u l i nh l nh PUSHAD. ượ ư ờ ệ Sau đó Import Table
s đ c tính toán l i. Trong m t file b pack, Import Table s b thay đ i vàẽ ượ ẽ ị
các d li u s b mã hóa. ẽ ị
Ti p theo ch ng trình s khôi ph c l i giá tr các thanh ghi đã đ c l u ế ươ ụ ạ ượ ư
trong Stack b ng l nh POPAD.ằ ệ Cu i cùng ch ng trình s nh y đ n Origin ươ ẽ ả ế
EntryPoint và th c thi nh file lúc ch a b đóng gói. ư ư ị
Nguyên lí Unpack
Đ u tiên ta ph i nh n bi t đ c xem m t file có b đóng gói hay không ế ượ
b ng cách dùng các công c nh PEiD : ụ ư
đây mình dùng file UnPackMe_ASPack2.12 làm đ i t ng đ test th . ố ượ
File trên đã b đóng gói b ng ASPack.ị ằ Thông th ng, các b c c b n đ ườ ướ ơ ả
th c hi n unpack nh sau:ự ệ ư
thông tin tài liệu
Việc Pack các file thực thi (Executable) được thực hiện nhằm mục đích ngăn chặn phân tích hay tạo ra một tập tin nhẹ hơn giúp công việc tải về được dễ dàng hơn. Nếu file thực thi được Pack, việc kiểm tra các chương trình gốc sẽ gặp khó khăn và ngăn chặn việc phân tích tĩnh các hoạt động của file này.
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×