본문 바로가기

전체

(242)
운영체제 과제 #1 (fork 와 exec 사용하기) 과제 1 1) Command Execution (20%) UNIX Command를 아규먼트로 취급하여 실행하는 프로그램을 작성하라. 프로그램 실행은 다음과 같은 형식을 따른다. (%는 shell prompt) 예를 들어 program_name이 hw01이고, command가 cat test.c 라면, %hw01 cat test.c를 실행하면 test.c의 내용이 출력된다. 2) Process Statistics (20%) 위의 프로그램에서 command가 실행된 후에 command에 사용된 다음과 같은 시스템 리소스에 대한 프로세스 통계를 출력하는 기능을 추가한다. 프로세스 통계에 대한 정보는 getrusage()를 참고한다. 프로세스 통계 - 사용된 CPU시간 - command가 실행되고 경과된 시간 ..
PCM(Phase_Change Memory) 1. PCM이 나타나게 된 배경 Phase_Change Memory 또는 PCM은 오늘날 메모리 기술 분야에서 매력적인 메모리 기술입니다. PCM은 수행능력, 비용, 코드밀집도 등의 향상은 Nand ,NOR flash 메모리를 PCM 으로 바뀌도록 할 것입니다. 1970년 Electronics magazine article 에는 비휘발성이고 다시 프로그래밍이 가능한 오늘 날 Numonyx devices와 매우 유사한 메모리를 소개했습니다. 하지만 이것은 매우 긴 시간동안 수면 위로 나오지 못하고 제품으로 만들어지지 못했습니다. 두 가지의 이유가 존재하는데 가장 큰 이유는 시장 내에서 지금 존재하는 메모리가 다른 어떠한 메모리보다 경제적이기 때문입니다. 대체할 메모리들은 특정 프로세스에서 크기 대 가격 면..
대학교 C언어 과제 모음 1. 최대공약수와 최소공배수 /* 문서이름 : Hw2-1 프로그램 작성자 : americano@korea.ac.kr 프로그램 작성일 : 2011년 10월 17일 프로그램 주제 : 두개의 정수를 입력받아 최대 공약수(GCD)와 최소 공배수(LCM)를 구하기 구현방법: #최대공약수 구하는 방법 유클리드의 호제법 알고리즘을 이용하였습니다. 두 입력 값 중 큰 값과 작은 값을 구분하여 M과 N으로 지정하였습니다. 재귀 함수를 이용하여 M을 N으로 나눈 나머지가 0이 될 때 까지 N이 가진 값을 M에 지정하고 그 나머지 값을 N에 지정하여 다시 M을 N으로 나누었습니다. 그리고 나머지가 0이 되면 최대공약수는 M이므로 재귀함수를 종료하였습니다. 유클리드 호제법: 1단계 : 두 입력 값 중 큰 값을 M, 작은 값을..
Nmap Fragmentation Scan과 Fragmentation Attack 1. Nmap 이란? - 고든 라이온(GordonLyon) 제작- 보안 스캐너 (네트워크 “지도”), 네트워크 점검, OS검색, Version 점검 등- 서비스 탐지 프로토콜 : 자신을 광고하지 않는 수동적인 서비스 발견- 원격 컴퓨터들의 자세한 정보- 예제 : nmap –T4 –A –v www.nmap.org 1) TCP 플래그 : 두 지점 간의 통신을 할 때 기능을 알려주는 flag TCP Flag 설명 SYN(Synchronization:동기화) TCP에서 세션 성립을 위해 가장 처음 보내는 패킷 ACK(Acknowledgement) 상대방에게 패킷을 받았다는 걸 알려주는 패킷 RST(Reset) 현재 접속하고 있는 곳과 연결을 끊기 위해 보내는 패킷 PSH(Push) 버퍼가 채워지기를 기다리지 않..
티스토리(Tistory)에 소스코드 넣기 1. 파일다운로드 http://alexgorbatchev.com/SyntaxHighlighter/download/ 2. 파일 설치 다운로드 받은 파일의 압축을 푼다. 압축을 풀면 다음과 같은 폴더를 볼 수 있다. scripts와 styles 폴더 내에 있는 파일들을 모두 업로드 해야한다. 관리자 -> HTML/CSS 편집 -> 파일업로드 -> 추가버튼 3. HTML 수정 관리자 -> HTML/CSS 편집 -> HTML 1) 헤더 부분 추가 바로 위에 아래의 코드를 추가한다. 2) 바디 부분 변경 태그 뒤에 다음을 추가한다. Onload="dp.SyntaxHighlighter.HighlightAll('code');" 4. 블로그 글 쓰기 이제 글을 쓰다가 중간쯔음에 소스코드를 넣고 싶으면 아래와 같이 하면..
PE파일 구조 PE파일 분석 도구 : 실행파일(Executable File)이란 명령(Operation Codes)에 따라 지시된 작업을 수행하도록 하는 파일을 말한다. 이 파일은 실행 코드, 전역 데이터, Import/Export 함수정보, 리소스 데이터 등으로 구성된다. 포맷 종류는 PE(Windows), ELF(Linux, Unix), Mach-O(OS X,iOS), DEX(Android), MZ(Dos)등이 있다. 이때 PE(Portable Executable)파일은 Windows 3.1부터 지원되는 실행파일 형식이다. 이는 유닉스의 COFF(Common Object File Format)를 기반으로 하고 파일 종류는 실행파일(EXE, SCR), 라이브러리(DLL, OCX), 드라이버(SYS), 오브젝트파일(O..
리버싱 예제 1 (라이센스 우회) 1. 파일다운 받고 실행 위의 폴더에서 2번째 예제를 풀어본다. 실행파일은 다음과 같다. 우선 실행을 시키면 다음 그림과 같은 메시지박스가 뜬다. 2. ollydbg.exe 실행 평가 기간이 만료되었으니 새 라이센스를 구입하란다. 우선 어셈코드를 확인하기 위해 ollydbg.exe를 실행한다. 위의 화면은 다음과 같이 구성되어 있다. - 왼쪽 상단 : 어셈코드 - 오른쪽 상단 : 레지스터 정보 - 왼쪽 하단 : 메모리 정보 - 오른쪽 하단 : 스택 정보 3. 문제 확인 1 코드를 천천히 내려서 문제가 발생했던 지점을 찾고 브레이크 포인트(F2)를 건다. 그리고 디버깅을 실행(F9)한다. 00401078 CMP EAX, -1 EAX 값과 -1을 비교한다. 0040107B JNE SHORT 0040109A ..
리버싱 백그라운드(x86) 1. Fetch 사이클과 Execution 사이클 우리가 프로그램의 일부분을 수정하고 싶을 때 프로그램의 소스코드가 있다면 소스코드를 통해 프로그램의 실행구조를 확인하고 다시 컴파일 하면 된다. 하지만 소스 코드가 없다면 디버깅을 통해 어셈블 코드가 어떻게 실행되는 알아야만 한다. CPU의 60퍼센트는 ALU로 이루어져 있고 나머지는 주변장치로 이루어져 있고 시분할을 이용해 아주 작은 시간 안에는 반드시 하나의 코드만 실행된다 이 실행될 명령은 인스트럭션 큐에 들어가 있다. 온리디버그와 같은 프로그램을 사용할 때 브레이크 포인트를 거는 것은 소프트웨어 인터럽트를 이용하는 것이다. (INT3 : HALT : 0xCC) 그리고 내부 레지스터의 값을 확인하는데 적절한 인터럽트의 위치와 시점은 연습을 통해 깨닫..