본문 바로가기

어셈블리2

리버싱#1 x86 어셈블리 소개 x86 아키텍처 • 데이터 타입: 어셈블리 기본 • 주소 표기법: 리틀 엔디안 / a b c d -> d c b a • 레지스터: 8개의 범용 레지스터, EIP, EFLAGS • 호출 규약: cdecl, stdcall, fastcall • 명령어 세트: 가변 길이 명령어 형식을 사용 • 피연산자: 레지스터, 메모리 주소, 주소값, 숫자 • 기본 문법: AT&T(원투) 또는 Intel (투원) / 리눅스 AT&T 사용 윈도우 Intel 방식 ex> AT&T = add a,b > b=a+b // Intel 방식 = add a,b > a=a+b 레지스터 • 8개의 범용 레지스터 + EIP(32비트) • EFLAGS 레지스터(32비트) • 세그먼트 레지스터(16비트) • EAX - 산술 연산에 사용, 함수 리턴.. 2021. 2. 25.
리버싱#1 어셈블리 기본!! 어셈블리 기본! 숫자 표현 > 10진수 : 사람이 이해하는 숫자 > 16진수 : 컴퓨터와 대화하기 위한 숫자 > 2진수 : 컴퓨터가 이해하는 숫자 - 1의 보수 : 0은 1로, 1은 0으로 변경 - 2의 보수 : 1의 보수에서 1을 더한 값 메모리 주소와 섹션 > 모든 운영체제는 사용자 모드와 커널 모드로 메모리를 나누어 관리 > 모든 프로그램은 사전에 약속된 형식을 따름 프로그램과 메모리 코드 실행 흐름에 따라 변화하는 값들은 스택 또는 힙에 쌓이게 된다. 스택 > 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역, LIFO 구조 힙 > 동적으로 메모리 할당 시 사용하는 영역 어셈블리 명령어 세트! > 데이터 이동 : 메모리 메모리, 메모리 레지스터, 레지스터 레지스터 > 산술/논리 연산 .. 2021. 2. 19.
728x90
반응형