A Glimpse Into DexProtector
This blog post provides a high-level overview of DexProtector’s security features and their limitations
Software obfuscation, reverse engineering, program analysis, and open-source binary tooling by Romain Thomas.
This blog post provides a high-level overview of DexProtector’s security features and their limitations
This blog post introduces coverage-guided fuzzing with QBDI and libFuzzer targeting Windows ARM64.
This blog post demonstrates how to extract liblockdown.dylib from the visionOS dyld shared cache to be instrumented with QBDI on an Apple M1.
This blog post introduces iCDump, a new Objective-C class dump based on LLVM.
A dynamic trace symbolizer built on DynaMIR.
A clean, high-performance assembler and disassembler built on LLVM’s MC layer for production reverse-engineering workloads.
A user-friendly library for inspecting and generating DWARF and PDB debug information.
A modern, cross-platform Objective-C class dump that reconstructs declarations from Mach-O metadata with LIEF and LLVM.
A modern C++ hooking framework for x86-64, ARM64, and RISC-V64, with cross-platform detours and function replacement.
A modern dynamic binary instrumentation engine for x86-64, ARM64, and RISC-V64, built around a custom MLIR-based IR.
A Clang-powered analyzer for C and C++ layouts that resolves target-specific records, field offsets, sizes, methods, and types.
A user-friendly binary lifter built on QBDL, with DWARF-aware types and native or instrumented function calls.
This workshop introduces the main concepts to get started in reverse engineering
This blog post introduces open-obfuscator, a new open-source project to obfuscate mobile applications.
A free and open-source obfuscator for mobile applications
This second blog post deals with native code obfuscation and RASP syscall interception
This first blog post introduces the RASP checks used in SingPass
This series of blog posts details how obfuscators can protect iOS applications from reverse engineering
Slides PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF Whitepaper PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF Video (English) Your browser cannot play this video. Download the recording.
Slides PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF Whitepaper PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF Talk at BlackHat (English) Talk at SSTIC (French) Your browser cannot play this video. Download …
DroidGuard / SafetyNet bypass
This blog post is about the internal mechanisms of PGSharp, a cheat engine for PokemonGO.
Slides PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF Talk Blog Post PGSharp: Analysis of a Cheating App for PokemonGO
This blog post analyzes the Frida and Jailbreak detection in PokemonGO for iOS.
Slides PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF Talk (In French) Your browser cannot play this video. Download the recording.
QuarkslaB Dynamic Loader: Generic loader for ELF, PE, and Mach-O
Slides PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF Whitepaper PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF Talk Demo #1: Snapchat Your browser cannot play this video. Download the recording.
This second blog post explains how to recover the whitebox’s key from the obfuscated library libnative-lib.so
This first blog post describes the protections in the challenge r2-pay.
Scripts to unpack Android applications protected by Tencent Legu
Analysis of Tencent Legu: a packer for Android applications.
This blog post deals with QBDI and how it can be used to reverse an Android JNI library
Android application that disables Android restrictions without root privileges
NoteThis publication is also available on the Quarkslab Blog. With the release of Android Nougat, Google introduced restriction about native libraries that can be loaded from an Android application. Basically, it prevents developers to link against some internal libraries such as libart.so. Later on and with the …
Android crackme that uses system’s internals
Internal structures of VDEX format
Internal structures of OAT format
Many instrumentation techniques are based on modifying code or system environment of the target. It can be suitable for scenarios but it could not work under certain circumstance (integrity checking, non-rooted environment…) In this talk we propose similar techniques by only modifying the executable format. This …
On how we used LIEF to lift an Android x86_64 library to Linux to perform our usual white-box attacks on it.
This post explains how to use Frida gadget on a non-rooted device.
This blog post introduces new features of LIEF as well as some uses cases.
When analyzing an executable, the first layer of information is the format in which the executable is wrapped. Many tools and libraries can analyze and instrument machine code wrapped by one format. However, no library handled all three mainstream executable formats while supporting both reading and modification. LIEF …
We are open-sourcing LIEF, a library to parse and manipulate ELF, PE, and Mach-O binary formats. This blog post explains the purpose of this project and some parts of its architecture.
Slides PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF Video Your browser cannot play this video. Download the recording.
Parse, inspect, modify, and build ELF, PE, Mach-O, DEX, and more through one consistent C++, Python, Rust, Java, or C API.
Security engineering roles and research experience spanning software obfuscation, reverse engineering, Android security, and binary tooling.
PDF document preview The inline viewer is loaded only when requested. Open inline preview Download PDF
Write up
Write-up for the Crypto 300 challenge
This blog post introduces code coverage with Triton