Trao đổi với tôi

http://www.buidao.com

12/10/10

[Reverse] [IDA] Hướng dẫn save patches ra file exe trong IDA

[IDA] Hướng dẫn save patches ra file exe trong IDA
Vấn đề:
Thông thường sau khi dissemble và debug để hiểu hết các hành vi của 1 file PE nào đó, chúng ta sẽ thực hiện các patch: to assemble (đối với OllyDbg), điều này làm dễ dàng với OllyDbg : Copy to executable ► All modification, save file thế là done. Nhưng bên IDA khi patch xong , ta vào File ► Procedure File ► Create EXE File thường ta sẽ nhận được thông báo lỗi “This type of output file is not supported”. Vậy mục đích của File ► Procedure File ► Create EXE File là gì?

Lý do:
Khi IDA load 1 original source file (*.exe) và analyze, sau đó lưu lại thành IDA database (*.idb), nghĩa là sau này chúng ta làm việc trên IDA database (*.idb) chứ không trực tiếp với file PE ban đầu. Những thông tin được dissamble mà bạn được thấy trên IDA database có nội dung của những section đã mất đi so với file PE nguồn ban đầu. IDA không xử lý hết mỗi section của file nguồn và những thông tin đó đã bị mất khi file được nạp vào IDA database => điều đó làm cho việc tạo lại 1 file PE từ database là hoàn toàn không thể.
Lấy 1 ví dụ đơn giản: IDA không load section .rsrc (resource section) của PE file, như vậy việc khôi phục resource section từ file IDA database là không thể rồi.

Giải pháp:
Có 1 giải pháp cho việc xuất ra file EXE đối với IDA là pe_scripts của tác giả Atli Mar Gudmundsson. Trong đó có 1 bộ IDA scripts dùng cho việc xử lý với các file PE. Một trong số đó là: pe_write.idc. Mục đích của script là dump file PE đang work ra từ database.
Để sử dụng script cho mục đích patch 1 file PE, ta làm trình tự các bước sau:
Load 1 file PE bất kỳ vào IDA và cần phải bỏ check ở mục chọn Make imports section trong hộp thoại loader của IDA
Chạy script pe_sections.idc để map tất cả sections từ file nguồn PE vào trong database
Sau đó các anh em cứ thực hiện sửa code trong IDA, làm các thay đổi trong database
Cuối cùng chạy script pe_write.idc để dump nội dung database mà chúng ta đã patch ra 1 file PE mới

Link:
P/S:
Còn về việc hướng dẫn patch trong IDA như thế nào thì trickyboy đã có nói ở REA

Ori: REA Forum