Thick Client Fundamentals
A beginner-friendly guide to the basic concepts behind thick client applications. Read this before the testing checklist. The goal is to understand how these apps are built and how Windows runs them, so the testing steps make sense instead of feeling like magic.
No prior knowledge is assumed. Each concept is explained in plain language with small examples.
Table of Contents
- What Is a Thick Client
- Application Architecture (Tiers)
- How Programs Are Built and Run
- Managed vs Native Code
- The PE File Format
- Processes, Threads, and Memory
- DLLs and Linking
- The Windows API and Its Layers
- Where Applications Store Data
- The Windows Registry
- Users, Privileges, and Integrity Levels
- Windows Services
- Inter-Process Communication
- Networking Basics
- Cryptography Basics
- Authentication and Authorization
- Binary Protections
- Obfuscation Basics
- Debugging, Disassembly, and Decompilation
- Why Thick Clients Are Interesting to Test
- Glossary
1. What Is a Thick Client
A thick client (also called a fat client or rich client) is an application that is installed on a user's computer and does most of its work locally. It can often run without a constant internet connection.
Compare this to a thin client, which is basically a web browser. With a thin client, almost all the logic and data live on a server, and the browser just displays results.
Examples of thick clients: desktop email apps, banking and trading terminals, chat tools such as Teams and Slack, games, and internal business software.
The key point for security: because a large part of a thick client runs on hardware the user controls, the user (or an attacker) can inspect the program, read its files and memory, and change how it behaves. This is a much bigger local attack surface than a web app.
2. Application Architecture (Tiers)
Thick clients are usually described by how many tiers (layers) they have.
Two-tier:
[ Thick client on the user's PC ] <--> [ Database or server ]
The client talks directly to a database or server, often on the same network. There is no middle layer. Because the client connects straight to the database, the database credentials and queries are often inside the client. This makes two-tier apps a rich target.
Three-tier:
[ Thick client ] <--> [ Application server ] <--> [ Database ]
A middle application server holds the business logic. The client sends requests (often over HTTP/S) and the server decides what to do and talks to the database. The client no longer holds the database password, but you can still test how the client talks to the server.
N-tier just means more layers (for example a separate authentication service or API gateway). The idea is the same: identify where logic and data live, and test each boundary.