2021-07-10 · 1

[해킹] 리버싱 시작

securityreversing

이 글은 작성된 지 2년이 넘었어요. 내용이 오래됐을 수 있어요.

CTF에서의 리버싱

  1. 프로그램 구조 분석
  2. 분석을 바탕으로한 코드 재구현
  3. 역연산을 통한 플래그 획득

-> 플래그 획득을 위해서는 프로그램의 구조를 분석하고 이해하는 과정이 필수적입니다.

결국 리버스엔지니어링은 많이 분석할수록 실력이 늡니다.

다른 분야와는 달리 기법을 배운다기 보다는 새로운 유형을 접한다는 방식으로 공부합니다.

해킹 기반 지식

Linux - 해킹을 하기 위해선 linux를 다룰 수 있어야 합니다.

Programming - 적어도 1개의 언어는 배우는 것이 많은 도움이 될 겁니다.

특히 c언어는 시스템 해킹을 하기 위해선 필수로 알아야 합니다.

소스코드 컴파일

#include <stdio.h>

int main()
{
	printf("Hello World!!");
    return 0;
}

위와 같은 "Hello World" 코드를 짜고 컴파일 하게 됐을때, 아래와 같이 처리 됩니다.

Helloworld.c => Helloworld.i => Helloworld.s => helloworld.o => Helloworld

  소스코드       전처리 후 소스   어셈블리 소스    오브젝트 파일    실행파일

!> ****](https://nabomhalang.tistory.com/entry/해킹-레지스터)

위와 같이 우분투에서 "gcc -v --save-temps -o '실행파일 이름' '소스파일 이름'"을 입력하시게 되면 컴파일 되는 모든 파일이 위의 사진과 같이 모두 저장이 됩니다. 그래서 위와 같이 어셈블리 소스 파일인 "helloworld.s"파일을 열어 보았을때 어셈으로 작성되어 있는 것을 확인할 수 있습니다. ### 디스어셈블 ![](/content- — nabomhalang.tistory.com


원문: tistory — 2021-07-10 발행, 이 블로그로 이전됨.

댓글

댓글을 삭제할까요?

관련 글

[해킹] 리버싱 시작 · 나봄하랑