Reverse Engineering - 01. 리버스 엔지니어링
by jennysgap리버스 엔지니어링
이진 코드로 되어 있는 실행 파일을 분석하려는 일련의 행위이다.
1,2 리버스 엔지니어링의 종류
보안적 관점
• 소프트웨어를 개발 후 개발된 제품에 대해 암호화 알고리즘과 관련된 보안의 평가
• 해커들이 운영체제/애플리케이션의 취약점을 분석 후 바이러스 또는 악성코드를 제작하는데 사용
• 백신업체에서 바이러스 또는 악성코드를 분석 후 백신을 만들기 위해 사용
• 소프트웨어에서 사용된 암호화 알고리즘을 분석하기 위해 사용
개발적 관점
• 소프트웨어 개발시 필요한 지식을 습득하기 위해 다른 소프트웨어를 분석하는데 사용
2. 용어
• CPU (Central Processing Unit)
• MEMORY
• Register
레지스터
2.1 포인터 레지스터(Pointer Register)
• EBP(Base Pointer) : 함수의 파라미터나 변수의 위치를 얻어오는데 간접적으로 사용(스택 메모리를 가리킴).
• ESP(Stak Pointer) : 스택(stack)의 맨 꼭대기를 가리키는데 사용,
그러나 프로그램 안에서 수시로 변경되기 때문에 특정 기준 시점을 잡아 ESP값을 EBP에 저장하여
EBP를 기준으로 변수나 패러미터에 접근. SS 레지스터와 함께 사용되며, 스택의 가장 끝 주소를 가리킴.
• EIP(Instruction Pointer) : 현재 수행중인 코드를 가리킴.
2.2 범용레지스터(General-Purpose Registers) 32bit만 표시
• EAX(Accumulator, 누산기)
어큐물레이터(Accumulator): 모든 연산 명령에 사용되는 레지스터, 산술연산, 입출력,
Translate명령어, 주로 산술 연산에 사용(함수의 결과값 저장)
• EBX(Base Register, 베이스 레지스터)
임의의 번지 지정에 사용되는 어드레스 레지스터, offset, 특정 주소 저장
(주소 지정을 확대하기 위한 인덱스로 사용)
• ECX(Count Register, 카운트 레지스터)
스트링 조작 명령이나 반복 루프의 계수기로 사용, 반복적으로 실행되는 특정 명령에 사용
(루프의 반복 횟수나 좌우 방향 시프트 비트 수 기억)
• EDX(Data Register, 데이터 레지스터)
산술연산, EAX와 함께 자주 사용, 일반 자료 저장(입출력 동작에 사용)
'BOX' 카테고리의 다른 글
Reverse Engineering - 02. BOF shellcode [작업중] (0) | 2016.12.22 |
---|---|
맥북(Macbook) 캘린더에 네이버 캘린더 연동 (0) | 2016.12.21 |
네트워크 해킹 - 17. XSS(Cross Site Scripting) (0) | 2016.12.21 |
네트워크 해킹 - 16. sniffing을 이용한 web 데이터 도청 (0) | 2016.12.21 |
Baekjoon Online Judge (0) | 2016.12.20 |
블로그의 정보
jennysgap
jennysgap