歡迎來到 https://hackmd.io/@coscup/2019 共筆
My program doesn't work, and I don't know why
Environment: ubuntu 18.04, gcc 7, linux kernel 4.14
make -p 可以列出預設的規則
$ make CFLAGS="-save-temps" hello
cc -save-temps hello.c -o hello
CFLAGS="-save-temps" 保留 .i, .o, .s
reference: x86 ABI (Application Binary Interface)
ld --verbose | grep ENTRY
Entry(_start)
csu (C Start up Unit)
在 _start 的 section 內把 main 的程式碼透過 libC 呼叫與執行
init, fini => 在 start_main 前 hook 東西,callback
Regist_binfmt() 支援不同的 executable 格式
struct linux_binfmt {
int (*load_binary)(struct linux_binprm *) -> load elf and execute
}
流程圖可以上講者部落格
Sections, text, tss, data
ABI
Linker Script
ELF
Binutils
vDSO
ASLR
man proc
malloc
Why use printf(), not write???
COSCUP2019
系統軟體社群議程
IB201
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing