목록Security/System Hacking (15)
농소
ADD : 덧셈 어셈블에서는 c와는 다르게 +연산자를 사용하지 않고, add명령어를 통해 덧셈을 한다.mov를 통해 레이블 num의 메모리값에 10을 넣어주고 레지스터 eax에 20을 넣어준다.그 후 add명령어를 통해 ( [num] = [num] + eax ) 덧셈을 해준다.즉, 결과는 10 + 20 = 30이 나오게된다. SUB : 뺄셈 add와 마찬가지로 매커니즘은 동일하고 +연산이 -연산의 차이밖에 없다.위 코드는 좀전에 했던 코드의 add 명령어를 sub로 변경한 코드이다즉 [num] = [num] - eax => -10의 결과값이 나온다. MUL : 곱셈 - MUL( Unsigned ) 부호가 없는 곱셈 처리 - IMUL( Signed ) 부호가 있는 곱셈 처리 1). MUL 만약 2바이트를 ..
1. 주소 Vs 메모리 c언어 -> 메모리에 직접 접근하여 사용함자바, 파이썬, .. -> 메모리에 직접 접근(x) - 포인터: 메모리에 대한 직접 접근이 가능 - 어셈블리: 변수를 선언해서 사용하지 않는다. / **메모리를 직접 사용을 함. 앞으로 계속 메모리 직접 사용 ex) segment .data , segment .text ..등 메모리를 직접 씀 1). 주소 - 메모리상의 위치 - 파일 오프셋과 동일한 의미 (메모리에서는 주소 파일에서는 오프셋이라고 부름) - 정수 2). 메모리 - 데이터가 들어있는 실제 메모리 [ ] = 해당위치상의 메모리(값)를 나타냄 strin..
ELF 구조 linux 32bit의 경우 하나의 process 사용하는 메모리 4gb( 가상메모리 ) 1gb / 3gb 나눔1gb = 커널사용 우리는 커널에 접근x 접근한다면 해킹3gb= 운영체제를 위한 / 3gb를 나눠서 사용 = [ text영역( =Segment or Page or Section ) , data영역 , stack영역 ] 3gb의 메모리 영역중 0번지 주소부터 일정영역 까지는 사용x 1). data segment - 읽기/쓰기 가능한 메모리 영역 / 실행x ex) rw- - 프로그램 실행에 필요한 데이터 - 초기화된 데이터 ex) int var =10; 2). bss segment - 읽기/쓰기 가능한 메모리 영역..
컴파일러 란? - 컴퓨터가 이해할 수 있게 고급언어를 기계어로 변환해주는 작업 (쉬운 환경) - IDE (Intergrated Development Enviroment) : 통합 개발 환경 - IDE = 컴파일러 + 편집기 + 디버거 + 등등.. - ex) Visual Studio, Eclipse (불편한 환경) 현재 linux에서 사용하는것들 - compiler : GCC(컴파일러) GCC = hello.c [ .c hello.i -> hello.s -> hello.o 우선 간단한 hello, world를 표현하는 코드를 작성후 그 파일을 hello.c라고 치겠다#> gcc -o hello hello.c 라고 입력을 하면 소스파일이 컴파일과정을 거쳐서 실행파일로 변환이 되는데이 변환과정을 자세히 보기 ..
우선 이번에 시스템 해킹을 공부하기 위해 필요한 os를 설치하고 실습환경을 설정해 보겠습니다. 사용할 실습 VersionOS : Red Hat Linux 6.2 VersionVM : VMware 12.5 pro Version 실습할 도구- GCC ( C 컴파일러 )- GAS ( GNU Assembler ) = 오래되서 사용x , 대신에 NASM ( Netwired ASM ) 을 설치해 사용한다 AT&T,INTEL문법 사용 ( 어셈블러 )- GDB ( 디버거 ) - 바이너리 분석도구 어셈블리언어를 연습하기 위해 NASM을 설치 1. NASM 설치 http://www.nasm.us/pub/nasm/releasebuilds/0.99.05/ 로 들어가서 .gz파일을 복사한 후 < wget 명령어를 통해 gz파일..