티스토리 뷰

리버싱

리버스 엔지니어링의 준말

완성된 소프트웨어나 시스템을 분석하여 동작이나 구조를 파악하는 것을 의미

 

어셈블리어

CPU가 이해할 수 있는 기계어(Machine Code)에 가장 가까운 저수준 언어(Low-level language)

 

많은 프로그램이 전처리 - 컴파일 - 어셈블리어 - 기계어 - 링킹 후 exe 파일 순으로 만들어진다.

 

gcc를 이용한 표준적인 단계

 

ELF & PE

 

ELF

리눅스, 유닉스에서 사용하는 실행 파일 형식

보통 .so, .out, .elf로 끝난다.

 

PE

윈도우에서 사용하는 실행 파일 형식

보통 .exe, .dll, .sys로 끝난다.

 

 

.exe vs .dll

 

exe는 하나의 독립적인 프로그램으로서 독립적으로 실행되고, Main을 포함하여 실행 가능하다.

dll은 코드나 기능을 공유하는 라이브러리로 독립적으로 실행되지 않고 Main 없음. exe에서 로드해야 한다.

 

동적 분석 vs 정적 분석

 

동적 분석 - 프로그램을 실제로 실행시키고 실행 중 어떤 일이 일어나는지를 관찰

디버거를 통해 메모리와 레지스터를 실시간으로 확인하거나 네트워크 트래픽 등을 모니터링함

실제 행위를 볼 수 있어 분석이 직관적이고 메모리 사용, 등록값 변화 등을 실시간으로 모니터링 할 수 있음

x64dbg, OllyDbg, IDA 등

 

정적 분석 - 프로그램을 실제로 실행하지 않고 분석

디스어셈블러, 디컴파일러, Hex 에디터 등 도구로 바이너리 코드를 뜯어봄

실행 없이 분석하므로 안정성과 깊이가 보장되고, 오류로 인한 중단 위험이 없음

Ghidra, IDA 등

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함