Chào mọi người, mình đang đảo mã một ứng dụng viết bằng C, sử dụng IDA 6.1. Gặp một đoạn mã assembly như thế này,
MÃ ASSEMBLY
Code:
call system
mov edx, eax
sar edx, 1Fh
shl edx, 8
sbb eax, edx
sar eax, 8
mov [0x7F8], eax
Mình tự dịch sang C thì nó như thế này:
int ret = system("a string"
dw7F8 = (ret - ((ret >> 31) << 8) ) >> 8;
Debug thì giá trị ret= 0x0100 sau đoạn lệnh sẽ chuyển thành 0x01
Không hiểu là nó làm gì nữa, bác nào có kinh nghiệm có thể giải thích ngắn gọn lại xem nó làm gì giúp mình.
Xin cảm ơn.