2013. 8. 8. 11:43
리버스 엔지니어링
(Reverse Engineering) 이란..
(=리버싱 Reversing)
프로그램이 실행되는 과정을 역(Reverse)으로 추적하여 그 프로그램의 내용을 뜯어 보는것.
위의 말에서 이해가 안되는 부분이 있다면 '역(Reverse)으로 추적하여' 라는 부분일 것이다.
역(Reverse)으로 추적한다는게 대체 무슨 뜻일까
그러면 먼저 프로그램이 만들어 지는 순서를 간략하게 볼 필요가 있다.
프로그램이 만들어지려면 아래와 같은 과정을 거친다.
코드 -> 어셈블리어 -> 이진수
위와 같이 컴퓨터가 이해할수 있는 이진수로 프로그램을 만드려면
사람이 코드를 작성하고
그것을 어셈블리어로 바꾸고
바꾼 어셈블리어를 이진수로 바꿔줘야만이
컴퓨터가 이해할수 있는 프로그램이 완성되는것이다.
자, 원 질문으로 돌아가서 역으로 추적을 하는데 이 과정을 왜 알아야하냐 하면
이 과정을 알아야 이진수 -> 어셈블리어 -> 코드 로 점점 사람이 이해할수 있는
언어에 가까워 져서 내가 어느 부분을 바꿔야 내 의도대로 프로그램을 돌릴수 있는지를
좀 더 알기 쉽게 된다.
그렇다면 리버싱을 통해 원래의 코드를 알아내서 내 마음대로 할수 있지 않겠느냐? 라는 질문을 할수가 있다. 하지만 역으로 추적해서 원래의 코드를 100% 복원하는데는 한계가 있다. 따라서 리버싱을 할때에는 어셈블리어 단계까지만 복원을 하여 원하는 부분을 바꾸곤 한다.
'프로그래밍 > 리버스 엔지니어링' 카테고리의 다른 글
OllyDbg 초기설정 (0) | 2013.08.29 |
---|---|
OllyDbg 64비트 호환용 플러그인 (0) | 2013.08.29 |