memcpy, memset 구현

서우혁·2020년 7월 5일
2

구현하게 된 계기

  • code injection을 진행하다보니, 해당 함수를 많이 사용하게되는데 이를 macro함수로 구현하게 되면 API호출을 줄일 수 있습니다.

  • assembly를 사용하여 구현이 가능하지만, 이는 환경에 영향을 받기 때문에 macro함수로 구현하였습니다

  • call이 제한된 상황에서 유용하게 사용 할 수 있습니다.

  • 어떤 운영체제에서도 동일한 작동을 보장 받을 수 있는 함수가 필요하였습니다.

구현을 위해 참고 한 문서

구현한 코드

#ifndef _MEMIO_H
#define _MEMIO_H

#define TEMP(n) TEMP ## n  

#define MEMCOPY(Destination, Source, Size) \
do \
{ \
	int LINE = __LINE__; \
	int TEMP(LINE) = 0; \
	for(; TEMP(LINE) != Size; TEMP(LINE)++) \
	{ \
		((unsigned char *)Destination)[TEMP(LINE)] = ((unsigned char *)Source)[TEMP(LINE)]; \
	} \
} while(0);


#define MEMSET(Destination, Source, Size) \
do \
{ \
	int LINE = __LINE__; \
	int TEMP(LINE) = 0; \
	for(; TEMP(LINE) != Size; TEMP(LINE)++) \
	{ \
		((unsigned char *)Destination)[TEMP(LINE)] = Source \
	} \
} while(0);

#endif

Team H4C 서우혁

profile
reverser

0개의 댓글

관련 채용 정보