컴퓨터/컴퓨터 구조(2)
-
컴퓨터 구조 실습[2]
프로그래밍을 할 경우 위와 같은 순서로 프로그래밍 언어는 어셈블리언어, 기계언어로 변환된다. 해킹을 하는데 있어서 단순코드가 아닌 기계언어를 바꿀 경우 해당 파일이 정상적으로 컴파일되거나 실행되지 않을 것이다. 시스템해킹에서 특히 사용되는 기계언어와 컴퓨터구조를 공부해 보려고 한다. 오늘은 각각의 단계에서 언어가 어떤식으로 변환되는지 살펴보려고 한다. 자세한 C언어와 어셈블리언어에 대한 설명은 다음 포스팅에서 진행하려고 한다. 시작하기 앞서 각각의 단계마다 변환된 파일을 리눅스환경에서 쉽게 접근하기 위해 GCC Compiler를 사용하였다. 파일 변환 순서는 main.c -> main.i -> main.s -> main.o 순서이다. main파일은 이전 포스팅에서 사용한 비트연산파일을 재사용했다. gcc..
2023.09.12 -
컴퓨터 구조 실습 [1]
[목차] 1. 자료형 크기 확인 [1] 2. 오버플로우 재현 [1] 3. 비트연산 c언어 프로그램 작성 [1] 4. 특정 위치의 비트를 끄는 코드 만들기[1] 5. GCC Compiler [2] 6. GDB Debuger를 이용한 디버깅 [1] [2] 데이터 표현 실습 - 자료형 크기 확인 (sizeof) 각각의 자료형의 크기를 알아보았다. MSDN, cplusplus를 통해서도 자료크기를 확인할 수 있다. - 오버플로우 재현 Char형은 -127~126, 256개의 숫자가 표현 가능하다. CHAR_MAX보다 1큰수를 출력하였더니 오플러우 되어 -128의 값이 나왔다. 다음으로는 리눅스 커널에서 해당 파일을 실행했을 때 각각의 명령어에서 나오는 결과값을 적어보았다. Gdb란? GNU에서 나온 디버깅 프로..
2023.09.11