0x05 Programming/Kelnel Programing
-
[윈도우] 디바이스 드라이버 환경구축법0x05 Programming/Kelnel Programing 2009. 7. 28. 09:33
▣윈도우 디바이스 프로그래밍 환경구축 개발환경 : www.microsoft.com/whdc/devtools/ddk 다운 insmod툴 : www.rootkit.com/vault/hoglund/InstDrv.zip 다운 xconsole툴 : www.sysinternals.com에서 DebugView 다운 ▣TEST하기 c:\test폴더에 3개의 파일 생성 : test.c SOURCE MAKEFILE ///////////////////////////////////////////////////////////// test.c #include "ntddk.h" void OnUnload( IN PDRIVER_OBJECT DriverObject ) { DbgPrint("OnUnload called\n"); } NTS..
-
[Linux] 1. Device Driver0x05 Programming/Kelnel Programing 2009. 7. 28. 09:32
1. 디바이스 드라이버는 하드웨어와 응용프로그램을 중계한다 하드웨어마다 디바이스드라이버는 모두 틀림 응용프로그램에서 모두 다르게 다루기 힘듬 공통적인 인터페이스 필요 - 가상파일(VIRTUAL FILE)사용 2. OPEN(), RELEASE(), READ(), WRITE()의 기본연산 함수의 프로토타입을 선언 및 정의 3. -디바이스드라이버 타입을 정함 문자형 디바이스드라이버 : 문자하나로 다룸 블록형 디바이스드라이버 : 문자열로 다룸 -디바이스이름정하기 -major 버전정하기 -/dev/에 디바이스 링크를 만듬 mkmod /dev/디바이스명 c major_version minor_version 2.에서 선언한 함수의 주소를(함수포인터) struct file_operations 구조체에 담아서 디바이스체..
-
[리눅스] 2. 커널프로그래밍0x05 Programming/Kelnel Programing 2009. 7. 28. 09:31
▣정수배열 파라미터 1. 장소준비 int data[5]={0,}; int count=0; 2. 연결 module_param_array(data, int, &count, 0); 3. insmod my3.ko data=1,2,3,4,5 파라미터를 전달하면서 모듈을 올린다 ▣문자열 파라미터 1. 포인터선언 char* msg; 2. module_param(msg,charp,0); 3. 출력 printk 4. insmod my3.ko msg=adi89adk 파라미터를 전달하며 모듈을 올린다 ▣커널에서 사용할 수 있는 함수를 확인(모듈로 올라와서 사용할수 있게된 것) /proc/kallsyms
-
[리눅스] 1. 커널프로그래밍 환경설정0x05 Programming/Kelnel Programing 2009. 7. 28. 09:31
▣os가 제공하는 서비스 리눅스 : system call 윈도우 : API 라 부른다 ▣운영체제를 확장하는 방법 1. 커널 소스에 직접 삽입 (전체 컴파일 하는 시간이 오래걸린다) build-in이라 함 2. 동적으로 필요할때 올리는 방법(모듈사용) 메모리를 이용한 커널 확장 - loadable-module : 디바이스드라이버 ▣ 최종실행파일의 확장자는 ~.ko ▣ 커널은 가볍게하고 모듈을 적극 활용하는 쪽으로 발달 ▣ 명령어 modinfo 모듈의 정보 확인 (라이센스. 버전 등등) insmod 모듈을 메모리에 올릴 때 rmmod 모듈을 메모리에서 내릴 때 lsmod 메모리에 올라와있는 모듈 확인 ▣ 커널에 작업하는 방법 1. 어플리케이션과는 아무 상관없이 커널의 흐름만 바꾸는 방법 커널에서 시작하고 커..
-
[커널프로그래밍] 리눅스 커널 모듈 프로그래밍 안내서0x05 Programming/Kelnel Programing 2009. 7. 19. 20:14
리눅스 커널 모듈 프로그래밍 안내서 Version 1.1.0, 1999년 4월 26일. 원저자 : Ori Pomerantz 역자 : 채병철(dataeng@chollian.net) 번역시작 : 1999년 8월 16일. 이 책의 모든 번역 내용은 아래에 언급한, 그리고 원문의 GPL을 따릅니다. 누구나 이 책을 GPL하에서 자유롭게 배포할 수 있습니다. 다만 수정의 경우나 번역상의 오류는 본인에게 알려주시면 즉시 이를 반영할 것이며, 이 안내서가 일관된 내용을 유지하는 데 도움을 줄 것입니다. 부록 C,D는 이 책의 내용과 직접적인 관련이 없기에 번역하지 않았습니다. 부록 E의 GPL은 송창훈님의 번역을 그대로 인용했습니다. 이 가이드의 내용은 리눅스의 커널 모듈에 관한 것이다. 이것은 커널 모듈을 만드는 ..