본문 바로가기

리버싱

리버싱 돋보기 2 : 어셈블리 언어

IA-32 레지스터 

범용레지스터(32bit*8) : EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP 

 - EAX~EDX는 모두 정수연산, 부울연산, 논리연산, 메모리연산의 저장 용도로 많이 사용되는데, EAX는 추가로 함수의 리턴값에도 사용되며, ECX는 반복문에서 반복카운트로 사용된다.

 - ESI, EDI는 LODS, STOS, REP, MOVS 등과 함께 메모리 복사에 사용된다.

 - EBP, ESP는 스택프레임 범위를 참고하는데 사용되기 때문에 함부로 사용하면 안된다.

 

프로그램 상태 레지스터(32bit) : EFLAGS

 - 프로그램 명령을 계속 수행하다가 플래그에 영향을 주는 명령이 실행된 경우 플래그의 상태값이 변경된다.

 - Jcc처럼 조건에 따라 다른 명령을 수행하도록 하는 명령어에서 조건을 담당한다.

 

 

세그먼트 레지스터(16bit*6): CS, DS, SS, ES, FS, GS

 

명령 포인터 레지스터(32bit) : EIP