SlideShare a Scribd company logo
1 of 69
Download to read offline
1
Ch7 Modules
2
7.a ELF 介紹
7.b Module 相依性
7.c Module Section
7.d 載入 Module
7.e 卸載 Module
3
7.a ELF 介紹
test.c
4
7.a ELF 介紹
optional
ELF Header
Program Header
Table(k 項 )
Section 1
Section 2
Section n
Section Header
Table(n 項 )
ELF Header
Program Header
Table(k 項 )
Segment 1
Section Header
Table(n 項 )
Segment k
optional
section 有各自的大小
有些 section 會出現在 table 之後
1 個 segment
由 1 到多個 section 組成
許多 section
不會對應到 segment
在硬碟上的執行檔 準備要執行的執行檔
( 依舊在硬碟上 )
5
.interp
.hash
.dynsym
.dynstr
.init
.text
.fini
.rodata
.dynamic
.data
.bss
.shstrtab
.symtab
.strtab
.rel.text
0x00000000
Kernel
Space
arm-test.o
arm-test
(Execution View)
arm-test
(Process)
.comment
arm-test
(Link View)
6
0x00000000
Kernel
Space
arm-test
(Execution View)
arm-test
(Process)
Kernel
Address Space
env. var.
arguments
mmap
text
data
heap
0x00000000
7
7.a ELF 介紹
userspace
kernelspace
由 ld.so 做解析 , 重定
(run time)
由 kernel 做解析 , 重定
VA
有些 symbol(ex: function) 的值 (ex: address)
要到 runtime 才會確定
從未知到確定 , 就稱為重定 (relocation)
由 ld 做解析
(compile time)
0x00000000
relocatable
executable
so
coredump
8
7.a ELF 介紹
Code
Exported
Functions
Code
Exported
Functions
Code
Exported
Functions
Compiled inModule
Kernelspace
Userspace
insmod
modprobe
rmmod
從書上抄的
考慮相依
不考慮相依
module 可以是 driver, filesystem, 或其它元件
1. 掛載某 filesystem, 如果 kernel 當下未 support 該 filesystem -> 載入 module(filesystem)
2. usb 隨身碟接上電腦 , 如果 kernel 當下未 support 該硬體 -> 載入 module(driver)
9
7.a ELF 介紹
Code
Exported
Functions
Code
Exported
Functions
Code
Exported
Functions
Compiled inModule
Kernelspace
Userspace
insmod
modprobe
rmmod
從書上抄的
考慮相依
不考慮相依
module 可以是 driver, filesystem, 或其它元件
1. 掛載某 filesystem, 如果 kernel 當下未 support 該 filesystem -> 載入 module(filesystem)
2. usb 隨身碟接上電腦 , 如果 kernel 當下未 support 該硬體 -> 載入 module(driver)
有三種
1. 誰都可使用
2. GPL 相容才可使用
3. 現在誰都可使用
之後會改成 GPL 相容才可使用
10
7.a ELF 介紹
7.b Module 相依性
7.c Module Section
7.d 載入 Module
7.e 卸載 Module
11
7.b Module 相依性
depend on
depend on
depend on
Kernel
Module A
Module B
12
module
source_list
target_list
iptable_nat
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
nf_defrag_ipv4
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_conntrack_ftp
nf_conntrack
module
source_list
target_list
13
module
source_list
target_list
nf_defrag_ipv4
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
nf_nat
module
source_list
target_list
iptable_nat
nf_conntrack
module
source_list
target_list
14
module
source_list
target_list
nf_defrag_ipv4
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
nf_nat
module
source_list
target_list
iptable_nat
nf_conntrack
module
source_list
target_list
15
module
source_list
target_list
nf_defrag_ipv4
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
nf_nat
module
source_list
target_list
iptable_nat
nf_conntrack
module
source_list
target_list
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_conntrack_ftp
16
module
source_list
target_list
iptable_nat
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
nf_conntrack
module
source_list
target_list
17
module
source_list
target_list
nf_defrag_ipv4
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
nf_nat
module
source_list
target_list
iptable_nat
nf_conntrack
module
source_list
target_list
18
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
nf_nat
module
source_list
target_list
iptable_nat
nf_conntrack
module
source_list
target_list
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_defrag_ipv4
19
nf_conntrack
module
source_list
target_list
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
iptable_nat
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
20
7.a ELF 介紹
7.b Module 相依性
7.c Module Section
7.d 載入 Module
7.e 卸載 Module
21
50
45
40
35
30
20
15
10
53
52
25
5
0
.rel.gnu...this_module
.gnu...this_module
.rel.data
.data
.ARM.extab
.rel__param
__param
.modinfo
.rel.ARM.exidx.exit.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
.rel.ARM.exidx.init.text
.ARM.exidx.init.text
.ARM.extab.init.text
.rel__ksymtab_gpl
__ksymtab_gpl
.rodata.str1.4
__ksymtab_strings
.rel.rodata
.rodata
.rel.exit.text
.exit.text
.rel.init.text
.init.text
.rel.text
.text
.ARM.exidx
.rel.ARM.exidx
.strtab
.symtab
.shstrtab
.rel.debug_ranges
.debug_ranges
.rel.debug_pubtypes
.debug_pubtypes
.rel.debug_loc
.debug_loc
.debug_str
.rel.debug_frame
.debug_frame
.rel.debug_line
.debug_line
.debug_abbrev
.rel.debug_info
.debug_info
.rel.debug_pubnames
.debug_pubnames
.rel.debug_aranges
.debug_aranges
.comment
.ARM.attributes
.note.GNU-stack
.bss
.note.gnu.build-id
以 arm 版本的 usb-storage.ko 為例
(section 大小非實際比例 )
22
.rel.gnu...this_module
.gnu...this_module
.rel.data
.data
.ARM.extab
.rel__param
__param
.modinfo
.rel.ARM.exidx.exit.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
.rel.ARM.exidx.init.text
.ARM.exidx.init.text
.ARM.extab.init.text
.rel__ksymtab_gpl
__ksymtab_gpl
.rodata.str1.4
__ksymtab_strings
.rel.rodata
.rodata
.rel.exit.text
.exit.text
.rel.init.text
.init.text
.rel.text
.text
.ARM.exidx
.rel.ARM.exidx
.strtab
.symtab
.shstrtab
.rel.debug_ranges
.debug_ranges
.rel.debug_pubtypes
.debug_pubtypes
.rel.debug_loc
.debug_loc
.debug_str
.rel.debug_frame
.debug_frame
.rel.debug_line
.debug_line
.debug_abbrev
.rel.debug_info
.debug_info
.rel.debug_pubnames
.debug_pubnames
.rel.debug_aranges
.debug_aranges
.comment
.ARM.attributes
.note.GNU-stack
.bss
.note.gnu.build-id
debug 相關
23
.rel.gnu...this_module
.gnu...this_module
.rel.data
.data
.ARM.extab
.rel__param
__param
.modinfo
.rel.ARM.exidx.exit.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
.rel.ARM.exidx.init.text
.ARM.exidx.init.text
.ARM.extab.init.text
.rel__ksymtab_gpl
__ksymtab_gpl
.rodata.str1.4
__ksymtab_strings
.rel.rodata
.rodata
.rel.exit.text
.exit.text
.rel.init.text
.init.text
.rel.text
.text
.ARM.exidx
.rel.ARM.exidx
.strtab
.symtab
.shstrtab
.comment
.ARM.attributes
.note.GNU-stack
.bss
.note.gnu.build-id
relocation 相關
24
.gnu...this_module
.data
.ARM.extab
__param
.modinfo
.ARM.exidx.exit.text
.ARM.extab.exit.text
.ARM.exidx.init.text
.ARM.extab.init.text
__ksymtab_gpl
.rodata.str1.4
__ksymtab_strings
.rodata
.exit.text
.init.text
.text
.ARM.exidx
.strtab
.symtab
.shstrtab
.comment
.ARM.attributes
.note.GNU-stack
.bss
.note.gnu.build-id
ARM 相關
25
.gnu...this_module
.data
__param
.modinfo
__ksymtab_gpl
.rodata.str1.4
__ksymtab_strings
.rodata
.exit.text
.init.text
.text
.strtab
.symtab
.shstrtab
.comment
.note.GNU-stack
.bss
.note.gnu.build-id
不重要 ?
或是我不知道它很重要
26
.gnu...this_module
.data
__param
.modinfo
__ksymtab_gpl
__ksymtab_strings
.rodata
.exit.text
.init.text
.text
.strtab
.symtab
.shstrtab
.bssmodule 初始需要的 code 和 data
程式本體 ( 組語 )
module 卸載需要的 code 和 data
常數 , 唯讀
開放給 kernel 裡 GPL 相容部份使用 ( 字串 )
開放給 kernel 裡 GPL 相容部份使用 (struct)
modinfo 可以看到的資訊
此 module 能接受的參數的資訊
有初值的變數 , 可讀寫
無初值的變數 , 可讀寫
struct module
kernel_symbol
value
name
module
state init_size
list core_size
name init_text_size
syms core_text_size
crcs arch
num_syms taints
extable source_list
module_init waiter
module_core exit
num_gpl_syms symtab
gpl_syms num_symtab
gpl_crcs strtab
gpl_future_syms sect_attrs
num_exentries percpu
gpl_future_crcs notes_attrs
init target_list
num_gpl_future_syms args
0 1 2 3 4 5 6 7 8 9
0 a d d 0 m a i 0 e
0tix
0
10
20
( 我猜類似這樣 )
27
0 1 2 3 4 5 6 7 8 9
0 . t e x t 0 . d a
t a 0 . r o d a t a
0
0
10
20
0 1 2 3 4 5 6 7 8 9
0 a d d 0 m a i 0 e
0tix
0
10
20
__ksymtab_gpl
__ksymtab_strings
.rodata
.exit.text
.init.text
.text
.strtab
.symtab
.shstrtab
.bssmodule 初始需要的 code 和 data
程式本體 ( 組語 )
module 卸載需要的 code 和 data
常數 , 唯讀
開放給 kernel 裡 GPL 相容部份使用 ( 字串 )
開放給 kernel 裡 GPL 相容部份使用 (struct)
無初值的變數 , 可讀寫
section name( 字串 )
struct symbol
symbol name( 字串 )
elf32_sym
st_name
st_value
st_shndx
kernel_symbol
value
name
.data
__param
.modinfo
modinfo 可以看到的資訊
0 1 2 3 4 5 6 7 8 9
0 a d d 0 m a i 0 e
0tix
0
10
20
( 我猜類似這樣 )
28
7.a ELF 介紹
7.b Module 相依性
7.c Module Section
7.d 載入 Module
7.e 卸載 Module
29
0x00000000
executable
so lib
file mapping(ko)
30
50
45
40
35
30
20
15
10
53
52
25
0x00000000
1. 把 module 從 userspace
複製到 kernelspace 的 tmp memory
5
0
31
50
45
40
35
30
20
15
10
53
load_info
hdr
sechdrs
secstrings
strtab
52
25
mod
0x00000000
1. 把 module 從 userspace
複製到 kernelspace 的 tmp memory
2. 建立此 module 的 load info & 設定 mod 指向位置
5
0
module
state init_size
list core_size
name init_text_size
syms core_text_size
crcs arch
num_syms taints
extable source_list
module_init waiter
module_core exit
num_gpl_syms symtab
gpl_syms num_symtab
gpl_crcs strtab
gpl_future_syms sect_attrs
num_exentries percpu
gpl_future_crcs notes_attrs
init target_list
num_gpl_future_syms args
32
50
45
40
35
30
20
15
10
53
load_info
hdr
sechdrs
secstrings
strtab
52
25
.modinfo
mod
0x00000000
1. 把 module 從 userspace
複製到 kernelspace 的 tmp memory
2. 建立此 module 的 load info & 設定 mod 指向位置
3. 比對 kernel 和 module 的 version magic number
5
0
33
50
45
40
35
30
20
15
10
53
load_info
hdr
sechdrs
secstrings
strtab
52
25
.modinfo
mod
0x00000000
1. 把 module 從 userspace
複製到 kernelspace 的 tmp memory
2. 建立此 module 的 load info & 設定 mod 指向位置
3. 比對 kernel 和 module 的 version magic number
5
0
1. 有無啟用 SMP
2. 有無啟用 preemption
3. 使用的 compiler 版本
4. arch.-specific 常數
34
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
mod
0x00000000
1. 把 module 從 userspace
複製到 kernelspace 的 tmp memory
2. 建立此 module 的 load info & 設定 mod 指向位置
3. 比對 kernel 和 module 的 version magic number
4. 分類哪些 section 組成 final memory 的 core 和 init
50
45
40
35
20
15
10
52
25
5
0
30
53
35
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
mod
0x00000000
50
45
40
35
20
15
10
52
25
5
0
30
53
init
core
5. 分配 final memory 空間
36
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
5. 分配 final memory 空間 & 複製
50
45
40
35
20
15
10
52
25
5
0
30
53
.init.text text
init
.strtab
.symtab
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
text
rodata
data
core
.bss
37
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
mod
0x00000000
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
50
45
40
35
20
15
10
52
25
5
0
30
53
.init.text text
init
.strtab
.symtab
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
text
rodata
data
core
.bss
38
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
mod
0x00000000
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
50
45
40
35
20
15
10
52
25
5
0
30
53
.init.text text
init
.strtab
.symtab
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
text
core
.bss
39
modules
.gnu...this_module
.gnu...this_module
__start___ksymtab
__start___ksymtab_gpl
__start___ksymtab_gpl_future
mod
.init.text text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
text
core
.bss
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
40
modules
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__start___ksymtab
__start___ksymtab_gpl
__start___ksymtab_gpl_future
mod
.init.text text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
text
core
.bss
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
41
modules
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__start___ksymtab
__start___ksymtab_gpl
__start___ksymtab_gpl_future
.init.text text
init
.strtab
.symtab(resolved)
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
elf32_sym
st_name
st_value
st_shndx
kernel_symbol
value
name
如果找到 symbol
就把它的 value 複製過來
這就是”解析”
modules
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__start___ksymtab
__start___ksymtab_gpl
__start___ksymtab_gpl_future
.init.text text
init
.strtab
.symtab(resolved)
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
module
source_list
target_list
iptable_nat
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
nf_conntrack
module
source_list
target_list
如果從別的 module 解析 symbol
就和該 module 建立使用關係
43
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
mod
0x00000000
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
8.
50
45
40
35
20
15
10
52
25
5
0
30
53
.init.text text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
text
core
.bss
44
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
mod
0x00000000
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
8. 找出 non-debug 的 .rel section
50
45
40
35
52
53
.init.text text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
text
core
.bss
20
10
25
5
30
15
0
45
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
8. 找出 non-debug 的 .rel section & 重定對應的 section
50
45
40
35
20
10
52
25
5
30
53
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.bss
15
0
46
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
8. 找出 non-debug 的 .rel section & 重定對應的 section
.init.text
init
.strtab
.symtab(resolved)
.text
core
.rel.text
47
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
8. 找出 non-debug 的 .rel section & 重定對應的 section
.init.text
init
.strtab
.symtab(resolved)
.text
core
elf32_rel
r_offset
r_info
.rel.text
elf32_rel
r_offset
r_info
elf32_rel
r_offset
r_info
elf32_sym
st_name
st_value
st_shndx
elf32_sym
st_name
st_value
st_shndx
elf32_sym
st_name
st_value
st_shndx
.text
48
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
8. 找出 non-debug 的 .rel section & 重定對應的 section
.init.text
init
.strtab
.symtab(resolved)
.text
core
elf32_rel
r_offset
r_info
.rel.text
elf32_rel
r_offset
r_info
elf32_rel
r_offset
r_info
elf32_sym
st_name
st_value
st_shndx
elf32_sym
st_name
st_value
st_shndx
elf32_sym
st_name
st_value
st_shndx
.text
r_offset
49
5. 分配 final memory 空間 & 複製 & 更新 mod 指標
6. 新增其它 section 資訊到 struct module
7. 解析每個 symbol 的 value
未定義的 symbol, 會去 kernel 和已載入的 module 找
8. 找出 non-debug 的 .rel section & 重定對應的 section
.init.text
init
.strtab
.symtab(resolved)
.text
core
elf32_rel
r_offset
r_info
.rel.text
elf32_rel
r_offset
r_info
elf32_rel
r_offset
r_info
elf32_sym
st_name
st_value
st_shndx
elf32_sym
st_name
st_value
st_shndx
elf32_sym
st_name
st_value
st_shndx
.text
r_offset
50
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
mod
0x00000000
9.
50
45
40
35
52
53
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.bss
20
10
25
5
30
15
0
51
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
mod
0x00000000
9. 從 init 部份的 symtab 和 strtab, 複製部份到 core 部份
50
45
40
35
52
53
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
20
10
25
5
30
15
0
52
9. 從 init 部份的 symtab 和 strtab, 複製部份到 core 部份
10. 確認 module 是否已載入過
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
modules
.gnu...this_module
.gnu...this_module
53
9. 從 init 部份的 symtab 和 strtab, 複製部份到 core 部份
10. 確認 module 是否已載入過
11. 檢查整個系統有無重複 symbol
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
modules
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__start___ksymtab
__start___ksymtab_gpl
__start___ksymtab_gpl_future
54
9. 從 init 部份的 symtab 和 strtab, 複製部份到 core 部份
10. 確認 module 是否已載入過
11. 檢查整個系統有無重複 symbol
12. 把 module 串進系統
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
modules
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__start___ksymtab
__start___ksymtab_gpl
__start___ksymtab_gpl_future
55
9. 從 init 部份的 symtab 和 strtab, 複製部份到 core 部份
10. 確認 module 是否已載入過
11. 檢查整個系統有無重複 symbol
12. 把 module 串進系統
13. 剖析 module argument( 無圖 )
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
modules
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__ksymtab_gpl
.gnu...this_module
__ksymtab
__ksymtab_gpl_future
__start___ksymtab
__start___ksymtab_gpl
__start___ksymtab_gpl_future
56
load_info
hdr
sechdrs
secstrings
strtab
.modinfo
mod
0x00000000
14. 釋放 tmp memory
50
45
40
35
52
53
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
20
10
25
5
30
15
0
57
mod
0x00000000
14. 釋放 tmp memory
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
58
mod
0x00000000
14. 釋放 tmp memory
15. 初始化 module
.init.text
init
.strtab
.symtab(resolved)
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
59
mod
0x00000000
14. 釋放 tmp memory
15. 初始化 module & 釋放 final memory 的 init 部份
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
60
7.a ELF 介紹
7.b Module 相依性
7.c Module Section
7.d 載入 Module
7.e 卸載 Module
61
modules
.gnu...this_module
.gnu...this_module
0x00000000
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
1. 確認 module 是否在系統裡
62
modules
.gnu...this_module
.gnu...this_module
0x00000000
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
1. 確認 module 是否在系統裡
2. 檢查該 module 有無被使用
nf_conntrack
module
source_list
target_list
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
iptable_nat
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
63
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
1. 確認 module 是否在系統裡
2. 檢查該 module 有無被使用
nf_conntrack
module
source_list
target_list
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
iptable_nat
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
這是同一個
64
modules
.gnu...this_module
.gnu...this_module
0x00000000
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
1. 確認 module 是否在系統裡
2. 檢查該 module 有無被使用
3. 使用該 module 的 exit( )
nf_conntrack
module
source_list
target_list
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
iptable_nat
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
65
modules
.gnu...this_module
.gnu...this_module
0x00000000
1. 確認 module 是否在系統裡
2. 檢查該 module 有無被使用
3. 使用該 module 的 exit( )
4. 從系統 module list 移除
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
nf_conntrack
module
source_list
target_list
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
iptable_nat
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
66
modules
.gnu...this_module
.gnu...this_module
0x00000000
1. 確認 module 是否在系統裡
2. 檢查該 module 有無被使用
3. 使用該 module 的 exit( )
4. 從系統 module list 移除
5. 移除使用關係
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
nf_conntrack
module
source_list
target_list
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module_use
source_list
source
target_list
target
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
iptable_nat
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
67
modules
.gnu...this_module
.gnu...this_module
0x00000000
1. 確認 module 是否在系統裡
2. 檢查該 module 有無被使用
3. 使用該 module 的 exit( )
4. 從系統 module list 移除
5. 移除使用關係 & 資料結構
.text
.exit.text
.rodata.str1.4
.rodata
__ksymtab_strings
__ksymtab_gpl
.ARM.exidx.init.text
.ARM.extab.init.text
.ARM.exidx.exit.text
.ARM.extab.exit.text
__param
.modinfo
.ARM.extab
.ARM.exidx
.note.gnu.build-id
.gnu...this_module
.data
core
.strtab(partial)
.symtab(partial)
.bss
nf_conntrack
module
source_list
target_list
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
iptable_nat
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
68
modules
.gnu...this_module
.gnu...this_module
0x00000000
1. 確認 module 是否在系統裡
2. 檢查該 module 有無被使用
3. 使用該 module 的 exit( )
4. 從系統 module list 移除
5. 移除使用關係 & 資料結構 & 釋放 module
module
source_list
target_list
nf_conntrack_ipv4
module
source_list
target_list
iptable_nat
module
source_list
target_list
nf_conntrack_ftp
module
source_list
target_list
nf_nat
module
source_list
target_list
nf_defrag_ipv4
69
End

More Related Content

What's hot

揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharingYi-Jun Zheng
 
Device Driver - Chapter 6字元驅動程式的進階作業
Device Driver - Chapter 6字元驅動程式的進階作業Device Driver - Chapter 6字元驅動程式的進階作業
Device Driver - Chapter 6字元驅動程式的進階作業ZongYing Lyu
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階Simen Li
 
程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體Shu-Yu Fu
 
Ch2 80x86计算机组织结构
Ch2 80x86计算机组织结构Ch2 80x86计算机组织结构
Ch2 80x86计算机组织结构bitistu
 
Mongo db架构之优先方案
Mongo db架构之优先方案Mongo db架构之优先方案
Mongo db架构之优先方案Lucien Li
 
Android 源码分析 -- (一) Android启动过程
Android 源码分析 -- (一) Android启动过程Android 源码分析 -- (一) Android启动过程
Android 源码分析 -- (一) Android启动过程manateew
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365Peter Yi
 
Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得roboard
 
Android C Library: Bionic 成長計畫
Android C Library: Bionic 成長計畫Android C Library: Bionic 成長計畫
Android C Library: Bionic 成長計畫Kito Cheng
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章鍾誠 陳鍾誠
 
從技術面簡介線上遊戲外掛
從技術面簡介線上遊戲外掛從技術面簡介線上遊戲外掛
從技術面簡介線上遊戲外掛John L Chen
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析Guangyao Cheng
 
程式設計師的自我修養 Chapter 8
程式設計師的自我修養 Chapter 8程式設計師的自我修養 Chapter 8
程式設計師的自我修養 Chapter 8Shu-Yu Fu
 
Heap exploitation
Heap exploitationHeap exploitation
Heap exploitationAngel Boy
 
Linux常用命令与工具简介
Linux常用命令与工具简介Linux常用命令与工具简介
Linux常用命令与工具简介weihe
 
Sigreturn Oriented Programming
Sigreturn Oriented ProgrammingSigreturn Oriented Programming
Sigreturn Oriented ProgrammingAngel Boy
 
ch9-pv1-the-extended-filesystem-family
ch9-pv1-the-extended-filesystem-familych9-pv1-the-extended-filesystem-family
ch9-pv1-the-extended-filesystem-familyyushiang fu
 
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽Kito Cheng
 

What's hot (20)

揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing
 
Device Driver - Chapter 6字元驅動程式的進階作業
Device Driver - Chapter 6字元驅動程式的進階作業Device Driver - Chapter 6字元驅動程式的進階作業
Device Driver - Chapter 6字元驅動程式的進階作業
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階
 
程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體
 
Ch2 80x86计算机组织结构
Ch2 80x86计算机组织结构Ch2 80x86计算机组织结构
Ch2 80x86计算机组织结构
 
18 cpu02
18 cpu0218 cpu02
18 cpu02
 
Mongo db架构之优先方案
Mongo db架构之优先方案Mongo db架构之优先方案
Mongo db架构之优先方案
 
Android 源码分析 -- (一) Android启动过程
Android 源码分析 -- (一) Android启动过程Android 源码分析 -- (一) Android启动过程
Android 源码分析 -- (一) Android启动过程
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365
 
Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得
 
Android C Library: Bionic 成長計畫
Android C Library: Bionic 成長計畫Android C Library: Bionic 成長計畫
Android C Library: Bionic 成長計畫
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章
 
從技術面簡介線上遊戲外掛
從技術面簡介線上遊戲外掛從技術面簡介線上遊戲外掛
從技術面簡介線上遊戲外掛
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析
 
程式設計師的自我修養 Chapter 8
程式設計師的自我修養 Chapter 8程式設計師的自我修養 Chapter 8
程式設計師的自我修養 Chapter 8
 
Heap exploitation
Heap exploitationHeap exploitation
Heap exploitation
 
Linux常用命令与工具简介
Linux常用命令与工具简介Linux常用命令与工具简介
Linux常用命令与工具简介
 
Sigreturn Oriented Programming
Sigreturn Oriented ProgrammingSigreturn Oriented Programming
Sigreturn Oriented Programming
 
ch9-pv1-the-extended-filesystem-family
ch9-pv1-the-extended-filesystem-familych9-pv1-the-extended-filesystem-family
ch9-pv1-the-extended-filesystem-family
 
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
 

Viewers also liked

ch15-pv1-time-management
ch15-pv1-time-managementch15-pv1-time-management
ch15-pv1-time-managementyushiang fu
 
ch8-pv1-the-virtual-filesystem
ch8-pv1-the-virtual-filesystemch8-pv1-the-virtual-filesystem
ch8-pv1-the-virtual-filesystemyushiang fu
 
ch3-pv1-memory-management
ch3-pv1-memory-managementch3-pv1-memory-management
ch3-pv1-memory-managementyushiang fu
 
Linux Kernel Module - For NLKB
Linux Kernel Module - For NLKBLinux Kernel Module - For NLKB
Linux Kernel Module - For NLKBshimosawa
 
ch6-pv2-device-drivers
ch6-pv2-device-driversch6-pv2-device-drivers
ch6-pv2-device-driversyushiang fu
 

Viewers also liked (6)

ch15-pv1-time-management
ch15-pv1-time-managementch15-pv1-time-management
ch15-pv1-time-management
 
ch8-pv1-the-virtual-filesystem
ch8-pv1-the-virtual-filesystemch8-pv1-the-virtual-filesystem
ch8-pv1-the-virtual-filesystem
 
ch3-pv1-memory-management
ch3-pv1-memory-managementch3-pv1-memory-management
ch3-pv1-memory-management
 
Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone
 
Linux Kernel Module - For NLKB
Linux Kernel Module - For NLKBLinux Kernel Module - For NLKB
Linux Kernel Module - For NLKB
 
ch6-pv2-device-drivers
ch6-pv2-device-driversch6-pv2-device-drivers
ch6-pv2-device-drivers
 

Similar to ch7-pv1-modules

C++工程实践
C++工程实践C++工程实践
C++工程实践Shuo Chen
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Kris Mok
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)FLASH开发者交流会
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)Shanda innovation institute
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOpenSourceCamp
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式Stanley Ho
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocketpwesh
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Harvey Zhang
 
Talking about exploit writing
Talking about exploit writingTalking about exploit writing
Talking about exploit writingsbha0909
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇bluedavy lin
 
Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络lovingprince58
 
单片机原理与应用
单片机原理与应用单片机原理与应用
单片机原理与应用greentask
 
Sy03091说明书
Sy03091说明书Sy03091说明书
Sy03091说明书guest8f3690
 
Jvm那些事
Jvm那些事Jvm那些事
Jvm那些事dynamiclu
 
部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計Leon Chuang
 
Linux Tracing System 浅析 & eBPF框架开发经验分享
Linux Tracing System 浅析 & eBPF框架开发经验分享Linux Tracing System 浅析 & eBPF框架开发经验分享
Linux Tracing System 浅析 & eBPF框架开发经验分享happyagan
 
程式人雜誌 -- 2013年5月號
程式人雜誌 -- 2013年5月號程式人雜誌 -- 2013年5月號
程式人雜誌 -- 2013年5月號鍾誠 陳鍾誠
 

Similar to ch7-pv1-modules (20)

C++工程实践
C++工程实践C++工程实践
C++工程实践
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
 
Tcfsh bootcamp day2
 Tcfsh bootcamp day2 Tcfsh bootcamp day2
Tcfsh bootcamp day2
 
Optimzing mysql
Optimzing mysqlOptimzing mysql
Optimzing mysql
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocket
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
 
Talking about exploit writing
Talking about exploit writingTalking about exploit writing
Talking about exploit writing
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇
 
Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络
 
单片机原理与应用
单片机原理与应用单片机原理与应用
单片机原理与应用
 
Sy03091说明书
Sy03091说明书Sy03091说明书
Sy03091说明书
 
Jvm那些事
Jvm那些事Jvm那些事
Jvm那些事
 
部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計
 
Linux Tracing System 浅析 & eBPF框架开发经验分享
Linux Tracing System 浅析 & eBPF框架开发经验分享Linux Tracing System 浅析 & eBPF框架开发经验分享
Linux Tracing System 浅析 & eBPF框架开发经验分享
 
程式人雜誌 -- 2013年5月號
程式人雜誌 -- 2013年5月號程式人雜誌 -- 2013年5月號
程式人雜誌 -- 2013年5月號
 
Ipaq with linux
Ipaq with linuxIpaq with linux
Ipaq with linux
 

ch7-pv1-modules