본문 바로가기
심심풀이/기타

리버스 엔지니어링이란

by 백룡화검 2008. 6. 26.
출처 ashine | 어샤인
원문 http://blog.naver.com/pcsne/50010391913

http://openproject.nazzim.net

 

우선 리버스 엔지니어링이란 무엇이고 크랙이란 무엇인지 제가 생각하는대로 쓰겠습니다.

 

리버스 엔지니어링은 이미 만들어진 컴파일 된 실행 파일을 보고 그 프로그램이 내부적으로 어떻게 동작하는지 알아내는 것 입니다.

(물론 그 프로그램은 소스가 공개되어 있지 않겠죠.소스가 공개되어 있다면 리버싱을 할 필요가 없으니까요.)

 

크랙이란 위에 리버스 엔지니어링으로 알아낸 결과를 통해서 실행 파일에 일부분에 코드를 자신이 원하는

코드로 변경하는 것을 말합니다.

 

잡설은 그만하고 위에 리버스 엔지니어링과 크랙을 하기 위해서는 도구와 지식이 필요합니다.

우선 필요한 도구는 HEX 에디터, 소프트아이스, 올리 디버거 같은 것들이 있습니다.

이 문서에서는 크랙 할 때 사용 할 도구로 올리 디버거를 사용 할 껍니다.

왜냐면 이게 제일 쉽고 무료이기 때문입니다.

필요한 지식은 생각보다 좀 많습니다.

우선적으로 프로그래밍을 많이 해봤어야 됩니다.너무 당연한거겠죠.

그리고 어셈블리를 알아야 합니다.참고로 어셈블리에 대해 능숙하게 하지 않아도 됩니다.

어셈블리 소스 코드를 보고 이 명령어가 무엇을 하는지에 대해서 알면 되겠죠.

여기서 하는 크랙은 윈도우즈 프로그램을 크랙하는 것 이기 때문에

윈도우즈 API 에 대해서 알고 계셔야 합니다.

 

제가 필요하다고 말한 지식에 대해서 알고 계시지 못 한다면 이 강좌에 대해 이해를 하실 수 없습니다.

만약 위에 대한 지식을 모르신다면 위에 지식을 먼저 습득하시기 바랍니다.

위에 지식을 습득하려는 분들을 위해 제가 추천하는 책과 잡설을 하겠습니다.

우선 어셈블리를 하기 위해서는 먼저 어셈블리가 아닌 다른 언어에 대해서 공부하시길 추천합니다.

여기서 다른 언어는 베이직이나 파스칼, C, C++ 같은 쉬운 언어를 말하는 겁니다.

물론 여기서 쉬운 언어라고 하는 관점은 어셈블리보다 익히기 쉽다는 것으로 전제합니다.

( 오히려 C 언어가 어셈블리어 보다 더 어려 울 수도 있습니다. )

참고로 저는 위에 언어를 다 해봤습니다.다 해보는게 가장 좋겠죠.

그 다음에는 윈도우즈 API 에 대해서 공부하세요.

개인적으로 윈도우즈 API 에 대해서 공부할 때 가남사에 Windows API 정복이라는 책을 추천합니다.

이 책 쓰신 분 정말 책을 잘 쓰시더라구요.

그 다음에 어셈블리 언어에 대해서 배우시면 됩니다.

어셈블리 언어를 배우기 위해 추천하는 책은 교보문고에 IBM PC 어셈블리 프로그래밍입니다.

책이 설명이 잘 되어 있고 쉽습니다.

그리고 어셈블리 언어를 통해서 어셈블리로 직접 프로그램 같은 것들은 어느 정도 짜보는 것도 좋겠죠.

 

그럼 바로 본론으로 넘어가겠습니다.

 

올리 디버거 1.10 다운로드

 

첫 번째 크랙 ( haque-abex1 )

 

두 번째 크랙 ( haque-abex5 ) - 간단한 키젠 만들기

 

실전 크랙 ( MSN Messenger 7.5 크랙 ) - 메신저 여러개 동시에 띄우기

 

세 번째 크랙 ( cffo-2 ) - 실행파일 팩킹