Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Writing an experimental eBPF disassembler

Writing an experimental eBPF disassembler

適当にLTネタになるかな,と思って作った話.
https://github.com/Drumato/ebpf-disasm

Drumato

July 24, 2021
Tweet

More Decks by Drumato

Other Decks in Programming

Transcript

  1. disasm#tips • Building block的に作ると良い ◦ Opcode type/InstClass typeを作ってEncoding typeを作る ▪

    それぞれのdecoderを書く ◦ それら(とsrc/dst/offset/imm)をまとめてInstruction typeを作る ▪ decoderを次々呼ぶだけ • srcは ooooxxxx のようになっているけど,4bit rshすると使いやすい ◦ Register numberに変換する感覚
  2. references • Linux Socket Filtering aka Berkeley Packet Filter (BPF)

    - www.kernel.org • Drumato/ebpf-disasm … 実装 ◦ 完全じゃないよ(Memory InstClassは適当)