2017/12/06(3)
-
ASLR 적용 된 바이너리 ASLR 해제하기 2~
이번문제는 1편에서 이어지게 됩니다. 궁금증이 하나 생기지 않나요? 음.. 저는 이런 궁금증이 생깁니다. 1. ASLR이 랜덤한 주소가 되게 하는 기법인데 그 주소를 고정 시켰어. 왜 고정 시킨건데? 2. 고정 안시키면 왜 안되? 내가 그냥 스택보면서 놀면 되는거 아냐? 이것에 대한 궁금증을 풀기 위해 ASLR이 적용 된 그 바이너리로 놀아보도록 하겠습니다. 다시 소스코드를 한번 살펴보죠.일단 포너블을 위한 소스코드니까요 ㅎ.ㅎ #define _CRT_SECURE_NO_WARNINGS#include #include #include #include int main(int argc, char*argv[]){char arr[10];int i = 0; printf("ASLR Test\n");printf("목표 ..
2017.12.06 -
ASLR 적용 된 바이너리 ASLR 해제하기~
오늘 진행해 볼 삽질은 ASLR이 적용된 윈도우즈 프로그램을 해제하는 방법에 대해 설명해볼까합니다. ASLR(Address SpaceLayout Randomization) Windows XP 이상부터 적용되는 기법입니다.프로그램이 로드 되는 상대주소를 랜덤으로 바꾸어서 pwn하기에 어렵게 하는 기법이라고 합니다. 작업한 환경은 Visual Studio Community 2017 버전입니다. 알고 계시면 좋은 것이 있는데 Visual Studio Community 2017버전은 기본적으로 빌드를 진행 하게 되면 임의주소로 컴파일이 되게 설정이 되어 있습니다. 그림을 보죠. "임의 기준 주소"에 예가 되어있는 것이 ASLR 입니다. 그렇다면 지금은 ASLR로 프로그램을 빌드 해야하기 때문에 그대로 설정 값을..
2017.12.06 -
GCC Asembler
코드 가상화를 진행하기 위해서는 우선 GCC Inline Assembly를 공부해야한다고 생각하고, GCC Inline Assembly를 포스팅한다. 우선 LINUX에서 GCC, 즉 GNU C 컴파일러는 AT&T/UNIX 어셈블리 문법을 사용한다. AT&T 어셈블리어는 INTEL 어셈블리어와 문법에 있어 꽤 다르다. 주요한 차이를 먼저 알아보자. 1. 출발지와 목적지가 반대로 되어 있다. EX) INTEL OPCODE dst src EX) AT&TOPCODE src, dst 2. 레지스터 표기법이 다르다. 레지스터는 %를 붙인다. EX) %EAX, %EBX 3. Operand에 $를 붙인다. 16진수를 0x로 표기한다. INTEL : int 80h AT&T : int $0x80 4. Operand의 사이..
2017.12.06