Tools: IDA + helloworld 분석

IDA 구조

fuctions window
IDA에서 분석한 함수 나열, ctrl+f로 원하는 함수 찾기 가능
graph overview: 함수의 흐름 파악
output window: 분석 과정 출력
view: 디컴파일 결과, hex-view, 구조체 목록

IDA 기능

임의 주소 및 레이블 이동(jump to address): 단축키 G
함수 및 변수 이름 재설정(rename address): 단축키 N
Cross reference(Xref): 단축키 X
함수 및 변수 타입 변경(enter the type declaration): 단축키 Y
Strings 문자열 조회: 단축키 Shift+F12
Decompile: 어셈블리를 C언어 형태로 변환

Exercise: Helloworld

1. 정적 분석

아이다로 파일 열기

IDA 파일 열기

정적 분석은 main함수를 먼저 찾음
바이너리에서 함수 찾는 방법

  1. 엔트리 포인트부터 분석하여 원하는 함수찾을 때까지 탐색
  2. 함수의 특성이나 정보를 이용하여 탐색

문자열 검색

  1. shift+f12 누름 -> strings창
  2. hello, world! 찾아서 더블 클릭

문자열 검색
문자열 검색 결과

상호 참조
수상한 값 또는 함수를 참조하는 함수 분석
변수 클릭 후 단축키 x -> xrefs

상호 참조
main 함수의 모습

main 함수 분석
f5 -> 디컴파일

디컴파일 결과

인자 분석: 아이다는 argc, argv, envp 3개 인자 설정

동작

  1. 0x3e8u만큼 sleep -> 1초 대기
  2. qword_14001dbe0에 문자열 넣기 “Hello, world!\n”
  3. sub_140001060 함수에 “Hello, world!\n”를 인자로 전달하여 호출
  4. return 0

sub_140001060 분석

sub_140001060 분석

va_start함수로 가변 인자 처리
__acrt_iob_func 함수: 스트림을 가져올 때 사용하는 함수, 인자 1이 들어가면 stdout 의미
문자열 인자를 받고 stdout 스트림 사용 -> printf

동적 분석

f2 -> 중단점 설정
f9 -> 실행
f8 -> 한 단계 실행
f7 -> 함수 내부 진행
appendix -> 실행중인 프로세스 조작