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