Thick Client & Desktop App Penetration Testing
Thick client penetration testing across Europe. We break your desktop apps at the binary, memory and network layers. Fixed price, free retest.
Thick client penetration testing examines the desktop applications your business runs and trusts, the installed software that talks to your databases and back-end services, because a compiled binary sitting on a user’s machine hides far more than a web page ever could. Attackers decompile it, tamper with it in memory, and intercept its traffic, and most of it was never built to survive that scrutiny.
Web apps get tested constantly. Thick clients, the Windows and .NET and Java applications that run your operations, trading, ERP, point-of-sale, engineering tools, rarely do, and they carry assumptions no one has ever challenged. Developers assume no one will look inside the executable, that client-side checks are enough, and that the connection to the server is safe simply because it’s theirs. We take those assumptions apart, one by one, and show you what a determined attacker with a copy of your software can do.
What thick client penetration testing covers
A thick client is attacked at several layers at once: the binary itself, the memory it runs in, the files and registry it touches, and the network calls it makes. We test all of them, because a weakness at any layer can undermine the whole application.
The client is not on your side
The core problem with any thick client is that it runs on a machine the attacker controls. Every check the application performs locally can be observed, disabled or lied to. A “you can’t do this” button greyed out in the interface is trivially re-enabled once someone opens the binary in a decompiler. Anything the security of your system depends on has to live on the server, and testing reveals every place it doesn’t.
Two-tier and back-end exposure
Many thick clients connect straight to a database with credentials baked into the application. Extract those, and an attacker often has direct database access, bypassing every business rule the application was supposed to enforce. This two-tier architecture is common in older enterprise software and is one of the most serious patterns we find.
How we test a thick client
Testing a compiled application is more involved than testing a web app, and it draws on reverse-engineering skill as much as offensive-security experience. We work under NDA against a copy of the application in an environment agreed with you.
Reconnaissance and architecture mapping
First we understand what we’re dealing with: the language and framework, whether it’s a standalone two-tier client or a front end to web services, what it stores locally, and how it authenticates. This shapes everything that follows, because a Java client and a native C++ application fail in different ways.
Static analysis and reverse engineering
We decompile the binary to read its logic, hunting for hardcoded secrets, weak cryptography, hidden functionality and the client-side checks that beg to be bypassed. .NET and Java assemblies often decompile back to near-original source, which means any secret in the code is effectively public.
Tools used in penetration testing of thick clients
The tools used in penetration testing at this layer are specialised. We reach for dnSpy and JADX to decompile .NET and Java, Ghidra for native binaries, Frida for runtime instrumentation and hooking, Process Monitor to watch file and registry activity, and proxies such as Burp Suite together with Echo Mirage or a configured system proxy to intercept traffic that doesn’t speak plain HTTP. None of it replaces the engineer’s judgement; it just gives them the view an attacker would have.
Dynamic and runtime analysis
With the application running we watch it work: what it writes to disk and the registry, what secrets sit in memory, and whether we can hook functions with Frida to change behaviour on the fly. Bypassing a licence check or an authorisation gate at runtime proves that client-side enforcement is no enforcement at all.
Network and back-end testing
We intercept and tamper with the traffic between client and server, checking for weak or absent transport security, missing certificate validation, and server-side trust in values the client should never be trusted to set. This is usually where a local weakness becomes a genuine breach, because the server takes the tampered request at face value.
Vulnerabilities we find in desktop applications
Thick clients fail in recognisable ways, and the same issues recur across enterprise software of every vintage.
Secrets baked into the binary
Database passwords, API keys, encryption keys and connection strings hardcoded into the executable are the classic finding. Developers assume the compiled form hides them. Decompilation shows they don’t, and a single extracted database credential can expose everything behind the application.
Client-side security that isn’t
Authorisation decisions, input validation, price calculations and feature gating done only on the client are all bypassable, because the client belongs to the attacker. We routinely re-enable disabled functions, open up restricted features and alter values the server then accepts without question.
Insecure local storage
Sensitive data cached in cleartext files, unprotected registry keys, or weakly encrypted local databases hand an attacker with access to the machine a rich supply of information, from credentials to personal data covered by GDPR.
Insecure updates and DLL hijacking
An update mechanism that fetches code over an unauthenticated channel, or an application that loads libraries from a writable path, gives an attacker code execution on the user’s machine. These issues turn a business application into a foothold for wider compromise.
Want this tested on your own systems?
Free 20-minute scoping call, a fixed price with no hourly surprises, and a free retest once you fix what we find.
What you get
A clear picture of how your desktop software holds up under attack, and the specific fixes to close the gaps.
Executive summary
A plain-language read for leadership on what an attacker could do with a copy of your application, and which findings carry real business risk versus which are lower priority.
Technical report
Every finding with impact, a CVSS score, reproduction steps and a concrete, developer-ready fix, whether that means moving a check to the server, removing a hardcoded secret, or hardening the update process. Decompiled snippets and screenshots back up each one.
Attestation and free retest
An attestation letter for auditors and clients, and a no-cost retest after your developers remediate, to confirm the fixes hold when the same techniques are applied again.
Compliance and standards
Thick client testing supports the frameworks European organisations report against, particularly where the application handles payments or personal data.
PCI DSS, ISO 27001 and SOC 2
If the desktop application touches cardholder data, PCI DSS 4.0 requirement 6 on secure software and requirement 11.4 on penetration testing both apply. ISO 27001 Annex A control 8.28 on secure coding and SOC 2’s expectations around secure development are directly supported by a thick client assessment, and testing follows the OWASP application-security guidance adapted for compiled clients.
GDPR and DORA
Where the application processes personal data, GDPR Article 32 expects appropriate technical measures, and for financial entities DORA’s focus on the resilience of critical software includes the desktop tools that run core operations.
Why manual testing beats a scanner
No automated tool decompiles your application, understands what a given function is supposed to enforce, and works out how to make it lie. Scanners were built for web apps and network services; they have almost nothing to say about a compiled desktop binary, its memory, and the trust relationship between it and your back end. This is reverse-engineering work, and it depends entirely on an engineer who can read decompiled code and reason about intent. You get a short list of proven, exploitable findings rather than a wall of noise, and every one comes with the exact steps to reproduce it.
Where thick client testing fits
A thick client rarely stands alone. It talks to APIs, databases and web services, and a complete assessment usually takes those in too, because the most damaging findings live at the boundary between the client and what it connects to. If you already test your web application and APIs, the desktop client is the obvious gap, and testing it closes a surface that attackers know is routinely overlooked. It pairs naturally with an internal network test, since a compromised desktop application is often the first foothold inside the perimeter.
Pricing
The penetration testing cost for a thick client depends on the application’s size and complexity, its architecture, and whether the back-end services are in scope alongside the binary. Here is the typical shape of a European engagement.
| Engagement | What’s included | Timeline | Price |
|---|---|---|---|
| Essential | Single desktop application, static and dynamic analysis, traffic interception, hardcoded-secret and local-storage review, full report and free retest | 4–6 working days | from €3,000 |
| Standard | Larger application with authentication and back-end services in scope, runtime instrumentation, business-logic testing, exec and technical reporting | 6–10 working days | €4,000–€9,000 |
| Advanced | Complex or high-risk client, two-tier database access, deep reverse engineering and update-mechanism testing | 10–15 working days | €9,000–€18,000 |
| Compliance add-on | Mapping and attestation for PCI DSS, ISO 27001, SOC 2 or DORA | with any tier | from €800 |
| Custom / suite | Multiple applications or a full desktop suite, scoped after a call | on scoping | custom |
Every engagement is fixed-price, quoted after a free 20-minute scoping call, with no hourly surprises and a retest included. Get a fixed quote
FAQ
How much does thick client penetration testing cost?
How long does a thick client pen test take?
What do you need from us to start?
What tools do you use for thick client testing?
Can you test an application that talks to a database directly?
Will testing affect our production systems?
Does this satisfy PCI DSS or ISO 27001 requirements?
We only ever tested our web app. Why test the desktop client too?
Related services
Organisations that build or depend on installed desktop software: ISVs shipping Windows, .NET or Java applications to their own customers, enterprises running trading, ERP or point-of-sale clients that connect to sensitive back ends, and any business subject to PCI DSS or ISO 27001 whose desktop applications have never been tested at the binary level.
Security you can prove
The same standard on every engagement, big or small.
Evidence, not opinions
Every finding ships with a reproduction and proof of concept — no vague "maybe vulnerable".
Humans over scanners
Certified engineers find the logic flaws and chained attacks automated tools walk straight past.
Fixed price, free retest
You know the cost up front, and verifying the fix is part of the deal — not a second invoice.
Ready to lock this down?
Free scoping call, fixed price, free retest. Tell us what you're running and we'll take it from there — usually within one business day.
Tell us what you're running
Scoping is free. We reply within one business day, and under 30 minutes for active incidents.