본문 바로가기

레지스터 ( Register )의 이해 IA-32(Intel Architecture 32bit)의 레지스터에 대해 정리하겠습니다. ( 리버싱 핵심원리 ) 레지스터란 CPU 내부에 존재하는 다목적 저장 공간입니다. 일반적으로 메모리라고 얘기하는 RAM(Random Access Memory)과는 성격이 조금 다릅니다. CPU가 RAM에 있는 데이터에 접근하기 위해서는 물리적으로 돌아가야하기 때문에 오래걸리지만, 레지스터는 CPU 내부에 존재하므로 고속으로 데이터를 처리할 수 있습니다. IA-32 레지스터의 종류는 다양하지만초급 단계에서는 Basic program execution registers에 대해 알아두어야 합니다.(중/고급 단계에 올라가면 Control registers, Memory management registers, Debug r.. 더보기
바이트 오더링( 빅 엔디언, 리틀 엔디언 ) 바이트 오더링이란 데이터를 저장하는 방식을 말합니다.빅 엔디언 표기법과 리틀 엔디언표기법 2가지 방식이 있습니다 1. 빅 엔디언 표기법대형 UNIX 서버에 사용되는 RSIC 계열의 CPU에 많이 사용되고, 네트워크프로토콜에 사용됩니다.데이터를 저장할 때 사람이 보는 방식과 동일하게 순차적으로 저장합니다.ex) 0x12345678 -> (빅 에디언 표기법) 0x12345678 2. 리틀 엔디언 표기법리틀 엔디언은 Intel x86 CPU에서 사용되므로 Windows계열 리버싱을 위해 리틀 엔디언 방식을 잘 알아야 합니다. 데이터를 저장할 때 역순으로 저장합니다.ex) 0x12345678 -> (리틀 에디언 표기법) 0x78563412데이터를 역순으로 저장시키기므로 산술 연산과 데이터의 타입이 확장/축소될 .. 더보기
리버싱 ( Reversing ) Reverse Engineering 의 줄임말입니다. 제작된 프로그램의 동작방식을 관찰하며 원래 소스 코드를 복원해내는 작업입니다. 리버싱을 통해 프로그램의 흐름이나 구조, 취약점을 찾아낼 수 있고 패치나 크랙도 가능합니다ㅎㅎ 더보기