Case study 7 Adobe apps rebuilt with AI in weeks →

Can AI reverse-engineer your app?

If it ships as JavaScript or Electron, probably yes. An AI agent can pull your secrets, license checks and inner workings straight out of your build. See how exposed yours is in seconds, then lock it down.

✓ No signup✓ Code analyzed in memory, never stored✓ Results in seconds
Terminal
1Scan for free
$ reashield scan ./acme-studio
  REAShield: AI Exposure Score
  app:   ./acme-studio
  oracle: built-in  (install rea-agents for the REA oracle)

  ███████·····················  26/100  [F] Wide open

  What an AI agent can still extract:
   ● Hard-coded credentials and endpoints          1 key · 1 URL
   ● Named IPC channels / exposed APIs        2 channels · 1 API
   ● Meaningful symbol names                                   6
   ● Readable business strings                                18
   ● Source-shaped code (vs bytecode)                       100%

  Sample of what's exposed:
   keys / credentials: acme-pro-2026-salt-7f3a9c
   URLs: https://licensing.acme-studio.example/v2/activate
   IPC channels: license:verify, engine:content-aware-fill
   exposed APIs (window.*): acmeStudio
   symbol names: applyContentAwareFill, patchMatch, nearestField, LICENSE_SERVER, SECRET_SALT, verifyLicense

  → Harden it:  reashield harden ./acme-studio
2Harden with Pro
$ reashield harden ./acme-studio
  Hardening ./acme-studio
  → ./acme-studio-hardened

   • IPC channels randomized: 2 (2 files rewritten)
   • Note: channel names built at runtime (string concatenation, templates) cannot be detected; test the hardened app before shipping.
   • JS files obfuscated: 6
   • Assets copied: 2
   • Source maps removed: 0 (0 sourceMappingURL references stripped)

  Before → After hardening
  ███████·····················  26/100  before
  ████████████████████████····  84/100  after
  ▲ +58 points

  Hardened build written to: ./acme-studio-hardened
  Verify with:  reashield scan "./acme-studio-hardened"

This is the CLI's actual output on our sample Electron app (paths shortened).

Built for apps shipped with

Case study

Seven Adobe apps, rebuilt with AI in weeks.

What happened when one developer used an AI coding model to re-create Adobe's Creative Cloud, and what it means for apps that ship their code.

7Adobe apps re-created
PhotoshopIllustratorPremiereLightroomAcrobatAfter EffectsInDesign

Released as free, open-source alternatives under the name ArtCraft, for macOS, Windows, Linux and the browser.

Oct 3, 2026

The release

Developer Brandon Thomas publishes open-source re-creations of seven Creative Cloud apps on GitHub, built with Claude.

How

Rebuilt from the outside

Described as a clean-room reimplementation: no Adobe code was used. Features were recreated from how the apps behave. The apps are early alpha, far from parity.

Reaction

"Software is no longer a moat"

That's how techstrong.ai framed it. Adobe had not responded publicly as of mid-October.

The lesson for your app

Copyright protects code, not features. So AI rebuilding what it can see from the outside is often legal, and no tool can stop it. But Adobe ships compiled native code. JavaScript and Electron apps ship the inside too: license checks, secrets and algorithms sit in a readable archive. That's the part REAShield measures and protects.

Sources: techstrong.ai · Notebookcheck · ProPakistani. Adobe product names are trademarks of Adobe; REAShield is not affiliated with Adobe or ArtCraft.

The product

See exactly what an AI can take. Then take it away.

REAShield measures what an AI reverse-engineering agent feeds on, and hardens each part.

A 0 to 100 exposure score

One number for how much of your app an attacker can read, weighted by what matters most.

84after hardening · ▲ 58
Secrets & endpoints
2 → 0
IPC channels & APIs
3 → 0
Meaningful names
6 → 3
Readable text
high → low

Secret & key detection

License keys, API endpoints and tokens sitting in plain sight.

2 high1 med3 findings
JS
acme-pro-••••••-7f3a9clicense.js:3
High
JS
licensing.acme.example/v2/…license.js:2
High
JS
GOOGLE_CLIENT_SECRETauth.js:14
Med

Your internals, hidden

The names and wiring that explain how your app works are scrambled, so there's no map to follow.

As shippedAfter hardening
Readable→Scrambled
Mapped→Opaque
Obvious intent→No clues

Source maps, stripped

A shipped .map file hands anyone your original source, comments and all. The scanner flags them and harden removes them.

In your buildAfter hardening
main.js.map→Removed
renderer.js.map→Removed
sourceMappingURL→Stripped

A CI gate that keeps you hardened

The GitHub Action re-scores every pull request and fails the build if your score drops below your threshold.

Add new license flow #128 MKwants to merge 3 commits into main
✓REAShield / exposure-gate Required84 / 100 ≥ 6041s
✓build / electron (macOS, Windows)2m 10s
✓test / unit58s
✓All checks have passedMerge pull request
✕An earlier commit on this PR failed the gate at 41 / 100: a new license key had landed in license-v2.js.
Before / after

What an AI agent reads, before and after one command.

license.js (as shipped)26 / 100
const crypto = require("crypto");
const LICENSE_SERVER = "https://licensing.acme.example/v2/activate";
const SECRET_SALT = "acme-pro-2026-salt-7f3a9c";

function verifyLicense(licenseKey) {
  const digest = crypto.createHmac("sha256", SECRET_SALT)
    .update(licenseKey).digest("hex");
  if (digest.startsWith("00")) return { tier: "pro" };
  return fetch(LICENSE_SERVER, { method: "POST", body: licenseKey });
}
Readable secret, server URL and function names. An AI maps this instantly.
license.js (after reashield harden)84 / 100
var _0x4b1e=_0x2d5b;(function(_0x3a9f2c,_0x1c77d0){var _0x58e1a4=_0x2d5b,_0x2f0b9e=_0x3a9f2c();while(!![]){try{var _0x4a1d3b=-parseInt(_0x58e1a4(0x1e3))/0x1*(parseInt(_0x58e1a4(0x1d9))/0x2)+parseInt(_0x58e1a4(0x1f0))/0x3;if(_0x4a1d3b===_0x1c77d0)break;else _0x2f0b9e['push'](_0x2f0b9e['shift']());}catch(_0x19c2ab){_0x2f0b9e['push'](_0x2f0b9e['shift']());}}}(_0x57f3,0x6b2d1));function _0x2d5b(_0x4f0d6e,_0x3c1a92){var _0x57f329=_0x57f3();return _0x2d5b=function(_0x2d5b8a,_0x1e0c47){_0x2d5b8a=_0x2d5b8a-0x1d4;var _0x4c9e21=_0x57f329[_0x2d5b8a];return _0x4c9e21;},_0x2d5b(_0x4f0d6e,_0x3c1a92);}…
Secrets hidden, names gone, logic scrambled. Nothing left for an AI to map.
26 F as shipped→84 B hardened

Measured on our sample Electron app against REA v6.4.0. Hardening raises an attacker's cost. It isn't "AI-proof", and nothing stops someone copying behavior they can see.

How it works

Scan. Harden. Keep it that way.

Three steps. Your build pipeline doesn't change.

01

Scan

Get your exposure score and see exactly what an AI agent can pull out of your app.

02

Harden Pro

One command locks down what leaked. Re-score to prove the drop.

03

Gate

Add the free GitHub Action so any update that makes your app easier to read is caught before it ships.

Install the CLI npm i -g …/reashield-0.1.0.tgz
Scan for free reashield scan .
Add the CI gate (free) uses: yazzer5/reashield-action@v1 Setup guide
Free scanner

Get your exposure score in seconds.

For teams shipping proprietary Electron and JavaScript desktop apps. No account needed. Files are sent over HTTPS, analyzed in memory, then discarded.

Exposure scannerFree

Drop your app folder here

or choose it. Only code files are read and sent. .env and other config files never leave your machine.

  • Reads code files and app.asar
  • Skips node_modules
  • Sends up to 3 MB of code; the CLI reads everything
What to drop
  • Electron: your packaged app's resources folder (it holds app.asar), or the build output folder.
  • Next.js: run npm run build, then drop the project. Only .next/static (what browsers download) is scored.
  • Other web or Node apps: your built dist or build folder.
Analyzing files…
0/ 100 protected

What an AI agent can still extract

Sample of what's exposed

Do these findings match what's in your code?

About the findings above, not the score. One click is plenty.

Harden it and prove the drop

One command scrambles the names, hides the secrets and randomizes the IPC channels found above. Then re-scan to see the new score.

See plans
  1. Install the CLI: npm i -g …/reashield-0.1.0.tgz
  2. Activate the key you get after checkout: reashield activate <key>
  3. Harden and re-score: reashield harden ./your-app

Not ready yet? Get product updates by email.

Shareable badgeexposure badge
Fits your pipeline

Drops into the tools you already ship with.

REAShield runs as a build step. Nothing added to your app, nothing phoning home.

⌘

One CLI

Runs on your machine or in CI.

✓

GitHub Action gate

Check every pull request and block the ones that make you more exposed.

◎

Shareable badge

Show your score in your README and keep yourself honest.

Pricing

Start free. Upgrade when you ship.

Priced per app, billed monthly. No "contact sales" wall to find out what it costs.

Free
$0
Try it on your app
  • Web scanner + CLI scan
  • Exposure score & badge
  • Full findings report
Scan your app
Most popular
Pro
$39/mo
One paid app, solo dev
  • Everything in Free
  • One-command hardening
  • 1 app · 1 seat
  • GitHub Action CI gate
  • Priority email support
Team
$99/mo
A small team with a few apps
  • Everything in Pro
  • Up to 3 apps · 5 seats
  • One key for the whole team
Business
$299/mo
A company shipping several apps
  • Everything in Team
  • Up to 10 apps · 15 seats
  • One key for the whole company

More apps, more seats, or on-prem? Talk to us.

FAQ

Straight answers.

Does this make my app "AI-proof"?

No, and anyone who promises that is overselling. Every transform can be reversed by a determined expert, and nothing stops someone copying behavior they can see. What REAShield does is turn cheap, instant, automated AI analysis into slow, expensive, expert work, and gives you a number that proves it.

Do you store my code?

No. The free web scanner sends your code files over HTTPS to our server, analyzes them in memory and discards them; only the score goes back to your browser. The CLI runs entirely on your machine.

Is it safe to drop in my whole project folder?

Yes. The scanner only reads and sends JavaScript/TypeScript-type code files (plus package.json for context); .env files, images, binaries and anything else in the folder never leave your machine. node_modules, .git and test folders are skipped automatically. What is sent goes over HTTPS straight into memory on our server, is analyzed, and is discarded once your score comes back; nothing is written to disk or kept. If you'd rather not send anything over the network at all, run the same scan locally with the CLI instead: reashield scan .

Will hardening break my app?

It is designed not to: protections are applied consistently and the hardened build is re-scanned. As with any build step, run your test suite on the hardened build before you ship.

How is the score calculated?

From several areas, weighted by how useful they are to someone cloning your app. Secrets and license logic count the most.

What's free and what's Pro?

Scanning is free forever: the web scanner, the CLI scan command, your score, full findings and the badge. Hardening is Pro ($39/mo): after you subscribe you get a license key, run reashield activate <key> once, and harden is unlocked. It keeps working offline for 14 days between checks, so CI and air-gapped machines are fine. Cancel anytime and hardening stops at the end of the period.

What's REA?

An open-source tool that connects AI coding agents to reverse-engineering tools, so an agent can analyze shipped apps, including Electron and JavaScript apps. It went viral in October 2026, which is why we measure against it.

Get your score

See what an AI can take, before someone else does.

Free, no signup, results in seconds. Then harden the gaps with one command.