My article: Analysis excute code of easy program in Vietnamese
Demo disassembly Mở file vidu.exe, chọn E ( excute), chọn tới vidu.exe Ta thấy nội dung chương trình sau khi disassemly. Đây chính là code thực thi của chương trình: Trước tiên cần tìm chương trình chính, source code là: #include int tong(int a, int b) { int t=0; t=a+b; return t; } int main (){ printf("Ket qua: %i",tong(1,2)); return 0; } Nhận thấy là có một chương trình con là tính tổng, như vậy trong chương trình chính sẽ gọi hàm tong với 2 tham số truyền vào là 1 và 2. Sau đó, hàm main sẽ phải in ra “Ket qua: “. Với 2 dữ kiện đó, chúng ta tạm xác định hàm main bắt đầu từ: 00401020 Vì: Bắt đầu bằng việc PUSH EBP và MOV EBP,ESP. Việc này là thủ tục đầu tiên khi gọi hàm. Tiếp theo, hàm main sẽ gọi hàm tính tổng. Tại sao? Ở vị trí 00401023, tiến hành PUSH 2 rồi tiếp theo PUSH 1. Đây chính là quá trình truyền tham số cho chương trình con thông qua stack ( hoạt động theo cơ chế LIFO). Các tham số được push vào theo chiều ngược lại với cod