Skip to content
This repository has been archived by the owner on Dec 7, 2021. It is now read-only.

Obfuscator.io is no longer working #63

Open
Rulliam opened this issue Jan 11, 2021 · 26 comments
Open

Obfuscator.io is no longer working #63

Rulliam opened this issue Jan 11, 2021 · 26 comments
Labels
bug sanex3339 All sin belongs to @sanex3339

Comments

@Rulliam
Copy link

Rulliam commented Jan 11, 2021

Describe the bug
Deobfuscating Obfuscator io is no longer working

To Reproduce
it does not work anymore for obfuscator io
i tried with the obfuscator io sample

// Paste your JavaScript code here
function hi() {
  console.log("Hello World!");
}
hi();

-> obfuscated:

var _0x305e=['9saDTIV','326PQEvGs','56489vfJpQr','log','316680vTtHaV','167leqdwt','Hello\x20World!','92112VNXwdf','135890nrPiXD','175642lixkia','594079wXNZKt'];var _0x2a47=function(_0x816949,_0x40e825){_0x816949=_0x816949-0x152;var _0x305eb0=_0x305e[_0x816949];return _0x305eb0;};(function(_0x3700ba,_0x18dfd4){var _0x2e4789=_0x2a47;while(!![]){try{var _0x5919da=parseInt(_0x2e4789(0x154))+-parseInt(_0x2e4789(0x155))+parseInt(_0x2e4789(0x15c))+parseInt(_0x2e4789(0x156))+parseInt(_0x2e4789(0x15a))*parseInt(_0x2e4789(0x158))+parseInt(_0x2e4789(0x152))*-parseInt(_0x2e4789(0x159))+-parseInt(_0x2e4789(0x157));if(_0x5919da===_0x18dfd4)break;else _0x3700ba['push'](_0x3700ba['shift']());}catch(_0x226ab0){_0x3700ba['push'](_0x3700ba['shift']());}}}(_0x305e,0x4b4c8));function hi(){var _0x3c243f=_0x2a47;console[_0x3c243f(0x15b)](_0x3c243f(0x153));}hi();

but when trying to deobfuscate, in the console i have the error

Decode Error! ErrorEvent {isTrusted: true, message: "Uncaught Error: Not matched", filename: "http://127.0.0.1:4000/de4js/worker/decode.js", lineno: 79, colno: 11, …}

Uncaught Error: Not matched
    at decode.js:79

Desktop (please complete the following information):

  • OS: linux
  • Browser: chrome 87
  • Version: 1.11.1

Additional context
Does not works neither in online demo version, nor in builded version

@Rulliam Rulliam changed the title Obfuscator io no longer work Obfuscator.io is no longer working Jan 11, 2021
@zxsleebu
Copy link

agree. i can't decode anything :c

@lelinhtinh lelinhtinh added the bug label Jan 12, 2021
@lelinhtinh
Copy link
Owner

Same #59 but more detail 👍

@TristonStuart
Copy link

Code obfuscated from obfuscator.io will not work with the following options:

  • Eval
  • Array
  • Obfuscator io
  • _Number
  • JSFuck
  • JJencode
  • AAencode
  • URLencode
  • Packer
  • JS Obfuscator
  • My Obfuscate

I don't know if some of these are intended to throw javascript errors or not. But they all throw different errors usually "Not Matched" though. Just some more info on this bug.

@ashoksihmar
Copy link

it's not working anymore.

@lelinhtinh lelinhtinh added the sanex3339 All sin belongs to @sanex3339 label Mar 15, 2021
@bbday
Copy link

bbday commented Mar 21, 2021

yep same issue

@richcn
Copy link

richcn commented Apr 18, 2021

same issue. Will it be resolved?

@lelinhtinh
Copy link
Owner

same issue. Will it be resolved?

No hope - at this time.

@anka-213
Copy link

anka-213 commented Jul 7, 2021

@lelinhtinh Why no hope at this time? Do you want a PR?

I've managed to write a deobfuscator that works on obfuscator.io using jscodeshift and could probably port (i.e. rewrite from scratch) the relevant code to whatever framework this tool is based on.

@lelinhtinh
Copy link
Owner

PR is always welcome. However, you should consider specialized projects, and the code is cleaner.

@anka-213
Copy link

anka-213 commented Jul 7, 2021

Ah, thanks! I've missed those projects.
What was the major barrier for supporting the latest updates of obfuscator.io in this project?

@lelinhtinh
Copy link
Owner

Obfuscator.io is always up-to-date. If you fixed for the new version, the code generated from the old version will fail. It is almost impossible to distinguish which version the obfuscated code is based on.

@sanex3339
Copy link

Oh), please do not update all this deobfuscators. It will keep the summer more enjoyable).
Let's your all enjoy the summer instead!

@anka-213
Copy link

anka-213 commented Jul 7, 2021

What if I find updating deobfuscators enjoyable? :P
Maybe reviewing PRs is the less enjoyable part?

@bbday
Copy link

bbday commented Jul 7, 2021

the only real part they change it is obufuscantion function (synchrony) "StringDecoderTransformer" (atm they can also use some function that not exist in Node or build at runtime),
the easy way i found is replace it inside config with: (i deobuscated on original code then i export to in dictionary)

var dic =[ ... deobuscated value ... ]
var decFunction = function (key, nnn) {
return dic[key - 0xd6];
};
{
name: 'StringDecoderTransformer',
params: {
identifiers: [['a0_0x2250', 0, decFunction, 0]], //target string, , targetFunction
findStringArrays: true,
},
},

Atm only synchrony is good to work with obfuscation.io cause you can avoid previous issue, but there are other issue in code cause it export function like 'functionname'.['name'] instead functionnanme.name

@anka-213
Copy link

anka-213 commented Jul 7, 2021

Atm only synchrony is good to work with obfuscation.io cause you can avoid previous issue, but there are other issue in code cause it export function like 'functionname'.['name'] instead of functionnanme.name

And my highly unrefined script at https://github.com/anka-213/js-deobfuscator
It uses safe-eval though, so I'm not sure how safe it is to use on untrusted code.

@sanex3339
Copy link

sanex3339 commented Jul 7, 2021

I remember some deobfuscator with eval that was hosted online and eval allowed me to run any commands to traverse over file system and for other things)

https://deo.sigr.io/

image

@bbday
Copy link

bbday commented Jul 7, 2021

for example this is best example with higest level of obfuscation i found, that not work with Node and all deobufscator i tried failed, if you can defeat it, you win all challanges with obfuscator.io
https://www.ea.com/fifa/ultimate-team/web-app/js/ocompiled.js

@sanex3339
Copy link

sanex3339 commented Jul 7, 2021

Wow, didn't know that EA is using it.

@anka-213
Copy link

anka-213 commented Jul 7, 2021

@bbday Oh, I was super confused why eval was looping infinitely on it, but it was checking if the anti-debugger function in the bottom of the file was included, which it wasn't in my eval code. It does indeed seem advanced.

@bbday
Copy link

bbday commented Jul 7, 2021

Wow, didn't know that EA is using it.

they use obfuscator.io with some advanced feature (to defeat not real browser JS), that why i posted my example how to bypass it with manual "dictionary" with synchrony StringDecoderTransformer.

I suggest dont waste time try to build something that work with it (shoul be require a real browser (like cef) but too much complex task).
Just simple function like i show you before to bypass it, is enought, there are so much work for other more important tasks :D
After you bypass StringDecoderTransformer, you can start to use eval for other tasks.

Only synchrony with my simple mod work to defeat it, but missing other task like i suggest on relative/synchrony#10 (i dont have enought skills on Js to fix it by self)

I told you this is higest challange found, but when you win it you feel so good :D

@sanex3339
Copy link

sanex3339 commented Jul 7, 2021

I can break eval in the future btw, because there is a way to know if we inside an eval call.

@anka-213
Copy link

anka-213 commented Jul 7, 2021

@sanex3339 Oh, I only now made the connection that you wrote obfuscator.io, so updating the deobfuscators would mean more work for you.

@bbday
Copy link

bbday commented Jul 7, 2021

I can break eval in the future btw, because there is a way to know if we inside an eval call.

funny they use your tool and dont give you any reward 🗡️ they made last year +1500 milions $
Maybe is time to change your license and ask payment for commercial use :D

@anka-213
Copy link

anka-213 commented Jul 7, 2021

I can break eval in the future btw, because there is a way to know if we inside an eval call.

funny they use your tool and dont give you any reward 🗡️ they made last year +1500 milions $
Maybe is time to change your license and ask payment for commercial use :D

Maybe it should be changed to GPL, so all derivative works that include source code from the project will also need to be open source? 😁

@anka-213
Copy link

anka-213 commented Jul 7, 2021

Oh, cool! This code checks that the code hasn't been pretty-printed.

var noPrettyPrintingPls = function(){return 'newState';};
/\w+ *\(\) *\{\w+ *['|"].+['|"];? *\}/.test(noPrettyPrintingPls.toString())

Sneaky!

@lelinhtinh lelinhtinh pinned this issue Sep 6, 2021
@ethanaobrien
Copy link

@lelinhtinh

I may work on this (Probably not) but I found a method that will decode the https://obfuscator.io/ code (So far, it has worked for everything that I have tried)

What I do not have implemented: in the decoder file you must update the head code to
decrypt a different file.

Does not currently decode \x and \u characters

https://github.com/ethanaobrien/emulatorjs/blob/main/decrypt%20tools/index.html includes the worker (all client side).

If I run it through this script, and then a javascript cleaner, I have no syntax errors or any errors.

Hope this helps!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug sanex3339 All sin belongs to @sanex3339
Projects
None yet
Development

No branches or pull requests

10 participants