30/09/2018, 18:11

Cho e hỏi đoạn code Assembly này có nghĩ thế nào?

movdwordptr[ebp+data],612E2F47h
movdwordptr[ebp+data+4],5B2A451Ch
movwordptr[ebp+data+18h],858h
movwordptr[ebp+data+1Ah],0h

ở đây data là gì ?

Quân Phan viết 20:20 ngày 30/09/2018

mov dword ptr[ebp+data],612E2F47h
mov dword ptr[ebp+data+4],5B2A451Ch
mov word ptr[ebp+data+18h],858h
mov word ptr[ebp+data+1Ah],0h

data ở đây là 1 tên biến global trong asembly, đây là asm trong ollydbg hay IDA pro thì phải.

明玉 viết 20:18 ngày 30/09/2018

cái data đó là biến do IDA Pro đặt ra (dùng để trỏ đến một giá trị trong Stack), bạn lên đầu hàm sẽ có declaration của nó, lấy giá trị của nó cộng với con số đi kèm, ví dụ ebp + data + 4 là bạn cộng cho 4 sẽ ra được đúng asm nguyên gốc, hoặc là bấm dòng đó rồi nhấn Q.
Biến IDA đặt ra thì theo mình là không đáng tin cậy lắm, đụng mấy đoạn code khó là nhiều khi đặt biến dễ gây nhầm lẫn, không thể hiện đúng logic của code.

Smile Tom viết 20:16 ngày 30/09/2018

asm nguyên gốc, hoặc là bấm dòng đó rồi nhấn Q

mov dwordptr[ebp+data],612E2F47h
mov dwordptr[ebp+data+4],5B2A451Ch
mov dwordptr[ebp+data+8],6E6B5E18h
mov dwordptr[ebp+data+0Ch],5C121F67h
mov dwordptr[ebp+data+10h],0D5E2223h
mov dwordptr[ebp+data+14h],5E0A5F1Dh
mov wordptr[ebp+data+18h],858h
mov wordptr[ebp+data+1Ah],0h

e hiểu đây là mảng vậy có đúng k?nếu là mảng thi là 1 mảng hay là 2 mảng riêng?

明玉 viết 20:22 ngày 30/09/2018

chưa chắc là mảng bạn ạ, đó chỉ là gợi ý của IDA mà thôi.
chỉ có thể chắc chắn là mấy lệnh đó lấy dữ liệu từ stack (biến cục bộ hoặc tham số hàm), trong đó có 1 nơi trên stack thì IDA đặt tên là data, phần cộng thêm là những giá trị bên cạnh data (rời xa khỏi đỉnh stack). Cũng có thể tất cả những cái đó thuộc 1 struct.
Mình cũng là người tập tành hack nên chỉ hiểu đến thế thôi

Bài liên quan
0