Cuộc thi viết chương trình theo dõi mã máy
Một người bạn của chúng ta đã có nhã ý tài trợ cho một cuộc thi nhỏ.
Mục tiêu: Viết một công cụ bằng ngôn ngữ Python để thực hiện việc lưu lại những lệnh gọi hàm ở mức hợp ngữ trong khi thực thi của một chương trình thông thường khác.
Ví dụ: Với đoạn mã tương tự như sau:
0x08048552 <main+110>: mov DWORD PTR [esp],eax 0x08048555 <main+113>: call 0x80483d8 <printf@plt> 0x0804855a <main+118>: mov eax,0x0 0x0804855f <main+123>: leave 0x08048560 <main+124>: ret
thì chương trình sẽ in ra thông tin tương tự (có thể tùy ý chỉnh sửa cho đầy đủ hơn) như sau:
* Before printf() --------------------------------------------------------------------------[regs] EAX: 0x08048646 EBX: 0x002B2FF4 ECX: 0x00000003 EDX: 0xBFFFEF9C ESI: 0x00000000 EDI: 0x00000000 EBP: 0xBFFFF0A8 ESP: 0xBFFFEF80 * After printf() --------------------------------------------------------------------------[regs] EAX: 0x0000000A EBX: 0x002B2FF4 ECX: 0xBFFFEF68 EDX: 0x002B4320 ESI: 0x00000000 EDI: 0x00000000 EBP: 0xBFFFF0A8 ESP: 0xBFFFEF80
Yêu cầu: Bắt buộc phải sử dụng ngôn ngữ Python cho chương trình chính. Có thể sử dụng thêm các công cụ phụ hoặc thư viện hỗ trợ như GDB, ptrace.
Hạn nộp bài: Ngày 26 tháng 07 năm 2010
Nộp bài (mã nguồn) về cho admin+frontpage@vithon.org (xin vui lòng bỏ +frontpage).
Giải thưởng: Một giải thưởng duy nhất bao gồm 100.000 đồng tiền mặt và một món quà từ Las Vegas.