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