Chào các bạn, trong tutorial này mình sẽ giới thiệu về pack, unpack. Mục đích chính và cùng các bạn unpack các trình pack phổ biến hiện nay.
Dưới đây là toàn bộ khung chương trình của mình
1. Giới thiệu lý thuyết về pack và unpack
2. Thực hành unpack các trình pack phổ biến đến nâng cao
2.1. Unpack UPX (dễ)
2.2. Unpack ASP (dễ)
2.3 Unpack PSG (trung bình)
2.4 Unpack MEW (trung bình)
2.5 Unpack WinPack (trung bình)
2.6. Unpack PECompact(khó)
2.7. Unpack SLVcode (khó)
Mình đã trở lại, lần này mình cùng với các bạn thử unpack một mẫu đào tiền ảo được pack bởi trình pack upx. Một trình pack rất phổ biến và cũng rất dễ unpack. Trình pack này rất hay được mã độc sử dụng.
Mẫu mình đã đính kèm. Pass là: whitehat nhé
Màn hình đầu tiên cho chúng ta thấy được các lệnh đặc trưng của trình pack rất hay có:
pushad, chúng ta để ý ngay bên dưới là vòng lặp giải mã
Lan man một hồi F7, F8 để chạy từng lệnh của vòng lặp giải mã, cuối cùng mình cũng break ra được. Nhảy được tới địa chỉ
4EE5AA mình nhận thấy nó gọi hàm
LoadLibrary và
GetProAddress phần nào cũng đoán được đang lấy địa chỉ các API để phục vụ quá trình khôi phục file gốc.
Tiếp tục đi tiếp, mình nhận thấy bắt gặp lệnh
popad, như vậy quá trình giải nén, giải mã file gốc đã hoàn thành, ngay bên lệnh
popad là lệnh
sub ep - 80, jmp 401500 đó chính là lệnh nhảy tới file gốc
Quá trình unpack đã thành công.
Cuối cùng ta dùng plugin của olly để dump file unpack được. File unpack mình cũng đã gửi bên dưới để các bạn thực hành và so sánh kết quả. Chúc các bạn thành công
!
Tổng kết lại của trình pack upx là:
Các lệnh đặc trưng của trình pack này: pushad, popad, sub ebp, jmp ....(địa chỉ EP của file gốc)
Mẫu + unpack:
https://drive.google.com/file/d/136q5GN6Dv292ocfWAOwHlWt4J3ypYjt-/view?usp=sharing