티스토리 뷰

Reversing

리버스 엔지니어링 기본

Heavy_Rain 2014. 10. 30. 19:16

이전에 대학교 동아리내에서 세미나했던 기본적인 자료들부터 차례대로 포스팅 하겠습니다.

 

저도 학생이라 여러 책들을 보고 만들었으며, 사실과 다른 부분이 있을것입니다.

 

틀린부분이 있다거나 저작권에 위반되는 부분이 있다면 즉시 수정하겠습니다. 감사하겠습니다 ^^

 

 

1.리버스 엔지니어링?

 (Revers Engineering ,RE: 역 공학)

 

 

장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견하는 과정이다. 

 

리버스 엔지니어링의 기원은 상업적 또는 군사적으로 하드웨어를 분석한 것에서 시작되었습니다.  

 

목적은 원본 생산의 절차에 관한 지식이 거의 없는 상태에서, 최종 제품을 가지고 디자인 결정과정을 추론하는 것 입니다. 

 

같은 기술이 레거시 소프트웨어 시스템을 응용하기 위해 현재 연구되고 있는데, 산업이나 국방이 아니고, 오류, 미완성, 

 

접근 불가인 문서를 수정하기 위함입니다. 

 

 

 

1-1. 분석방법 (정적 분석 )

 

 

 

파일을 실행하지 않고 파일의 종류(exe, dll, zip ), 크기헤더(PE)정보 내부 문자열등록 정보, 

 

디버깅 정보 들의 내용을 확인 방법을 말합니다. 

 

또한 디스어셈블러(Disassembler)를 이용해서 내부 코드와 그 구조를 확인, 정적 분석 방법으로 얻어낸  

 

다양한 정보는 동적 분석 방법의 좋은 참고 자료가 될 수 있습니다. 

 

 

1-2. 분석방법 (동적 분석)

 

 

 

파일을 직접 실행시켜 그 행위를 분석하고디버깅을 통하여 코드 흐름과 메모리 상태 등을 직접 자세히 살펴보는 방법.

 

파일레지스트리네트워크 등을 관찰하면서 프로그램의 행위를 분석,

 

디버거(Debugger)를 이용하여 프로그램 내부 구조와 동작 원리를 분석할 수 있습니다. 

 

 

2. 어셈블리어  

  

 

기계어와 1:1로 대응하는 언어.   

 

기계어는 0과 1로 이루어져있어어 알아보기 쉽지 않습니다.  이런 기계어를 사람들이 알아보기 쉽게 만들어  놓은

 

언어가 어셈블리어 입니다. 

 

댓글