어셈블리 memset

Reversing/리버싱 이론

2016. 3. 29. 01:48

mov     eax, data

mov     edi, dest

mov     ecx, size

rep stos(d)


이런식의 어셈블리어가 함수 프롤로그 다음에 있으면

edi주소에 해당하는 크기*size만큼 eax로 채운다.

b = 1, w = 2, d = 4 byte 이다.


따라서 만약 0x1234에 다가 0을 4바이트씩 100바이트 채우기 위해서는


lea     ebx, [0x1234]

mov     eax, 0

mov     edx, 25

mov     edi, ebx

mov     ecx, edx

rep stosd


대충 이런식의 명령어로 memset기능을 할 수 있다.


간단하면서도 memset함수보다 빠른 장점이 있다.