이글루스

집안에습기가찬다!

by 아놔습기
★ 카테고리 ★
★ 최근 등록된 덧글 ★
올ㅋ 내가 누구게? ㅋ
by 올ㅋ at 09/17
TLE...무슨 뜻인가 ..
by 아놔습기 at 08/03
★ 최근 등록된 트랙백 ★
★ 메모장 ★
rss

skin by 나드리
우분투 몇가지

어떤 패키지에 포함 되어있는지 확인하는거
ex ) lseek
dpkg -S lseek

처음 사용할 때 프로그래머를 위한 man page가 없어서
sudo apt-get install manpages-dev

설치후 root 만들어 주기
-> 우분투는 root가 처음없어서... sudo passwd root 때려주면
입력받아줌..

programmer's man page
apt-get install manpages-dev

by 아놔습기 | 2008/05/31 20:17 | xubuntu! | 트랙백 | 덧글(0)
exploit 제작중..

예전에 bof문제들 풀면서 익스를 제작해두지 않아서

이번에 대회도 끝났고 해서 bof문제나 다시 풀어볼 겸 익스를 제작하는데

fgets로 올바른 입력을 받아야 bof할 기회를 주는 문제가 있었다.

그 전 문제들은 argv에 마구마구 입력해서 bof시키면 되는 문제였는데

fgets로 입력을 받는 문제라서 잠깐 머뭇머뭇하고 있었다.

우선 dup()을 사용하면 된다.

--나중에 다시 작성

by 아놔습기 | 2008/05/23 04:39 | 트랙백 | 덧글(1)
모듈 빌드와 실행 - 1...
xubunt 7.10 -desktop -i386
kernel 2.6.22-14
-- 이때까지 했던 짓
vim 재 설치( vim_tiny? 글꼴에 색상주고 싶어서..-_- )
build-essential 설치( 간단한 hello world조차 컴파일이 안되길래 )
--끝

시험도 끝났고 오늘은 O'Reilly-한빛미디어의 리눅스 디바이스 드라이버 라느책을 읽고 정리하려한다.

이번 3판에선 커널 2.6을 다룬다해서 학교도서관에서 얼릉 빌려와봤다.

2.6 모듈은 커널 소스 트리에 있는 목적파일과 링크하기 때문에

커널 소스 트리 환경을 구축해야 한다.
( 커널 2.4와는 달리 2.6에선 모듈을 컴파일 하려면 전체 커널 트리가 필요하다고 한다. )

그래서 kernel.org 와 같은 사이트에서 "공식" 커널 소스를 가져와서 새 커널을 빌드하여

시스템에 설치해야 한다고 한다.

... 라고는 하는데 어짜피 지금 커널에서 돌아가게 할꺼면 궂이 새로 빌드할 필요가 있는지..

다행히 아무짓?도 안했는데 xubuntu에선 /usr/src/ 안에 커널 소스가 있는거 같다.

일단 모듈을 만들고 나면 insmod 와 rmmod 유릴리티를 이용해 모듈을 테스트 해볼수 있다.

...insert 와 remove라고 생각된다. 루트만 모듈을 load,unload 할 수 있다고 한다.;;


// hello.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init( void )
{
        printk(KERN_ALERT "Hello, world!\n");
        return 0;
}

static void hello_exit( void )
{
        printk(KERN_ALERT "Goodbye, cruel world\n");
}

module_init(hello_init);
module_exit(hello_exit);


위와 같은 파일을 만든 후,

Makefile을 만든다.

#Makefile
obj-m   := hello.o

KDIR    := /lib/modules/$(shell uname -r)/build
PWD     := $(shell pwd)

default:
        $(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
        rm -rf *.ko
        rm -rf *.mod.*
        rm -rf .*.cmd
        rm -rf *.o


make 를 하면!!

anahumid@cert:~/source/kernel$make
make -C /lib/modules/2.6.22-14-generic/build M=/home/anahumid/source/kernel modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.22-14-generic'
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-2.6.22-14-generic'


아름다운 결과가 아닐수 없다.

insmod 와 rmmod를 이용하여, 모듈을 load,unload해서 테스트를 할 수 있다.

/var/log/messages 를 확인하면 메시지를 확인 할 수 있다고 한다.

Apr 27 22:03:28 cert kernel: [ 6122.597927] Hello, world!
Apr 27 22:03:41 cert kernel: [ 6135.715755] Goodbye, cruel world


lsmod 를 이용하면 적재된 모듈들을 확인 할 수 있다.

...sudo 때문에 고생만... 낼 해야지~


-- 추가
/var/log/messages 대신 dmesg | tail 로도 확인 가능

by 습기 | 2008/04/27 22:11 | Kernel Module! | 트랙백 | 덧글(0)
sudo 에 관해서...

모듈을 열심히 만들어서..( hello world..지만..)

insmod 를 통해 모듈적재를 하려고 하니

insmod: error inserting hello.o -1 Operation not permitted

라는 에러가 났다.

여기저기 찾아보니 sudo insmod 를 사용하라고 해서 sudo를 해도 결과는 마찬가지...

sudo passwd root 로 (우분투니깐 - sudo로 잠시 root의 권한을 빌려오는 방식이라고 한다 )

root 패스워드를 설정해주면 된다길래 해봤는데 역시나 무반응...

결론은 처음 설치할때 만들었던 계정으로 ( admin으로..-_- ) 로그인 해서 해야 했다..

아무튼 성공~


-> sudo passwd root 할땐 Admin으로..처음만들었던 계정으로

by 습기 | 2008/04/27 22:00 | xubuntu! | 트랙백 | 덧글(0)
컥! error: stdio.h: No such file or directory
xubunt 7.10 -desktop -i386
kernel 2.6.22-14

역시나 가벼운 주분투.. gcc 로 hello world 를 컴파일 하니 에러가 난다..

해결책은 뭔가를 설치하는것!
( sudo apt-get install build-essential )

build-essential

This package contains an informational list of packages which are considered essential for building Debian packages.
( http://packages.debian.org/unstable/devel/build-essential )
음.. 데비안 패키지를 빌드 하는데 필요한 것들을 포함한 패키지 라는 거 같다..( 영어..ㅠㅠ )

by 습기 | 2008/04/23 22:07 | xubuntu! | 트랙백 | 덧글(0)