A Type System in C

Part 1 While C itself is obviously a language of types, it lacks the reflection capabilities of many higher level languages. This means that when designing modular, extensible systems, especially those that may

The Trouble with Scrum

Why Broad-Brush Approaches to Project Management are Harmful Project management methodologies are a bit like religion and politics: Everyone has an opinion, and those opinions tend to be strongly held.  This often creates

Writing a Windows Loader (Part 3)

Continuation of Writing a Windows Loader (Part 2) [/writing-a-windows-loader-part-2]. Entry Point Invocation At this point, we are finally able to invoke the entry point for our loaded binary! One important consideration, is that

Writing a Windows Loader (Part 2)

Continuation of Writing a Windows Loader (Part 1) [https://www.ambray.dev/writing-a-windows-loader/] Relocations So now that we've allocated space, and copied over the image, what is the next step? We

Writing a Windows Loader (Part 1)

A loader is code that prepares other code for execution. Loaders take data corresponding to a program or library and prepare it to be read, modified, and/or executed. This preparation process typically