리버스 엔지니어링이란 물건이나 기계장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여

원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 작업.

   

리버싱 방법

   

1.정적 분석

파일의 겉모습을 관찰하여 분석하는 방법. 정적 분석의 단계에서는 파일을 실행하지 않고 종류, 크기, 헤더정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 다양한 내용을 확인하는 것. 그리고 디스어셈블러를 이용하여 내부 코드와 그 구조를 확인하는 것.

2.동적 분석

파일을 직접 실행시켜 행위를 분석하고, 디버깅을 통하여 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법. 파일, 레지스트리, 네트워크 등을 관찰하면서 프로그램의 행위를 분석. 또한 디버거를 이용하여 프로그램 내부 구조와 동작 원리를 분석.

   

가지 방법을 활용하면 프로그램을 리버싱할 시간을 많이 단축시킬 있고, 효과적인 분석이 가능.

   

 

함수 호출 규약

   

caller - 함수를 호출하는

callee - 호출 받는쪽

   

1.cdecl

함수를 호출한 쪽이 stack 정리

2.stdcall

호출을 당한 쪽이 stack 정리

3.fastcall

   

 

   

참고 - http://www.slideshare.net/H4C/ss-59722847

   

 

   

 

   

   

'리버싱' 카테고리의 다른 글

패킹  (0) 2016.09.23
어셈블리 정리  (1) 2016.09.20

+ Recent posts