Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
610
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
120
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
150
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
370
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
1.9k
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
180
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2k
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
730
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
260
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.8k
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
530
Build your cross-platform service in a week with App Engine
jlugia
234
19k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Done Done
chrislema
186
16k
The Cult of Friendly URLs
andyhume
79
7k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
320
Product Roadmaps are Hard
iamctodd
55
13k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
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