76543210  0011 2233 4455 6677 8899 aabb ccdd eeff  0123456789ABCDEF
 00000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000010: 0000 4269 6e61 7279 0000 0000 0000 0000  ..Binary........
 00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000030: 0000 0000 0054 3030 6c73 0000 0000 0000  .....T00ls......
 00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000050: 0000 0000 0000 0000 5375 6d6d 6974 0000  ........Summit..
 00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000070: 0000 0000 0000 3230 3232 0000 0000 0000  ......2022......
 00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
The *Binary Tools Summit 2022* is an informal, technical, online event
oriented to authors, users and enthusiasts of FLOSS programs that deal
with binary data.
This includes binary editors, libraries to encode and decode data,
parser generators, binary data description languages and frameworks,
binary formats and encodings, assemblers, debuggers, reverse engineering
suites, and the like.
The goal of this event is for developers to get in touch with each
other, introduce their tools, have interesting and hopefully productive
discussions, and finally what is most important: to have fun.
The venue of the event will be an instance of the Big Blue Button web
conferencing system, accessible using Firefox, Chromium and other web
browsers.  We will be having a single track that will span for three
days during a weekend.
Dates
=====
  The summit will be held on the first weekend of March 2022, From
  Friday 4 to Sunday 6.
How to join the conference
==========================
  Click the link below to access the online conference:
  https://t00ls.lwn.net/b/track
Contact
=======
  You can reach us at mailto:binary-tools-summit@gnu.org.
  We are also in the IRC channel #binary-tools in irc.libera.chat.
Attending the event
===================
  This event is open to everyone and no registration is necessary in
  order to attend; however, we would appreciate if you send us an email
  stating your intention to attend so we can have an idea of the number
  of attendants beforehand.
  That way we will also be able to contact you in case something changes
  and a reminder before the conference starts.
Schedule
========
  All dates and times below are expressed in CET (GMT +1).
  See below in this page for the talk abstracts, slides and video
  recording.
Friday 4 March 2022
~~~~~~~~~~~~~~~~~~~
    Time  Activity                                        Presenter                
  ---------------------------------------------------------------------------------
   17:30  Welcome and introduction                        *                        
  ---------------------------------------------------------------------------------
   18:00  fq - jq for binary formats                      Mattias Wadman           
  ---------------------------------------------------------------------------------
   19:00  binfmt_misc - execute it!!!                     Aaron Grothe             
                                                          https://www.grothe.us 
  ---------------------------------------------------------------------------------
   20:00  GNU poke, the extensible editor for structured  Jose E. Marchesi         
          binary data                                     https://jemarch.net   
                                                          GNU Project.             
  ---------------------------------------------------------------------------------
   22:00  End of day                                                               
Saturday 5 March 2022
~~~~~~~~~~~~~~~~~~~~~
    Time  Activity                                     Presenter                 
  -------------------------------------------------------------------------------
   16:00  Declarative language FlexT for analysis and  Alexei Hmelnov            
          documenting of binary data formats and its   Institute for system      
          use for data reading code generation.        Dynamics and Control      
                                                       Theory of Siberian Branch 
                                                       of Russian Academy of     
                                                       Sciences.                 
  -------------------------------------------------------------------------------
   17:00  poked, GNU poke beyond the CLI               Mohammad-Reza Nabipoor    
                                                       GNU Project.              
  -------------------------------------------------------------------------------
   19:00  *talk canceled*                                                        
  -------------------------------------------------------------------------------
   20:00  On binary diffing and patching               Jose E. Marchesi          
                                                       https://jemarch.net    
                                                       GNU Project.              
  -------------------------------------------------------------------------------
   21:00  End of day                                                             
Sunday 6 March 2022
~~~~~~~~~~~~~~~~~~~
    Time  Activity                                      Presenter                  
  ---------------------------------------------------------------------------------
   16:00  BinDat: Bin there, done Dat                   Stefan Monnier             
                                                        Université de Montréal     
  ---------------------------------------------------------------------------------
   17:00  The Trojan Poke: embedding GNU poke in your   Mohammad-Reza Nabipoor     
          own program                                   GNU Project.               
  ---------------------------------------------------------------------------------
   18:00  GNU Jitter and the illusion of simplicity     Luca Saiu                  
          or                                            http://ageinghacker.net 
          Copying, patching and combining               GNU Project.               
          compiler-generated code in executable memory                             
          or                                                                       
          The Anarchist's guide to GCC                                             
          or                                                                       
          The fun of playing with fire                                             
  ---------------------------------------------------------------------------------
   20:00  Collaboration between tools                   *                          
  ---------------------------------------------------------------------------------
   22:00  End of day                                                               
Abstracts
=========
fq for binary formats
~~~~~~~~~~~~~~~~~~~~~
  Slides: https://binary-tools.net/fq-bts2022-v1.pdf
  Video: https://www.youtube.com/watch?v=GJOq_b0eb-s
  fq is inspired by the well known jq tool and language and allows you
  to work with binary formats the same way you would using jq. In
  addition it can also present data similar to a hex viewer, transform,
  slice and concatenate binary data, supports nested formats and has an
  interactive REPL with auto-completion.
  It was originally designed to query, inspect and debug codecs and
  metadata in media files and containers like mp4, flac, mp3, jpeg. But
  has since been extended to support a variety of formats like
  executables, packet captures including TCP reassembly and
  serialization formats like ASN1 BER, Avro, CBOR, protobuf and a lot
  more.
  In summary it aims to be something like jq, hexdump, dd and gdb
  combined into one.
  By Mattias Wadman.
binfmt_misc - execute it!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Slides: https://binary-tools.net/binfmt-misc.pdf
  Video: https://www.youtube.com/watch?v=P_Rsvi8-pY8
  Binfmt_misc allows the Linux Kernel to understand additional
  executable file formats and passes them to user space applications for
  execution.  This is used by some emulators and virtual machines.
  This talk will be a quick introduction to this capability and
  hopefully will give some ideas a few ideas about what this capability
  can be used/abused for :-)
  By Aaron Grothe.
GNU poke, the extensible editor for structured binary data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Slides: https://binary-tools.net/poke.pdf
  GNU poke (https://jemarch.net/poke) is an interactive, extensible
  editor for binary data.  Not limited to editing basic entities such as
  bits and bytes, it provides a full-fledged procedural, interactive
  programming language designed to describe data structures and to
  operate on them.
  In this talk I will be introducing the tool, its fundamentals, explain
  how it works, show some implementation details, and highlight what is
  new in the recently released poke 2.1.
  By Jose E. Marchesi.
FlexT, analysis and documenting of binary data formats
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Slides: https://binary-tools.net/FlexTBinTools.pdf
  Video: https://www.youtube.com/watch?v=BbIS3nj5WO0
  The language FlexT (acronym for Flexible Types) is designed for
  specification of binary data formats.  Its main statements are data
  type definitions that resemble type definitions of imperative
  programming languages, but are more flexible. For example, the FlexT
  data types may contain subparts of variable size and may have
  parameters.
  The primary purpose of the FlexT interpreter is to display the binary
  data in accordance with the format specification in a human-readable
  form. Typically the next step after studying some data format is to
  write a code for its processing. That’s why we have developed the data
  reading code generator, which completely automates this task for the
  substantial part of the data formats described in FlexT.  It can
  generate the data reading module and also the test program, which
  demonstrates the correct usage of the module to solve the data
  visualization task.
  By Alexei Hmelnov.
poked, GNU poke beyond the CLI
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Slides: https://binary-tools.net/poked_binary-tools-summit-2020.pdf
  Video: https://www.youtube.com/watch?v=5FN5uhcoAgc
  GNU poke is about manipulating structured binary data. Currently there
  is only one user interface (UI) for the `poke' program. It's a REPL
  program. And it has all the limitations of a REPL program. I developed
  a daemon program called `poked' and a bunch of small programs to
  interact with the daemon (the poklets). The `poked' is the "model" (in
  Smalltalk 80 sense of word) and the poklets are the view/controllers.
  It's an extensible architecture and many poklets can work
  simultaneously with a single `poked` to make a rich and featureful
  user experience.
  This talk will discuss the architecture, use and implementation of
  `poked' and poklets.
  By Mohammad-Reza Nabipoor.
BinDat: Bin there, done Dat
~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Slides: https://binary-tools.net/bindat.pdf
  Video: https://www.youtube.com/watch?v=QbYDnw2dlGY
  The BinDat library is a binary data description DSL for Emacs, written
  in Emacs Lisp using its macro preprocessing facilities.  It was added
  to Emacs 20 years ago by Kim Storm and has not seen much use since,
  sadly.  Prompted by a bug report, I have recently rewritten it in way
  that both speeds it up and makes it significantly more flexible.  I
  hope that it will make it a bit more popular.
  In this presentation I will give a taste of what BinDat is like, and
  how I made it more flexible.  I intend to focus on the design of the
  BinDat DSL more than on its performance or its implementation.
  By Stefan Monnier.
The Trojan poke: embedding GNU poke in your own program
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Slides:
  https://binary-tools.net/trojan-poke_binary-tools-summit-2022.pdf
  Video: https://www.youtube.com/watch?v=yLur7jqqRMA
  GNU poke is about manipulating structured binary data. Most of the
  functionality, in particular, the Poke compiler and IO handling, is
  not in `poke' application, but instead in a shared library called
  `libpoke'.  Poking at structured binary data is a rather general
  activity that is useful in a very wide range of different contexts.
  Rather than making `poke' capable of supporting different contexts
  (e.g., becoming a debugger, a filesystem editor, disk partitioner, an
  assember, and etc.), one can assimilate `libpoke' in these
  programs. In short, if the program will not come to `poke', `poke'
  will go to the program!
  This talk will describe the part of the libpoke API that provides the
  integration mechanism.  Then will show in detail a couple of examples
  of this kind of integration including poke in GDB, the GNU Debugger.
  Resistance is futile!
  By Mohammad-Reza Nabipoor.
GNU Jitter and the illusion of simplicity
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Slides: https://binary-tools.net/jitter-binary-tools-summit.pdf
  Video: https://www.youtube.com/watch?v=WXtCKeqIXnY
  GNU Jitter is a generator of portable and efficient language virtual
  machines; a Jittery VM lies at the heart of GNU poke.  Jitter achieves
  high performance by:
  - machine-generating C code;
  - compiling the generated code ahead-of-time with GCC;
  - copying, patching and recombining pieces of native code at run time
    into executable memory.
  GCC was definitely _not_ designed for this task.
  In this talk about the inner workings of Jitter I will show how to
  coerce the compiler into generating code suitable for run-time
  replication and how to maintain correctness, without the user
  noticing, when GCC optimisations play against us.  In a task where
  many have failed before I believe I can now show a recipe for success.
  http://ageinghacker.net/scratch-gnu/jitter-0.9.285.tar.gz
  http://ageinghacker.net/scratch-gnu/structured-simple-1.0.tar.gz
  By Luca Saiu.
Structured binary diffs
~~~~~~~~~~~~~~~~~~~~~~~
  Slides: https://binary-tools.net/bindiff.pdf
  Video: https://www.youtube.com/watch?v=MUb8rD5mPvE
  Diffing and patching is very well understood for line-oriented text
  data, and implemented in a very satisfying way: what would we do
  without diff and patch?  However, the situation is very different when
  it comes to binary data.
  This talk is divided in two parts.  First, we will do a short survey
  on how this problem has been approached in programs like binary
  editors and other tools, highlighting the pros and cons of each case.
  We shall see that diffing binary data is not something that can likely
  be solved by a fit-for-all solution: binary data comes in very
  different shapes.  It is not the same to compare raw bytes, assembled
  instructions, or structured binary data.  Then we will propose a diff
  format for structured binary data, and demonstrate a prototype written
  in GNU poke.
  By Jose E. Marchesi
Thanks
======
  The BBB instance is provided by Linux Weekly News