Reverse Engineering: Một số lưu ý khi thay đổi luồng thực thi
Khi thấy các câu lệnh nhảy rẽ nhánh, ví dụ là jb hoặc jnz để nhảy tới khối lệnh khác có thể thay bằng lệnh nop để không nhảy sang các nhánh không mong muốn mà sẽ thực thi tiếp theo luồng chính của chương trình.
Một cách thứ hai là đặt breakpoint ở câu lệnh nhảy và quan sát cờ ZF, nếu set cờ nảy nhảy thành 1 thì sẽ nhảy sang hướng ngược lại. Thường cờ này sẽ nhảy khi so sánh giá trị kết quả của lệnh cmp.
Ngoài ra ở chế độ debug, muốn nhảy tới lệnh kế tiếp mà không tuân theo logic flow của chương trình ta có thể dùng chức năng SetIP của IDA để nhảy tới khối lệnh tiếp theo mà không cần patch chương trình
Như vậy có thể rút ra một kết luận là khi ta debug thì ta nên đặt các breakpoint ở trước câu lệnh rẽ nhánh và set IP ở các nhánh khác để chương trình chạy nhánh mà ta đã chọn
Không có nhận xét nào:
Đăng nhận xét