Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ret2dl_resolve(x86_64)
Search
appBana
May 05, 2018
Programming
570
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ret2dl_resolve(x86_64)
in YOKARO-MON勉強会
appBana
May 05, 2018
Other Decks in Programming
See All in Programming
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
190
初めての模倣学習とVLA
natsutan
0
190
Android CLI
fornewid
0
230
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.5k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
540
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.6k
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
160
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
360
Flow は今どうなっているか
mizdra
PRO
0
680
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.7k
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
160
Go 1.27 における memory allocation の高速化
andpad
0
300
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Leo the Paperboy
mayatellez
8
2.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
300
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
My Coaching Mixtape
mlcsv
0
260
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
470
WENDY [Excerpt]
tessaabrams
11
39k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
None
None
None
None
Elf64_Rela r_offset (size=0x8) r_info (size=0x8) r_addend (size=0x8)
Elf64_Rela r_offset (size=0x8) r_info (size=0x8) r_addend (size=0x8) typedef struct {
Elf64_Addr r_offset; /* Address */ Elf64_Xword r_info; /* Relocation type and symbol index */ Elf64_Sxword r_addend; /* Addend */ } Elf64_Rela;
Elf64_Rela r_offset (size=0x8) r_info (size=0x8) r_addend (size=0x8) GOT Elf64_Symindex
None
Elf64_Sym st_name (size=0x4) st_info (size=0x1) st_other (size=0x1) st_shndx (size=0x2) st_value
(size=0x8) st_size (size=0x8)
Elf64_Sym st_name (size=0x4) st_info (size=0x1) st_other (size=0x1) st_shndx (size=0x2) st_value
(size=0x8) st_size (size=0x8) typedef struct { Elf64_Word st_name; /* Symbol name (string tbl index) */ unsigned char st_info; /* Symbol type and binding */ unsigned char st_other; /* Symbol visibility */ Elf64_Section st_shndx; /* Section index */ Elf64_Addr st_value; /* Symbol value */ Elf64_Xword st_size; /* Symbol size */ } Elf64_Sym;
Elf64_Sym st_name (size=0x4) st_info (size=0x1) st_other (size=0x1) st_shndx (size=0x2) st_value
(size=0x8) st_size (size=0x8) offset
None
None
None
“Hello, world!” %* '&”hello”'$'( puts() (+ “hello.c”#,! “hello”
"+$)
“Hello, world!” ).$+*”hello” +"(+,puts() ,/# “hello.c”'0% “hello” !&/(-
None
[email protected]
0x601018<
[email protected]
>0x400416
0x601018<
[email protected]
>0x400416<puts@plt+6>
1. Stack0(reloc_offset)push
1. Stack0(reloc_offset)push 2. 0x400400(.plt)
1. Stack 0(reloc_offset)push 2. 0x400400(.plt) 3. [0x601008]push [0x601010](_dl_runtime_resolve())
link_map
None
None
None
None
.rela.plt .dynstr .dynsym puts Elf64_Rela __libc_start_m ain Elf64_Rela
puts ELF64_Sym __libc_start_m ain ELF64_Sym libc.so.6¥x00 puts¥x00 __libc_start_main ¥x00 ...
.rela.plt .dynstr .dynsym puts Elf64_Rela __libc_start_m ain Elf64_Rela
puts ELF64_Sym __libc_start_m ain ELF64_Sym libc.so.6¥x00 puts¥x00 __libc_start_main ¥x00 ... .rela.plt reloc_offset Elf64_Rela
.rela.plt .dynstr .dynsym puts Elf64_Rela __libc_start_m ain Elf64_Rela puts ELF64_Sym
__libc_start_m ain ELF64_Sym libc.so.6¥x00 puts¥x00 __libc_start_main ¥x00 ... .dynsym r_info >> 32 Elf64_Sym
.rela.plt .dynstr .dynsym puts Elf64_Rela __libc_start_m ain Elf64_Rela puts ELF64_Sym
__libc_start_m ain ELF64_Sym libc.so.6¥x00 puts¥x00 __libc_start_main ¥x00 ... .dynstr st_name
None
puts()reloc_offset
puts()Elf64_Rela = rela.plt + puts()rela_offset * Elf64_Rela = 0x400398
+ 0x0 * 0x18 = 0x400398
puts()Elf64_Rela = rela.plt + puts()rela_offset * Elf64_Rela = 0x400398
+ 0x0 * 0x18 = 0x400398 r_info = puts()Elf64_Symindex << 32 | R_386_JMP_SLOT = 0x1 << 32 | 0x7 = 0x0000000100000007
puts()Elf64_Sym = .dynsym + puts()Elf64_Relar_info << 32* Elf64_Rela =
0x4002b8 + 0x1 * 0x18 = 0x4002d0
puts()Elf64_Sym = .dynsym + puts()Elf64_Relar_info << 32* Elf64_Sym =
0x4002b8 + 0x1 * 0x18 = 0x4002d0 st_name = 0xb st_info = 0x12
puts() = .dynstr + puts() Elf64_Sym st_name =
0x400318 + 0xb = 0x400323
None
None
None
None
.rela.plt .dynstr .dynsym puts Elf64_Rela __libc_start_m ain Elf64_Rela
puts ELF64_Sym __libc_start_m ain ELF64_Sym libc.so.6¥x00 puts¥x00 __libc_start_main ¥x00 ...
.bss Elf64_Relo Elf64_Sym “system¥x00” push reloc_offset _dl_runtime_resolve(“/bin/sh”)
.bss Elf64_Relo Elf64_Sym “system¥x00” push reloc_offset _dl_runtime_resolve(“/bin/sh”) reloc_offset = (A
- .rela.plt) / 0x18 A
.bss Elf64_Relo Elf64_Sym “system¥x00” push reloc_offset _dl_runtime_resolve(“/bin/sh”) r_info = ((B
- .dynsym) / 0x18) << 32 | 0x7 B
.bss Elf64_Relo Elf64_Sym “system¥x00” push reloc_offset _dl_runtime_resolve(“/bin/sh”) st_name = (C
- .dynstr) C
None
None
None
None
None
None
None
None
None
None
None
None
None