잡다

ReverseEngineering For CTF

관용 2021. 1. 18. 23:24

ReverseEngineering For CTF

O 개요

-       장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견하는 과정

O 리눅스 역공학

-       GDB: ptrace 기반 소스레벨 디버거

-       Biew: HexEdot

-       CTF의 경우, 공격성 기법의 조합 및 최신 기법 요구

O 어셈블리

-      주요 데이터의 교환 및 조건 분기의 주요 유형

 명령어

설명

lea edx,b

Edx에 변수 b의 포인터 저장

Mov ebx,a

Ebx는 변수 a의 값 저장

Mov ecx, offset a

Exc는 변수 a에 대한 포인터 저장

Mov [edx],ebx

변수 a를 변수 b에 복사

Mov b, ebx

변수 a b에 복사

Cmp eax,ebx

Eax ebx를 비교

Jz xxx

두 값이 같으면 xxx로 분기

 

O GDB를 활용한 기본 Flow

-      프로그램을 로드-> b main -> run

-      인텔 문법으로 변경: set disassembly-flavor intel

 

O GDB 사용법

-       실행

n  GDB를 이용하기 위해서는 컴파일 과정에서 디버깅 정보를 삽입(컴파일 시 g)

) $ gcc -g -o main main.c

 

./gdb file

./gdb pid

-       종료방법

GDB> q

 

-       Breakpoint(gdb가 종료될 때 까지 유효)

GDB> b(break) [함수명] // 일반 함수 lable NAME, main *&main+offset

GDB> b
GDB> break *0x8049000  //
메모리주소에 설정(어셈블리로 디버깅시 이용)
GDB> break 10 if var == 0  //var
변수의 값이 0일때 10 행에 설정

-       Breakpoint Condition

GDB> condition [N] var == 0  //var변수가 0일때 N 브레이크포인트 동작

-       Breakpoint List

GDB> info break

-       Breakpoint Clear

GDB> d // 모든 break point 지움

GDB> disable br 1 3 // 1, 3 브레이크 포인트 비활성화

-       프로그램 실행

GDB> run

GDB> run arg1 arg2

-       Tracing

GDB> step // 함수 내부로 진입, stepi instruction 위주

GDB> step 6 // 함수 내부로 6 진입

GDB> next // 함수 실행 진행, nexti instruction 위주

GDB> next 6 // next 6 수행

-       Until, Continue, return

GDB> until // step 명령 함수 내부 탈출

GDB> continue // 다음 명령 실행

GDB> return // 함수 탈출

-       Watch Point

GDB> watch [변수명] // 변수에 값이 Wrtie

GDB> rwatch [변수명] // 변수에 값이 Read

GDB> awatch [변수명] // 변수에 값이 Read, Write

-       Register

GDB> info locals // 지역변수 목록

GDB> info variales // 전역변수 목록

GDB> print [변수명], [함수명], *[변수명], $[레지스터]

-       Examine

GDB> x/[범위][출력형식][범위의 단위]

출력 형식
t    : 2
진수로 출력
o   : 8
진수로 출력
d   :
부호가 있는 10진수로 출력
u   :
부호가 없는 10진수로 출력
x   : 16
진수로 출력
c   :
최초 1바이트 값을 문자형으로 출력
f    :
부동 소수점 값 형식으로 출력
a   :
가장 가까운 심볼의 오프셋을 출력
s   :
문자열로 출력
i    :
어셈블리 형식으로 출력

Ex) x/12i main

 

'잡다' 카테고리의 다른 글

다이어리  (0) 2021.03.12
용기, 삶  (0) 2021.02.03
PenetrationTest For CTF  (0) 2021.01.18
ltrace  (0) 2021.01.18
Digital Forensic For CTF  (0) 2021.01.18