정보보안

어셈블리(구조체)

swzz 2020. 1. 12. 06:47

@ 어셈블리(구조체)

1. 구조체

 - 여러 자료형을 가진 변수들을 하나의 그룹 형태로 묶어서 사용하는 자료형이다.
 - 'struct' 구조체 이름을 정의하고 중괄호 안에 필요한 자료형 변수들을 선언한다.
 - 구조체 구문은 다음과 같다.

struct 구조체 이름
{
자료형 변수명;
자료형 변수명;
};


2. 구조체 이해

 1) VS 2008을 이용하여 'struct.exe' 파일을 제작한다.

 - 파일 -> 새로 만들기 -> 프로젝트 -> 빈 프로젝트 -> 위치(04_테스트) & 이름(struct) -> 확인
 - '소스 파일' 우클릭 -> 추가 -> 새 항목 -> 'C++ 파일(.cpp)' 선택 -> 이름(struct) -> 추가

#include 

struct num 
{
int num1;
int num2;
int num3;
};

int main()
{
struct num st;
st.num1 = 6;
st.num2 = 2;
st.num3 = 8;
printf("%x, %x, %x\n", st.num1, st.num2, st.num3);
return 0;
}


 - 파일 -> 모두 저장 -> 닫기


 2) 'cl' 명령어를 이용한 최적화 컴파일 실시

C:\리버싱\04_테스트\struct\struct>cl struct.cpp /link /debug /opt:icf,ref
Microsoft (R) 32비트 C/C++ 최적화 컴파일러 버전 15.00.30729.01(80x86)
Copyright (c) Microsoft Corporation.  All rights reserved.

struct.cpp
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:struct.exe
/debug
/opt:icf,ref
struct.obj

C:\리버싱\04_테스트\struct\struct>dir


3. 올리디버거를 이용한 'struct.exe' 분석

 - 메모리 주소, 레지스터 저장 값, 스택 내용, 메모리 덤프 내용 확인