Responsible use

Please confirm before you upload

You are responsible for the files you send. Decode what you own, what you are authorised to manage, or code whose source you have lost yourself. DeZender takes no responsibility for the legal, contractual or operational consequences of an upload or of the code it returns.

Sending the file confirms that your use of this service is lawful.

PHP source recovery · PHP 5.0 → 8.5

Decode ionCube & SourceGuardian PHP files

Recover readable PHP source from protected files, including complex dynamic-key cases. One engine for ionCube, SourceGuardian, Zend Guard and PHP-goto.

  • 7-15ionCube versions
  • 5.0 → 8.5PHP targets
  • IC · SG · ZG · gotoprotectors
license.phpprotected
<?php //00363
if (extension_loaded('ionCube Loader')) { … }
?>
HR+cPntfYPVvDdBOW5mSj5n5oZYiJdWjbjvFKkihsyZGkwUMbBbnoPpXQuC+6YfrYUi3Vsv1as
ibXHW/BJ0lAA08/QeNB7hgBV5LNkx6RIRtyN8UH4W9EtCIYUXwBYZDFz8n9sHOB7kaxhG5chb7
3nj379jGJfUri7v4Nqo3RnQMtvv7h9rW0Ws2G5+4vz11FnEQbAg3tpGA46Skk8jG+/GbmfuKKL …
license.phprecovered
<?php

function check_license($key, $domain)
{
	$parts = explode('-', strtoupper(trim($key)));

	if (count($parts) !== 4) {
		return false;
	}

	$sum = 0;

	foreach ($parts as $i => $part) {
		$sum += crc32($part) * ($i + 1);
	}
	…

Try it free

Upload a protected PHP file and get a free preview of about 20% of the recovered source, before you pay.

Only upload files you are authorized to recover.

What we decode

ionCube 7-15

Headers, licences, obfuscated names and Dynamic Keys, encoders 7 to 15, PHP 5.0 to 8.5.

SourceGuardian

Bytecode of versions 5.0 to 8.5, with the loader's own quirks reproduced.

Zend Guard

The @Zend container of PHP 5.0 to 5.6: classes, traits, closures and obfuscated names.

PHP-goto

Source an obfuscator flattened into goto, put back into loops and branches.

Three steps to your source

  1. 01

    Upload

    Drop your ionCube or SourceGuardian PHP file.

  2. 02

    Preview

    See decoded structure and any dynamic-key context needed.

  3. 03

    Recover

    Download the full source, or add the key context to finish.

Simple pricing · pay with crypto

Two ways to buy: unlimited for a while, or a batch of files that never expires and only counts the files we actually decode. Pay with crypto either way.

10 files
€10
2600 files
€54
5000 files
€88

Accepted today

  • BitcoinBTC
  • DogecoinDOGE
  • LitecoinLTC

Pay from any wallet or exchange. The receiving address comes with your order, and access opens by itself once the payment is confirmed.

Frequently asked questions

Which protectors and PHP versions do you support?

ionCube 7-15, SourceGuardian, Zend Guard and PHP-goto, for PHP 5.0 to 8.5.

Is there a free preview?

Yes, you get a free preview of about 20% of the recovered source before paying.

What can I send, and how much at once?

Loose .php files or a single .zip archive. Up to 5 MB per loose file, 200 of them in one go and 100 MB in total, and anything bigger travels inside the zip. You get one report and one archive back, whichever way the files came.

Is there a fair-use limit?

Access is unlimited in time, not in volume per hour. An account that decodes 3,000 files in a row pauses for 24 hours and then starts over, and asking for the opcode listing makes each file count twice. Normal use never meets that line.

My file has obfuscated names (obf_…). Can you get the real ones back?

ionCube can replace every class, function and variable name with a one-way hash, which cannot be reversed. The decoder hashes candidate names instead and keeps the ones that match, so a name is either proven or left alone. Our list holds about 900,000 names, your account can store its own on top of it, and a decode can collect the names your files already show in clear and add them to your list, which is the quickest way to fill it.

Do you support ionCube dynamic keys (callback keys)?

Yes. A body locked by a dynamic key needs the value the original code computed at runtime. The decoder works out every value it can on its own and reports each wall it could not pass, with the source of the resolver behind it. From that report an editor opens where you supply the value or the missing PHP, and the next pass runs on the pack we already hold, so nothing is uploaded again.

What if a file cannot be fully decoded?

The report names every file, what came back and what is still missing, so you know exactly what to provide next rather than guessing. On a batch of files, nothing is taken from your balance until you accept the result: a pack whose bodies stay locked by Dynamic Keys is paid for when you press "I'm done" in the editor, and never before.

How long do you keep my files?

Decoded results stay on the storage for 6 months, then they are removed. You can also delete any of them yourself from your dashboard, at any time.

How do I pay?

With cryptocurrency, and in one of two ways. Time-based access (a day, a week, a month) lets you decode without counting files while it lasts. A batch of files has no deadline: it sits on your balance, a new batch adds to what is left, and a pack is only charged when you accept the result, for the files we actually decoded. The ones we merely copied over, and the ones we failed on, are free. Holding both at once is fine: while time-based access runs it pays for everything, and the batch waits untouched for the day it ends.

Can resellers use an API?

Yes. A reseller account gets a USER and KEY pair, shown in its own dashboard and replaceable at any time, and posts files to our API, which answers with a job id to poll and a link to the finished archive. Only a reseller account has that section, and the API stops answering as soon as the plan behind the keys expires.

Ready to decode?

Upload a file and check whether it qualifies before you pay.

Get started