Research

Before p4ndora reads your code, it translates it.

Every audit starts the same way. Your repository is turned into our own intermediate representation, a form of the program built for one job, finding the way in. This is where the idea comes from and what it changes.

By p4ndora research, Security research at p4ndora.ai. Published October 13, 2026. 6 min read.

The short answer

What makes p4ndora different?

It does not review raw source files. It first translates a repository, in any language, into a proprietary intermediate representation built only for security work, and audits that.

  • Built for security. Other representations of code make it cheaper for AI to read. Ours is shaped around what a security review needs.
  • Anchored to your source. Every fact points to exact bytes of an exact commit, so every finding comes with its lines and its proof.
  • Born in binary protection. The idea comes from our CTO's research into software that resists reverse engineering.

It started with software that fights back.

Our CTO is a security researcher. Long before p4ndora, his subject was a hard one. How do you protect software that runs on a machine you do not control? Game clients. Anti-cheat. Code an attacker can open, pause and take apart at leisure.

The strongest answer the field has is virtualization. You take the code that matters and rewrite it for a machine that exists nowhere else. To understand the program, an attacker first has to understand the machine.

Two views of one function. The first shows a short readable flow of steps with a branch and a loop. The second shows a loop that reads a stream of private codes and hands each one to a handler, so the original flow is no longer visible.

The same function twice. Run on the processor, any tool can read it. Run on a private machine, the tool sees only that machine.

A second question ran through the same research. How far does AI get against protection like this? Knowing where automated analysis gives up turned out to matter later. We wrote about the protection itself in Code virtualization, the core of our anti-tamper, and published VM Workbench, a teaching tool that lets you step through such a machine.

You cannot change a program by editing its bytes.

To virtualize a compiled program you have to change it deeply, and machine code is a terrible place to make changes. Every byte depends on its neighbours. Move one instruction and a hundred addresses are wrong.

So nobody works on the bytes. A binary transformer lifts the program into an intermediate representation, an IR. That is the program again, written in a cleaner form that says what each step does without the clutter of one particular processor. On that form a change is a rule you apply, and the same input always gives the same output. When the work is done, the IR is lowered back into machine code.

A program shown three times in a row. First as dense machine code. Then lifted into a clear graph of operations, where a transformation rewrites part of the graph. Then lowered back into machine code that looks different but does the same job.

Lift, transform, lower. The work happens in the middle, where the program is easy to reason about.

Ready-made representations exist. For this work they were not good enough, so our CTO designed his own, shaped around exactly the transformations he needed. That decision is the root of p4ndora. The representation you choose decides what is easy and what is impossible.

Then we turned the idea around.

Protection picks a representation to make understanding expensive. An attacker who meets a virtualized function pays for every step of insight.

A security audit has the opposite problem. It needs understanding to be cheap, and source code as written is not cheap to understand. It is written for people who know the project and for compilers that read every character. What a reviewer cares about is scattered. A request enters in one file, is checked in a second and reaches the database in a fifth.

A scale for the cost of understanding a program. At one end a virtualized program, costly for an attacker to understand. At the other end a representation built for security review, cheap for a reviewer to understand. Raw source code sits in between.

One idea, two directions. A protector chooses a representation that makes a program costly to understand. An audit needs one that makes it cheap.

Hand a repository to an AI model as plain text and you pay twice. You pay for every character it reads, and most characters carry nothing about security. And you rely on it to keep the whole picture in mind while it reads.

Researchers have built representations that make code cheaper for AI to read. We looked for one designed around security and did not find it. So we built it.

A representation built only for security.

p4ndora turns a repository into our own IR before any review starts. It takes source code of any kind and brings it into one form. That form keeps four things.

  1. Where the outside world gets in. Every door a request, a file or a message can come through.
  2. What that input can reach. The routes from each door to the places where something is written, sent or run.
  3. What stands in between. The checks on each route, and the routes that have none.
  4. Where each fact lives. The exact bytes of an exact commit, so nothing is taken on trust.

On one side several source files shown as long blocks of text. On the other side the same code as a short route with three stops, the way in, a check and a write. The check is missing on one route and that route is marked. Each stop points back to a line range in a file.

The same code read two ways. As text it is every character of every file. As our IR it is the route from the way in to the write, with the missing check in plain sight and every step tied to its lines.

What it leaves out is everything a review does not need, and that is most of what a file contains.

The representation itself stays private, the way a protector keeps its machine private. What we can show is what it makes possible.

What it changes for your audit.

The whole repository

A compact form lets an audit take in everything at one pinned commit, not a sample of it.

Findings you can check

Every finding is tied to its lines and comes with the route that proves it.

Every push compared

A new commit becomes a new representation. Comparing the two shows what changed for security, not only which lines moved.

A fraction of the cost

Less to read means less to pay for. In our own test p4ndora averaged 85.5% recall at a small fraction of the model cost of the strongest general models.

The numbers and their limits are in the benchmark on our home page.

Protection taught us that the representation decides what understanding costs. p4ndora uses that lesson for defence.

Questions

What is an intermediate representation?
A second form of a program that keeps its meaning and drops the details of how it was written. Compilers and binary tools use one so they can analyse and change programs reliably.
Why not give the source code straight to an AI model?
Raw source is long and most of it says nothing about security. A model pays for every character and has to hold the whole project in mind. A representation built for security keeps the relevant structure and leaves the rest out.
Which languages does it work with?
The representation is the same for every language. Source code of any kind is brought into one form before the review starts.
Can I see the representation?
No, it is proprietary. Every finding shows the source lines and the route that proves it, so you can check the result without seeing how it was reached.
What does this have to do with anti-cheat?
Protecting game clients means lifting a compiled program into an intermediate representation, changing it there and lowering it back. Building such a representation for binaries led to the idea of building one for source code, with security review as its only purpose.

See what it finds in your code.

Connect a repository with read access and run your first audit.

Audit your repository See how it works

Loading