Blog

15 Articles
26 Tags
Updated Weekly

Articles about system engineering, reverse engineering, and more

Deep dive into ptrace internals, from syscall to kernel implementation, understanding how it prevents debugger attachment and how to bypass it.

How to write an anti-debugging mechanism using fork and how to detect it!

This tutorial is designed for developers and security enthusiasts who want to approach LLDB, through a practical exercise.

A single missing ampersand ('&') led me through a challenging four-hour debugging journey. This experience was a profound reminder of the critical importance of understanding C++'s copy semantics and object lifecycle management.

Suppose you want to reverse-engineer some of Darwin's binary source code. I want to show you the technique I used to find the binary source code quickly.

In the previous post, we discussed building a basic macOS agent with launchd. But we are still far from how a software engineer could interact with and do with a real-world application. In this post, we will try to contextualize the usage of agents in a GUI macOS application.

Understand how to constrain window sizes in macOS applications using SwiftUI.

Launchd is responsible for starting, stopping, and managing background processes in macOS. In this blog post, we will build a macOS agent with launchd trying to understand the fundamentals.

In this comprehensive guide, we delve into the process of notarizing macOS applications using Apple's notarytool. We will demystify the concept of notarization, and explore the critical commands necessary to navigate this essential step in preparing your applications for distribution.

7 min read

Discover how to test callback-based APIs in C++ as a JavaScript developer. Learn to set up GoogleTest, use std::promise for async callbacks, and write robust test cases, bridging your JavaScript expertise to C++ testing scenarios.

As a JavaScript developer, you are probably familiar with the const keyword used to declare variables whose value cannot be changed. However, diving into C++ programming, you may notice some differences in how const works compared to JavaScript. In this post, we'll explore the nuances of const in C++ and how it differs from const in JavaScript.

Discover the process of code signing macOS CLI applications using CMake in this step-by-step tutorial. Learn the importance of code signing, how it works, and how to create a basic macOS CLI app and sign it using your Apple Developer ID Application certificate.

In this post, we discuss how to resolve the 'User interaction is not allowed' error when using xcrun notarytool store-credentials on CircleCI.

How to defined CPU architecture in you C++ code?

7 min read

How to spawn process in C or C++?