C언어 Inline Assembler 가지고 놀기
두비니
·2023. 4. 19. 19:17
나는 특별한 technique를 공부하는게 아닌 이상 그냥 큰 흐름만 이해하고 가는 편이다
그런데 역공학 수업을 들으면서 정말 한줄한줄 레지스터의 변화를 좀 파악해야 할 필요가 있어 Inline Assembler에 대한 내용을 정리한다.
// gcc -masm=intel test.c -o test
#include <stdio.h>
int main(){
__asm (
"mov eax, 0x12345678;"
"mov ebx, 0x34000000;"
);
return 0;
}
inline assembly를 쓰는 정말정말정말 간단한 코드다.
구글링을 하면 다 __asm {} 의 식으로 쓰던데, 컴파일러를 gcc로 해서 그런가 제대로 안된다.
+) 더 찾아보니깐 Visual Studio 컴파일러만 알아보는듯.
암튼 위와 같은 형식으로 작성하면 된다
이렇게 컴파일 한 뒤 디버거 붙여서 분석하면 된다
이런식으로 각각 세부적인 레지스터의 상황을 볼 수 있다
참고로 플래그 상황은 이렇게
flags [(+|-|~)FLAGNAME ...] # + (set), - (unset), ~ (toggle)
'etc > Tips' 카테고리의 다른 글
Ghidra-analyzeHeadless 사용하기 (0) | 2022.06.29 |
---|---|
컴퓨터로 논문 읽을 때 팁 (다크모드 전환) (4) | 2022.04.15 |
Python 다운받기 (0) | 2020.12.31 |
IDA 처음 쓰는 사람들에게 (3) | 2020.08.31 |
Pwntools 처음 쓰는 사람들에게 (0) | 2020.08.09 |