// markers
#define XM_START "\xEB\x0D\x78\x38\x36\x6F\x62\x66\x2D\x66\x6C\x61\x67\x73\x2D"
#define XM_END "\xEB\x0F\x78\x38\x36\x6F\x62\x66\x2D\x65\x6E\x64\x2D\x61\x72\x65\x61"
C/C++ 에 소스코드에 마커를 삽입하라는 프로그램을 보았는데
한번도 적용해본적이 없어서 적용하기가 매우 힘들었다
마커삽입은 다음과 같이 하면 된다
위와 같은 마커를 삽입하라고 했을 때:
// markers
#define X_START _asm _emit 0xEB _asm _emit 0x0D _asm _emit 0x78 _asm _emit 0x38 _asm _emit 0x36 _asm _emit 0x6F _asm _emit 0x62 _asm _emit 0x66 _asm _emit 0x2D _asm _emit 0x66 _asm _emit 0x6C _asm _emit 0x61 _asm _emit 0x67 _asm _emit 0x73 _asm { _emit 0x2D }
#define X_END _asm _emit 0xEB _asm _emit 0x0F _asm _emit 0x78 _asm _emit 0x38 _asm _emit 0x36 _asm _emit 0x6F _asm _emit 0x62 _asm _emit 0x66 _asm _emit 0x2D _asm _emit 0x65 _asm _emit 0x6E _asm _emit 0x64 _asm _emit 0x2D _asm _emit 0x61 _asm _emit 0x72 _asm _emit 0x65 __asm { _emit 0x61 }
바이너리 형식으로 코드안에 삽입을 해야해서
_asm _emit을 사용하여 마커를 선언을 했다, 이는 코드안에 삽입하기위해서 자주 쓰이는 방법이라고 한다
*맨 마지막에만 {, } 괄호를 썻는데, 직접해본 결과로는 괄호가 없어도 똑같이 작용한다
실제 소스코드에는 다음과 같이 사용하면 된다
X_START
printf("hi!\n");
X_END
이렇게 한뒤, 컴파일하고 생성된 EXE파일의 바이너리를 보면 밑과 같은 마커가 삽입이 되어있다.
출처:
[1] https://www.codeproject.com/Articles/15971/Using-Inline-Assembly-in-C-C
'TIL > 잡다한' 카테고리의 다른 글
[CUDA] Problem with libGL.so on 64bit Ubuntu (0) | 2018.03.16 |
---|---|
[Network] 우분투 eth0 오류 (0) | 2018.03.16 |
[알고리즘]정렬 알고리즘 및 시간 복잡도 정리 (0) | 2018.02.26 |
[컴퓨터구조]How does CPU execute program (0) | 2018.02.23 |
[심볼제거관련] __attribute__ hidden 옵션 (0) | 2018.02.22 |