Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Joshua A. Bockenek

dblp:248/0695 · DBLP profile ↗
← Back
5ranked-venue papers
2as first author
2since 2021 · last 2024
0000-0002-1055-8003ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 3 · 1 since 2021Security and privacy · 2 · 2 first-author · 1 since 2021Theory of computation · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
1 paper
Program analysis · 50% Program verification · 50%
Network and information security
1 paper
Systems and software security · 100%

Topics — the 3 heaviest of 3, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis › binary analysis
binary lifting
0.612022
Formally verified lifting of C-compiled x86-64 binaries · PLDI 2022
Program verification
theorem proving
0.612022
Formally verified lifting of C-compiled x86-64 binaries · PLDI 2022
Systems and software security
binary analysis
0.212022
Formally verified lifting of C-compiled x86-64 binaries · PLDI 2022

Methods — techniques the papers use, named apart from their topics

control-flow reconstruction · 1.1overapproximation · 0.6over-approximation · 0.6
YearPublicationVenuePosition
2024 Exceptional Interprocedural Control Flow Graphs for x86-64 Binaries
Joshua A. Bockenek, Freek Verbeek, Binoy Ravindran
DIMVA1
2022 Formally verified lifting of C-compiled x86-64 binaries
abstract
Lifting binaries to a higher-level representation is an essential step for decompilation, binary verification, patching and security analysis. In this paper, we present the first approach to provably overapproximative x86-64 binary lifting. A stripped binary is verified for certain sanity properties such as return address integrity and calling convention adherence. Establishing these properties allows the binary to be lifted to a representation that contains an overapproximation of all possible execution paths of the binary. The lifted representation contains disassembled instructions, reconstructed control flow, invariants and proof obligations that are sufficient to prove the sanity properties as well as correctness of the lifted representation. We apply this approach to Linux Foundation and Intel’s Xen Hypervisor covering about 400K instructions. This demonstrates our approach is the first approach to provably overapproximative binary lifting scalable to commercial off-the-shelf systems. The lifted representation is exportable to the Isabelle/HOL theorem prover, allowing formal verification of its correctness. If our technique succeeds and the proofs obligations are proven true, then – under the generated assumptions – the lifted representation is correct.
Freek Verbeek, Joshua A. Bockenek, Zhoulai Fu, Binoy Ravindran
PLDI2
2020 Highly Automated Formal Proofs over Memory Usage of Assembly Code
abstract
Abstract We present a methodology for generating a characterization of the memory used by an assembly program, as well as a formal proof that the assembly is bounded to the generated memory regions. A formal proof of memory usage is required for compositional reasoning over assembly programs. Moreover, it can be used to prove low-level security properties, such as integrity of the return address of a function. Our verification method is based on interactive theorem proving, but provides automation by generating pre- and postconditions, invariants, control-flow, and assumptions on memory layout. As a case study, three binaries of the Xen hypervisor are disassembled. These binaries are the result of a complex build-chain compiling production code, and contain various complex and nested loops, large and compound data structures, and functions with over 100 basic blocks. The methodology has been successfully applied to 251 functions, covering 12,252 assembly instructions.
Freek Verbeek, Joshua A. Bockenek, Binoy Ravindran
TACAS (2)2
2019 Establishing a refinement relation between binaries and abstract code
abstract
This paper presents a method for establishing a refinement relation between a binary and a high-level abstract model. The abstract model is based on standard notions of control flow, such as if-then-else statements, while loops and variable scoping. Moreover, it contains high-level data structures such as lists and records. This makes the abstract model amenable for off-the-shelf verification techniques such as model checking or interactive theorem proving. The refinement relation translates, e.g., sets of memory locations to high-level datatypes, or pointer arithmetic to standard HOL functions such as list operations or record accessors. We show applicability of our approach by verifying functions from a binary containing the Network Security Services framework from Mozilla Firefox, running on the x86-64 architecture. Our methodology is interactive. We show that we are able to verify approximately 1000 lines of x86-64 machine code (corresponding to about 400 lines of source code) in one person month.
Freek Verbeek, Joshua A. Bockenek, Abhijith Bharadwaj, Binoy Ravindran, Ian Roessle
MEMOCODE2
2019 Formal Verification of Memory Preservation of x86-64 Binaries
Joshua A. Bockenek, Freek Verbeek, Peter Lammich, Binoy Ravindran
SAFECOMP1