목록list (398)
y0u_bat
메모리 관리 기법 - 세그먼테이션, 페이징 세그먼테이션,페이징의 공통점 - 주소 공간을 특정 영역으로 나눔 리얼모드의 메모리관리방식- 최대 1mb 주소공간 사용, 세그먼테이션만 지원- 세그먼트 크기는 64kb 고정- 세그먼테이션에서 세그먼트의 시작주소는 코드나 메모리 접근할대 기준 Base address로 사용 리얼모드에서 물리주소 계산- 세그먼트 레지스터의 값에 16(0x10)을 곱한값을 세그먼트의 기준 주소로 사용 -> 1mb영역 까지 사용가능 보호모드에서 주소계산방법- 리얼모드에서 물리주소 계산과 동일 하지만 결과는 선형주소, 선형주소를 기반으로 물리주소 계산- 리얼모드와 달리 세그먼트 크기를 지정 가능, 세그먼트 크기는 해당 세그먼트의 어드레스에 접근할때 참조, 기준주소에 더해질값(범용레지스터값)..
레지스터 - 범용 레지스터, 세그먼트 레지스터, 컨트롤 레지스터 3가지 64비트 경우범용 세그먼트 컨트롤RAX CS CR0RBX DS CR1RCX ES CR2RDX FS CR3RSI GS CR4RDIRSPRBPR8~R15 AX - 산술 연산을 수해할때 누산기로 사용BX - 데이터의 어드레스를 지정할때 데이터 포인터로 사용CX - 반복문 또는 문자열의 카운터로 사용DX - I/O 어드레스를 지정할때 사용하며, 산술연살을 수행할대보조 레지스터로 사용 세그먼트 레지스터 역할CS - 코드영역 가르킴 - 데이터 이동명령으로 값변경 불가능, 점프명령이나 인터럽트 관련 명령으로 변겨가능DS - 데이터 영역 가르킴 - 데이터 이동명령으로 값 변경 가능 - 데이터 영역에 접근할때 임시적으로 사용 ES - 문자열과 관련된..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
기본적인 execve(/bin/sh,/bin/sh,null)을 실행시키는 쉘코드 xor %eax,%eax -> 이부분push %eaxpush $0x68732f2fpush $0x6e69622fmov %esp, %ebx -> 이부분push %eaxpush %ebxmov %esp, %ecx -> 이부분mov $0xb, %al -> 이부분int $0x80 -> 이부분 보통 쉘코드는 이러한데, 아스키범위에 몇군데가 걸린다. 30~7a xor %eax, %eax -> push $0x31; pop %eax; xor $0x31, %al // 이런식으로 바꿀수있습니다.mov %esp, %ebx -> push %esp; pop %ebx // pop push로 해결mov %esp, %ecx -> push %esp; pop ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
PIN_InitSymbols(); // 심볼을 만들어 이용할수있다. IMG_RegsymHeada(IMG img) // img의 첫번째 심볼을 가져옴. SYM_Next(SYM x) // 다음 심볼을 보여주고 섹션에서 마지막이면 SYM_Invalid() 호출 SYM_Prev(SYM x) // 전 심볼을 보여주고 섹션에서 처음이면 SYM_Invalid() 호출 SYM_Invalid() // 사용하지 않은 심볼을 나타내줌 (?) SYM_Name(SYM x); // 해당심볼이름을 가져옴 PIN_UndecorateSymbolName(const string & symbolName, UNDECORATION style); - 스타일 2가지 존재 - UNDECORATION_COMPLETF // public: char * ..