banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thủ thuật reverse engineering Giải thích giúp em đoạn code này  XML
  [Question]   Giải thích giúp em đoạn code này 27/03/2014 11:44:25 (+0700) | #1 | 280114
sieudot
Member

[Minus]    0    [Plus]
Joined: 19/04/2011 03:21:17
Messages: 2
Offline
[Profile] [PM]
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"smilie;
dw7F8 = (ret - ((ret >> 31) << 8) ) >> 8;

Debug thì giá trị ret= 0x0100 sau đoạn lệnh sẽ chuyển thành 0x01 smilie

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.
[Up] [Print Copy]
  [Question]   Giải thích giúp em đoạn code này 05/04/2014 10:17:20 (+0700) | #2 | 280194
sieudot
Member

[Minus]    0    [Plus]
Joined: 19/04/2011 03:21:17
Messages: 2
Offline
[Profile] [PM]
Thôi, em tự tìm ra rồi, search cái lệnh SAR thì nó là phép chia của số nguyên có dấu smilie
Ví dụ lệnh C sau:

signed int ret = -1000;
k = ret / 256;

Khi biên dịch sang ASM, thì nó được tối ưu hoá ra đoạn code assembly chết đâm đó smilie
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|