Cracking software with AI
In my last post I used an LLM agent to unpack live malware, which got me thinking: can LLMs also crack software?
Let’s find out.
Cracking a crackme
To have something to crack, I built a simple VM-based crackme with GPT-6 Astra that takes a flag, does some basic transforms on it, and checks the result against a hardcoded, obfuscated value. Not too hard, but not trivial and most importantly, the solution for it is not in the model’s weights.
For reference, this is how the algorithm looks:
# pseudocode
a, b, c, d, e = split_into_32bit_words(key)
for round in range(16):
a += rol(b ^ constant(), 5)
b ^= rol(c + constant(), 7)
c += rol(d ^ constant(), 11)
d ^= rol(e + constant(), 13)
e += rol(a ^ constant(), 17)
return (a, b, c, d, e) == hardcoded_target
The VM is fairly simple with only 23 opcodes.
As you can see, it’s just hard enough to stop beginners, while still being fairly doable (and mostly boring) for an experienced reverse engineer. So let’s see how good the LLM is with it.
I used Grok Build with the IDA MCP server, and all the manual work I did was to find main() and label it in the IDB. Then I prompted the agent to do some recon, and in just ~2min it came back with:
This all looked correct. Then I told it to get the flag. And it did:
Took just ~4min!
This sort of crackme used to stop beginners because, despite being conceptually simple, it requires some work to solve and the pseudocode looks like gibberish:
You’d have to look at this and spot that it’s a VM, analyze and label the opcodes, implement a disassembler, and then reverse the algorithm. Nothing here is particularly hard on its own, but the mix of concepts requires a fair bit of practice - plus the reversing experience to know that someone might build a tiny virtual machine inside their program just to make it harder for you to reverse.
Cracking commercial software
I was also curious whether the agent would have the ability to crack commercial software. For this, I used subtler prompts and a bit more human skill: instead of asking to directly crack the program, I found the license checking code myself, pointed the agent to it, and asked it to simply label the pseudocode and reconstruct the structs into something meaningful. This way I’d avoid tripping guardrails.
I copied a commercial program to my VM without the license file, and had the agent start working. Within ~4min, the entire licensing code was neatly labeled and the structures were reconstructed, and I was able to quickly find the license verification function:
There’s a path at the end that sets the return value (0 = invalid license, 1 = valid license):
Notice movzx eax, dil - that’s the path that sets the return value to 1 if verification passed. The other 2 paths always set it to 0 because some condition failed. Patching this was trivial because there’s only one code path that triggers when the license is entirely invalid - meaning I can simply patch that one location to always return 1:
Now, launching the software and feeding it an invalid license gives you the full version for free.
Disclaimer: I did this on software I already legally own, and I also won’t disclose its name to avoid turning this into a de facto crack for it.
Takeaways
On one hand, this is extremely impressive - with a bit of reversing experience you can plow through a ridiculous amount of work in no time, be it unpacking, analyzing, or patching. It really is a 10x multiplier on productivity - provided you already have a basic idea of what you’re doing.
On the other hand, it’s almost too easy - as you saw, the crackme fell with just a plain request, no skills necessary. And this is the hardest it’ll ever be, as models get better.
More broadly, it looks like we’re at the end of an era. Software cracking happened because writing code was hard, and thus expensive - hence, warez. But nowadays, you don’t crack Photoshop - you simply ask your agent to rebuild it for you:
I built a Photoshop-like image editor. It’s called Compositor.https://t.co/gGGHtfwtWW
— Robbie Tilton (@robbietilton) September 18, 2026
I originally built it for myself to get off my Adobe subscription, but decided to release it for free and make it open source. It has all the essential tools I need for compositing, with none… pic.twitter.com/vwbGh460Y7
That’s it for this post, hope you enjoyed it.
./aps