PACK VÀ UNPACK

Packer là 1 trong mẫu mã chương trình nénhoặc đậy dấutệp tin xúc tiến (executable file). Các công tác này Ra đời xuất phát điểm từ mục tiêu giảm kích thước của file, tạo nên bài toán cài đặt file nkhô giòn rộng.

Bạn đang xem: Pack và unpack


Rất các các coder giỏi những hãng ứng dụng thực hiện Packer nhằm mục đích mục tiêu khiến cracker/reverser khó khăn cùng tốn thời gian rộng vào việc bẻ khỏahoặc đảo ngượcứng dụng của mình. Đối cùng với rất nhiều kẻ chăm phạt tán các ứng dụng ô nhiễm và độc hại (malicious software) thì Packer còn tồn tại tác dụng góp kéo dãn thời gian mãi mãi của phần mềm càng thọ bị vạc hiện càng xuất sắc.
Cụ thể khi thực hiện, Packer nén, mã hóa, lưu lại hoặc giấu code gốc của công tác, tự động hóa bổ sung cập nhật một hoặc các section, kế tiếp sẽ thêm đoạn code Unpacking Stub và chuyển làn Entry Point (EP) cho tới vùng code này. Bình thường một tệp tin không đóng gói (Nonpacked) sẽ tiến hành tải vì chưng OS. Với tệp tin đã gói gọn thì Unpacking Stub sẽ được download vị OS, kế tiếp lịch trình cội vẫn download Unpacking Stub. Lúc bấy giờ code EPhường của file thực thi đã trỏ cho tới Unpacking Stub ráng bởi trỏ vào mã nơi bắt đầu.Để đọc được các phần bên trên thì chúng ta đề nghị đọc cấu trúc PE file cùng cách thực hiện của nó. Quý khách hàng có thể coi bài viếtTìm hiểu cấu tạo PE file.
*

Trong môi trường DOS, chương trình sẽ đánh giá DOS header và giả dụ đúng theo lệ sẽ thực thi DOS Stub. Còn thông thường tệp tin của chúng ta tuyệt chạy trên Windows thì 2 trường này có thể bỏ qua. Trường này là một trong cấu trúcgồm 19 thành phần.
Cuối trường DOS header sẽ sở hữu một yếu tắc là: e_lfanew đã chứa offphối của PE header đối với địa điểm đầu tệp tin.Cmùi hương trình vẫn xúc tiến cho PE header. Tiếp mang đến là hiểu Section Table để xem trong công tác bao hàm section làm sao.Sau đó lịch trình vẫn dancing mang đến từng section và tiến hành. Entry Point thường nằm tại những section đầu nếu file không bị đóng gói.
*

*

*

*

Sau Lúc dancing cho Entry Point của section UMPACKER thì cục bộ cực hiếm của các tkhô hanh ghi sẽ tiến hành bảo quản dựa vào lệnh PUSHAD.Sau đó Import Table sẽ được tính toán lại. Trong một file bị paông chồng, Import Table sẽ bị biến đổi với những tài liệu sẽ bị mã hóa.
Tiếp theo công tác đang phục sinh lại quý giá những thanh hao ghi đã làm được lưu lại vào Staông xã bằng lệnh POPAD.Cuối cùng công tác đang khiêu vũ mang lại Origin EntryPoint với xúc tiến như tệp tin lúc chưa bị gói gọn.
Đầu tiên ta nên phân biệt được xem một file gồm bị đóng gói hay không bằng phương pháp dùng những chế độ nhỏng PEiD :
Ở đây mình cần sử dụng file UnPackMe_ASPack2.12 làm đối tượng để thử nghiệm thử. File trên đã bị gói gọn bởi ASPaông chồng.Thông thường, các bước cơ bạn dạng nhằm tiến hành unpaông xã như sau:
Tìm OEPhường (Origin Entry Point):Orginal entry point là nơi nhưng lịch trình gốc thực sự bắt đầu thực thi. Ta đã sử dụng một vài cơ chế debug tệp tin như OllyDbg và IDA để tìm lại OEPhường.Kết xuất file (Dump):Sau Lúc khiêu vũ đến OEP ta vẫn tiến hành dump tệp tin. Mục đích của câu hỏi này là fix lại những section với import table nhỏng tệp tin ban đầu trước lúc bị đóng gói. Sử dụng Plugin OllyDumpEx nhằm dump tệp tin.

Xem thêm: Bán Vải Linen Tphcm - Vải Linen Đẹp Chất Lượng Giá Rẻ


Kiểm tra tệp tin xem còn các qui định Anti hoặc ngăn chặn câu hỏi thực thi hay là không rồi tiến hành chỉnh sửa. Đảm bảo file sau unpaông xã thực thi bình thường (Phần này sẽ tiến hành ra mắt trong những phần sau).
Tìm OEPKết xuất tệp tin (Dump)Sửa lại IAT (Repair IAT)Kiểm tra tệp tin coi còn các chế độ Anti hoặc ngăn chặn quán triệt thực thi không và thực hiện sửa đổi. Đảm bảo file sau unpaông chồng thực hiện thông thường .
Cách này dễ dàng với khá thô, chỉ rất có thể áp dụng với những trình packer đơn giản dễ dàng, cần yếu vận dụng nó cho những trình packer cạnh tranh nhằn nlỗi Asprotect.
Ý tưởng cơ phiên bản là tra cứu opcode của lệnh LONG JMP.. (0xE9) hoặc LONG CALL (0xE8). Các trình packer sau khi thực hiện đóng góitệp tin thìgồm khả năngtất cả một lệnh nhảy đầm hoặc một lời call hàm (call) cho tới section trước tiên, mục tiêu là để tới được OEP. Với phương pháp này, ta hy vọng những lệnh JUMPhường. hoặc CALL đang xuất hiện ngay trước tiên vào quá trình tìm kiếm hoặc trình packer không tồn tại qui định tự động hóa sửa đổi.
Ta chỉ cần kiếm tìm kiếm “Binary String” những chuỗi E9,E8. Sau kia xem câu lệnh làm sao có opcode. Dường như câu lệnh kia cần phía trong section trước tiên của chương trình.
Crúc ý , đôi lúc ta xem code của những trình packer đã thấy có những lệnh mẫu mã như CALL EAX, CALL EBX, JMP.. EAX. Rất những trình packer thường xuyên thực hiện các tkhô cứng ghi nhằm mục đích mục tiêu nhằm che vết vấn đề dancing cho tới OEP..
Msống đối tượng người dùng bị đóng gói trongOllyDBG, chọn Options > Debugging options hoặc dấn phím tắt Alt+O, gửi cho tới tab SFX:
Trong thẻ SFX bao gồm 2 tùy chọn: “blockwise” cho phép search kiếm nhanh khô nhưng lại độ đúng đắn rất có thể ko cao; “bytewise” được cho phép tìm kiếm với độ đúng chuẩn cao hơn nữa nhưng mà vận tốc lờ đờ hơn.