<![CDATA[Latest posts for the topic "Nhờ mọi người giải thích hộ đoạn mã ASM"]]> /hvaonline/posts/list/36.html JForum - http://www.jforum.net Nhờ mọi người giải thích hộ đoạn mã ASM /hvaonline/posts/list/43434.html#269520 /hvaonline/posts/list/43434.html#269520 GMT Nhờ mọi người giải thích hộ đoạn mã ASM

minhvc wrote:
Mình có một hàm mã ASM đang cần chuyển về C/C++ nhưng đọc không hiểu. Bạn nào rành về ASM thì hỗ trợ mình với nhé. Cảm ơn nhiều :0040237C 55 push ebp :0040237D 8BEC mov ebp, esp :0040237F 56 push esi :00402380 57 push edi :00402381 8B7D08 mov edi, dword ptr [ebp+08] :00402384 8BC7 mov eax, edi :00402386 8B750C mov esi, dword ptr [ebp+0C] :00402389 8B4D10 mov ecx, dword ptr [ebp+10] :0040238C 8BD1 mov edx, ecx :0040238E D1E9 shr ecx, 1 :00402390 D1E9 shr ecx, 1 :00402392 FC cld :00402393 F3 repz :00402394 A5 movsd :00402395 8BCA mov ecx, edx :00402397 83E103 and ecx, 00000003 :0040239A F3 repz :0040239B A4 movsb :0040239C 5F pop edi :0040239D 5E pop esi :0040239E 5D pop ebp :0040239F C3 ret 
Đoạn này chắc bạn cắt ra từ 1 debugger nào đấy phải không? ]]>
/hvaonline/posts/list/43434.html#269525 /hvaonline/posts/list/43434.html#269525 GMT
Nhờ mọi người giải thích hộ đoạn mã ASM /hvaonline/posts/list/43434.html#269528 /hvaonline/posts/list/43434.html#269528 GMT Nhờ mọi người giải thích hộ đoạn mã ASM /hvaonline/posts/list/43434.html#269613 /hvaonline/posts/list/43434.html#269613 GMT Nhờ mọi người giải thích hộ đoạn mã ASM /hvaonline/posts/list/43434.html#269614 /hvaonline/posts/list/43434.html#269614 GMT Nhờ mọi người giải thích hộ đoạn mã ASM

minhvc wrote:
0040237C : memcpy(dst, scr, size); thì size có giá trị là 8. 3 tham số lần lượt là: 6A08 push 00000008 //->size 8D45E8 FF7510 push [ebp+10] //scr l8D45E8 ea eax, dword ptr [ebp-18] //dst hai lệnh này thì mình hiểu chút là phần khởi tạo stack đầu mỗi hàm :00401244 55 push ebp :00401245 8BEC mov ebp, esp nhưng câu lệnh thứ 3 :00401247 83C4D0 add esp, FFFFFFD0 thì mình khổng hiểu vì sao lại cộng vào esp một số lớn như thế ->Chắc là do hiểu chưa đúng câu lệnh. Ai biết giải thích giùm nhé. 
Theo bác thì 0xFFFFFFFF có giá trị bằng bao nhiêu (32 bit có dấu)]]>
/hvaonline/posts/list/43434.html#269616 /hvaonline/posts/list/43434.html#269616 GMT
Nhờ mọi người giải thích hộ đoạn mã ASM

minhvc wrote:
@xuanphongdocco: chính xác rồi bạn ạ. @TQN: Cảm ơn bạn Bạn có thể giải thích chút về cách đọc hiểu được không, vì còn tầm 10 mấy cái hàm như thế này nữa. Exported fn(): MyFunc- Ord:0001h :00401244 55 push ebp :00401245 8BEC mov ebp, esp :00401247 83C4D0 add esp, FFFFFFD0 :0040124A 6A08 push 00000008 :0040124C FF7510 push [ebp+10] :0040124F 8D45E8 lea eax, dword ptr [ebp-18] :00401252 50 push eax :00401253 E824110000 call 0040237C :00401258 83C40C add esp, 0000000C :0040125B C645F000 mov [ebp-10], 00 :0040125F 66C745E60000 mov [ebp-1A], 0000 -> call 0040237C : chính là gọi cái hàm mà mình đã post. giải thích giúp mình cách chuyền tham số như thế nào với nhé. Mong sớm có hồi âm của bạn. Thanks 
Code:
:0040237C 55 push ebp  //cat ebp vao stack
:0040237D 8BEC mov ebp, esp //cho ebp=esp
:0040237F 56 push esi  //cat esi vao stack
:00402380 57 push edi //cat edi vao stack
:00402381 8B7D08 mov edi, dword ptr [ebp+08] // cho edi tro den tham so thu 2 la dia chi dich 
:00402384 8BC7 mov eax, edi  //cho eax = edi la dia chi cua dich
:00402386 8B750C mov esi, dword ptr [ebp+0C] //cho esi tro den tham so thu nhat la dia chi nguon 
:00402389 8B4D10 mov ecx, dword ptr [ebp+10]  //cho ecx= tham so thu 3 la kich thuoc
:0040238C 8BD1 mov edx, ecx  //cho edx=ecx
:0040238E D1E9 shr ecx, 1 //
:00402390 D1E9 shr ecx, 1 // ecx bang kich thuoc can copy tinh theo dword (khong tinh phan du)
:00402392 FC cld // clear co direct => che do lam viec voi string tu trai sang phai
:00402393 F3 repz 	 //
:00402394 A5 movsd   //copy theo don vi dword du lieu dc tro boi esi sang dia chi tro boi edi, moi lan nhu vay giam ecx di 1, thuc hien toi khi ecx =0
:00402395 8BCA mov ecx, edx 		//
:00402397 83E103 and ecx, 00000003 	//ecx chua so byle le con lai (vi du kich thuoc can copy la 9 byte thi luc nay ecx=1)
:0040239A F3 repz	// 
:0040239B A4 movsb //copy not ecx byte le
:0040239C 5F pop edi //khoi phuc edi
:0040239D 5E pop esi // khoi phuc esi
:0040239E 5D pop ebp //khoi phuc ebp
:0040239F C3 ret	//tro ve
]]>
/hvaonline/posts/list/43434.html#269618 /hvaonline/posts/list/43434.html#269618 GMT
Nhờ mọi người giải thích hộ đoạn mã ASM /hvaonline/posts/list/43434.html#269624 /hvaonline/posts/list/43434.html#269624 GMT Nhờ mọi người giải thích hộ đoạn mã ASM /hvaonline/posts/list/43434.html#269626 /hvaonline/posts/list/43434.html#269626 GMT Nhờ mọi người giải thích hộ đoạn mã ASM /hvaonline/posts/list/43434.html#269627 /hvaonline/posts/list/43434.html#269627 GMT