반응형

주관적인 리버싱 공부 단계

1. 코딩

코딩 능력은 리버싱 뿐만 아니라 여러분이 해킹공부할때 거의 반드시 필요하게 되어 있다.

python 같은 언어는 배우기 쉽고 빠르게 응용할 수 있으므로(생산성이 좋다고 한다) 추천한다. 이미 다른 언어를 잘 사용할 수 있다면 그걸 계속 쓰는 것이 맞다. 리버싱을 공부하게 된다면 C언어 또한 배우는 것을 추천한다.

2. 어셈블리

어셈블리 언어가 어렵다고 하는데 이는 사람마다 다르다(마치 영어처럼). 하지만 리버싱을 공부하는 이상 어셈블리 언어는 반드시 공부해야 하는 것 중 하나이다.

어셈블리 언어는 아키텍쳐 마다 다르다. 하지만 우리가 쓰는 x86,x64를 위주로 공부하는 것이 좋다. 이후 다른 어셈블리 언어를 볼 때 도움이 될 수 있다.

어셈블리 언어는 어려워 보이지만 팁을 주자면 대부분 영어 약칭을 사용하는 경우가 많기에 꾸준히 보고 공부한다면 쉽게 외울 수 있을 것이다.

3. 분석

분석 능력을 키우는 것은 처음에는 너가 만든 프로그램을 직접 어셈블리 디버거로 분석해 보는 것이 좋다. 이후 디버거 정보를 제거한다던지 난이도를 높이면 좋다.

리버싱에서 분석 방법은 숲에서 나무로, 나무에서 숲으로 두 가지가 있을 수 있다. 이것은 너 마음대로 하면 되지만 분석하다 중요한 부분을 놓치면 안된다는 말을 전하고 싶다.

처음부터 IDA PRO 와 같은 프로그램을 사용하면 편하겠지만 가끔 분석이 안되는 것이 있을때도 있다(MIPS, 스택 범위 초과)

그때는 어셈을 가지고 분석해야 하므로 분석 능력을 배우는 것은 좋다.

4. 여러가지 안티 디버깅 공부, packer, 트릭들

몇 프로그램은 여러 안티 디버깅이 존재한다. 나도 이것 전체를 외우지 못했으며 간간히 찾아 보는 일이 있다. 하지만 IsDebuggerPresent와 같은 기본적인 부분은 공부해야 편할 것이다. 그리고 여러 트릭들은 문제를 풀어보며 배우는 것이 좋을 듯 하다

5. 인내 그리고 검색

아마도 제일 중요하지 싶다. 내가 삽질이라고 주위에 말하는 건데 리버싱은 삽질이 많이 필요할 때가 많다. 그래서 포기하지 않고 꾸준이 할 수 있는 인내심이 필요하다.

또한 리버싱을 공부하면 항상 모르는 부분이 나올 것이다. 그런건 검색을 해라 대부분 다른 분들이 미리 알아내서 정리해둔 글이 있을 것이다. 그리고 대부분 글은 영어다.




'Reversing > Etc' 카테고리의 다른 글

APK 정적 분석  (0) 2017.02.17
Angr 설치  (4) 2017.01.20
반응형

프로젝트에서 APK 정적 분석을 할 필요가 있어서 만들었던 문서


APK분석.pdf


'Reversing > Etc' 카테고리의 다른 글

주관적인 리버싱 공부 단계  (0) 2017.08.06
Angr 설치  (4) 2017.01.20
반응형

Angr는 python 기반으로 되어 있는 바이너리 동적 분석 도구로 Computer Security Lab at UC Santa Barbara에서 관리되어지고 있다.

AEG(Auto Exploit Generation)에서 Symbolic Execution에 속하는 도구라고 생각하면 된다.

따라서 CTF 리버싱 문제를 풀때 사용하면 편하게 풀 수 있다.


설치 홈페이지: http://angr.io/install.html

위 사이트를 통해 쉽게 설치할 수 있으나 나는 github에 있는 angr-dev를 통해 설치하는 것을 권장한다.

Angr는 많은 연산을 필요로 하는데 cpython으로 할시 엄청난 시간을 소비하게 된다.

따라서 Angr 문서에서도 Pypy를 사용하는 것을 추천하고 있다.


Pypy: http://pypy.org/download.html

나는 2.7 호환 버전을 다운받아 /opt/에 압축풀었다.


Root 권한을 추천한다.


# mkvirtualenv -p /opt/pypy/bin/pypy angr

# deactivate

# git clone https://github.com/angr/angr-dev

# cd angr-dev

# ./setup.sh -i -p angr


이후 workon angr를 사용해  angr를 사용하면 된다.

'Reversing > Etc' 카테고리의 다른 글

주관적인 리버싱 공부 단계  (0) 2017.08.06
APK 정적 분석  (0) 2017.02.17

+ Recent posts