Recently, I have been working on improving performance in Cutter, the radare2 GUI,
especially when working with larger binaries.
One major issue was that almost everything that accessed r2, such as updating the list of functions, strings, etc.,
was running on the main thread, and thus freezing the UI.
While this is barely noticeable with smaller binaries, it can lead to a severe impact on usability for larger ones.

The obvious solution for this is to somehow run the work in the background and update the UI when it is done.
Unfortunately, r2 was never designed to be multi-threaded.
This may intuitively seem like a poor design choice, however there are clear reasons behind it:
First, apart from potential speed-up, multi-threading would have almost no practical advantages when accessing
r2 from its classic command line interface.
And second, ensuring all necessary parts of the code are thre...

I have recently finished my Bachelor's Thesis on integrating two different volume lighting
methods in Met.3D, a free and open source application for
visualizing meteorological simulation data.
The thesis is now available under Publications.

Abstract

This thesis presents the integration of two different volume lighting methods to be
used for visualization of meteorological simulation data, in particular cloud data,
in Met.3D, an open-source visualization application for meteorological uses. The
first method is primarily a visuals-based approach, which simulates single scattering
and imitates certain visual phenomena appearing in real-world clouds. The second,
while generally requiring more computational effort, is a specific implementation of
the photon mapping algorithm and directly simulates multiple scattering by tracing
photons through the volume. It takes advantage...

In the last semester, I have written the thesis "Case Study on LLVM as suitable intermediate language for binary analysis"
for the Bachelor seminar "Reverse Engineering".
It is now available under Publications.

Abstract

Many binary analysis tools and compilers, instead of directly working on code, use an intermediate representation of it.
The idea of this thesis is to use the well-tested intermediate representation from LLVM for binary analysis tasks.
We take a look at McSema, a tool to translate x86 and x86_64 binaries to LLVM, describe its translation process in
detail and additionally implement Python bindings for it. To practically test McSema, we present five examples of code
we translate to LLVM and then recompile again. The last of these demos is an example on using KLEE, a symbolic execution
engine for LLVM, on the code produced by McSema in order to successfully solve ...