CS & SS là thanh ghi chứa địa chỉ segment của mã lệnh (CS) và stack (SS). Khi thực thi một file exe, DOS sẽ tìm segment nào còn trống và gán địa chỉ segment này cho các thanh ghi, đồng thời nạp dữ liệu vào segment đó.
bboy0303 wrote:
Có cách nào để xác định 2 giá trị đầu vào để bắt đầu chương trình SS=52D2 và CS=52D0 ko ạ?
DOS làm điều này, bạn chỉ có thể xác định sau khi chương trình đã được nạp.
bboy0303 wrote:
Và cuối cùng là làm sao để đặt cs:ip vào 1 địa chỉ theo ý muốn ạ (ví dụ đổi cs:ip của hello.exe là 52D0:0000 thành 52D1:0002)?
Trong exe header có thành phần ghi giá trị khởi tạo CS:IP. Thay đổi giá trị này nếu muốn, nhưng chương trình có thể bị treo.
Muốn thay đổi IP khi thực thi, có thể dùng các cách sau
Code:
mov ax, địa chỉ IP mới
jmp ax
push địa chỉ IP mới
ret