Bây giờ chúng ta sẽ dump file dùng OllyDump đặt tên là dump.exe.. Bây giờ trace với F7 cho tới khi chúng ta vào địa chỉ có dạng 77XXXXXX.. Bây giờ nhấn phải chuột chọn như trong hình.. N
Trang 1File của chúng ta bắt đầu bằng PUSH 0 (6A 00) Chúng ta thấy dưới 00407085 một chút ở 00407088 có hai byte (6A 00) Đây chính là OEP của chúng ta Nhấn
Ctrl-G Nhập vào 00407088 Nhấn OK
Trang 2Bây giờ chúng ta sẽ dump file dùng OllyDump đặt tên là dump.exe Giống hình sau :
Bây giờ
là lúc chú
ng
ta fix IAT Nhấ
n
Trang 3nút “*” chúng ta sẽ ở 00401029, cuộn màn hình xuống Tại 0040110E chúng ta sẽ thấy các hàm gọi đến APIs (Nếu các bạn không thấy, tại 0040110E nhấn Ctrl-A)
PESpin đã xoá IAT và thay các lệnh JMP [XXXXXXXX] thành lệnh nhảy trực tiếp JMP YYYYYYYY Vậy bây giờ làm thế nào để tìm APIs Chúng ta sẽ trace từng API Tại 0040110E nhấn phải chuột và chọn như trong hình
Chúng ta sẽ ở 0040110E Bây giờ trace với F7 cho tới khi chúng ta vào địa chỉ có dạng 77XXXXXX Trên máy tui, tui sẽ dừng ở 77E75CC2 Cuộn màn hình lên một chút xíu Chúng ta thấy như sau :
Trang 4Chú ý là điểm bắt đầu API là 77E75CB5 (màu đỏ trong hình trên) Bây giờ nhấn phải chuột chọn như trong hình
Trong cửa sổ “All Names” Nhấn phải chuột chọn như trong hình để sắp xếp các API theo thứ tự address cho dễ tìm kiếm
Bây giờ cuộn cửa sổ xuống phía dưới kiếm địa chỉ 77E75CB5
À, vậy là chúng ta biết được API này là ExitProcess trong Kernel32.dll
Trang 5Đối với các API khác chúng ta cũng làm tương tự (00401114, 0040111A, ……, 00401156) Cũng chọn “New Origin Here” đối với các địa chỉ còn lại và trace bằng F7
Cuối cùng chúng ta có bảng tổng kết sau :
Bây giờ chúng ta sẽ kiếm một chỗ trống trong file dump.exe để chèn các API này vào Dùng bất kỳ chương trình Hex Edit nào mở file dump.exe ra và kiếm chỗ trống (nhiều byte 00) Ở đây tui thấy 00403050 có nhiều chỗ trống Chúng ta sẽ chèn các API vào chỗ đó
Chạy Imprec Chọn đại bất cứ process nào cũng được Ở đây tui chọn Notepad Điền các thông số giống trong hình Nhấn nút “Get Imports” Chúng ta được :
Trang 6Bây giờ chúng ta sẽ điền các API vào Nhấn đúp chuột vào dòng “rva:00003050 ptr:C13B0100” Và điền API ExitProcess vào như trong hình :
Trang 7Ở rva 00003054 là hàm GetModuleHandleA Ở rva 00003058 chúng ta sẽ cắt bỏ đi (do hết API trong kernel32.dll bằng cách nhấn phải chuột chọn “Cut Thunk(s)”) Làm tương tự cho các API còn lại (Ở 00003074 cắt bỏ) Các rva còn lại sau khi điền hết các API cũng cắt bỏ Chúng ta được như sau :