Điền các thông số giống hình sau, nhấn “IAT AutoSearch” rồi nhấn “Get Imports” Nhấn nút “Show Invalid”.. Nhấn nút phải lên các dòng được đánh dấu chọn rồi chọn “Trace Level 1”... Nhấn nú
Trang 1Về lại “CPU Window” Nhấn F9 Chương trình sẽ break tại 401000 :
Đây chính là OEP của ta
II Dump chương trình :
Dùng OllyDump để dump Chọn giống trong hình :
Trang 2Đặt tên file là “a.exe”
III Rebuild IAT :
Dùng Imprec nạp chương trình Điền các thông số giống hình sau, nhấn “IAT AutoSearch” rồi nhấn “Get Imports”
Nhấn nút “Show Invalid” Nhấn nút phải lên các dòng được đánh dấu chọn rồi chọn “Trace Level 1”
Trang 4Nhấn nút “Show Invalid” lần nữa Chúng ta thấy chỉ còn 2 API là chưa tìm thấy (2 cái tô xanh ở dưới) :
Chúng là 402020 (400000 + 2020)
402034 (400000 + 2034)
Quay trở lại OllyDbg Chúng ta đang ở 401000 Nhấn Ctrl-B Nhập vào FF
25 giống hình dưới :
Nhấn OK Chúng ta dừng
ở đây :
Dạng của API là JMP DWORD PTR DS:[XXXXXX]
Nhấn Ctrl-F Nhập vào JMP DWORD PTR DS:[402020] Nhấn Find
Trang 5Chúng ta dừng ở đây :
Nhấn Ctrl-R để xem dòng code nào gọi hàm này Chúng ta được :
Kích đôi chuột vào dòng đầu tiên (401002)
Chúng ta đang ở 401000 Nhấn F8 Chúng ta ở dòng 401002 Chú ý giá trị của thanh ghi EAX = 401000 Nhấn F8 một lần để thực hiện hàm Chúng ta nhìn
lại giá trị của EAX = 400000 -> Đây là hàm GetModuleHandleA
Đối với giá trị API thứ nhì (402034) cần tìm chúng ta làm tương tự Nhấn Ctrl-F Nhập vào JMP DWORD PTR DS:[ 402034] Nhấn Find
Chúng ta ở đây :
Cũng nhấn Ctrl-R
Kích đôi chuột vào dòng đầu tiên (401058)
Nhấn F2 để đặt breakpoint
Trang 6Nhấn Alt-M vào lại “Memory Map” bỏ chọn “Breakpoint memory on acess”
Quay về “CPU Window” Nhấn F9 để chạy chương trình Khi ta kích nút
“Exit” để đóng chương trình thì OllyDbg break tại 401058 (chỗ ta đặt breakpoint)
Trong Imprec ta đã biết 402034 thuộc kernel32.dll
Vào “Memory Window” đặt “Breakpoint memory on acess” trên section text của kernel32.dll như trong hình :
Quay về “CPU Window” Nhấn F9 3 (hay 4) lần Chúng ta sẽ ở trong kernel32.dll
Chú ý địa chỉ ta đang đứng là 77E77963 Nhấn Ctrl-N Nhấn vào cột Address để sắp xếp lại thứ tự API cho dễ kiếm Tìm dòng 77E77963
Trang 7Đó là hàm CloseHandle
Vậy ta có kết quả : 402020 là GetModuleHandleA
402034 là CloseHandle
Trong Imprec sửa lại 2 hàm cho đúng :
402020 :
402034 :