javascript-obfuscator / javascript-obfuscator/gulp-javascript-obfuscator

Bug in obfuscate js code.

Offen
#24 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug cannot reproduce
Vorherrschende Sprache
JavaScript
Sterne
103
Forks
37
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

First at all, sorry for my english, i will try to explain it as better as possible.

I have the following js code:

```javascript
export const Painter = function (elements, data) {
let title = elements.title;
let container = elements.container;
this.prePaint = () => { };
this.paint = () => { };
this.postPaint = () => { };
let finalPaint = () => {
this.prePaint = () => { };
this.paint = () => { };
this.postPaint = () => { };
createPromise();
};

let createPromise = () => {
return new Promise((resolve, reject) => {
this.paint = () => { resolve() }
}).then(() => {
this.prePaint(elements, data);
title.innerHTML = data.title;
container.innerHTML = data.html;
this.postPaint(elements, data);
finalPaint();
});
}

createPromise();
};
```

When i obfuscate this code, it seems like this (it was minimized and formatted by the browser):
```javascript
5: [function(a, b, c) {
"use strict";
Object[_0x56ae("0x6")](c, _0x56ae("0x6e"), {
value: !0
});
c[_0x56ae("0xb5")] = function(a, b) {
var c = this
, d = a[_0x56ae("0xb6")]
, e = a[_0x56ae("0xb7")];
this.prePaint = function() {} //// THIS LINE
,
this[_0x56ae("0xb8")] = function() {}
,
this[_0x56ae("0xb9")] = function() {}
;
var f = function() {
c[_0x56ae("0xba")] = function() {}
,
c.paint = function() {} ///// THIS LINE TOO
,
c.postPaint = function() {} ///// AND THIS LINE TOO
,
g()
}
, g = function() {
return new Promise(function(a) {
c.paint = function() {
a()
}
}
)[_0x56ae("0x24")](function() {
c[_0x56ae("0xba")](a, b),
d.innerHTML = b[_0x56ae("0xb6")],
e.innerHTML = b[_0x56ae("0x34")],
c.postPaint(a, b),
f()
})
};
g()
}
}
, {}]
```

You can see, how the fisrt this.prePaint has not transformed to this[_0x56ae("0xba")] and when this is called, it said undefined function.
But if i insert breaklines between all this "problematic" lines, it work. Like this:

```javascript

export const Painter = function (elements, data) {
let title = elements.title;
let container = elements.container;

this.prePaint = () => { };

this.paint = () => { };

this.postPaint = () => { };

let finalPaint = () => {

this.prePaint = () => { };

this.paint = () => { };

this.postPaint = () => { };

createPromise();
};

let createPromise = () => {
return new Promise((resolve, reject) => {

this.paint = () => { resolve() }

}).then(() => {
this.prePaint(elements, data);

title.innerHTML = data.title;
container.innerHTML = data.html;

this.postPaint(elements, data);

finalPaint();

});
}

createPromise();
};
```

I did fix this issue with this partial solution, but i don't know where more places of my code, will appear the same issue.

Thank you

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Keine Repository-Datei, kein Test, keine Version und keine Konfiguration wird genannt. Beginne damit, das bereitgestellte Painter-Beispiel durch die gulp-Obfuskationspipeline zu reproduzieren, und vergleiche die generierten Referenzen für this.prePaint, this.paint und this.postPaint. Als erledigt gilt dies, wenn der obfuskierte Code aufrufbare Eigenschaftsreferenzen beibehält, ohne dass eingefügte Zeilenumbrüche erforderlich sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript
Bereich
build-system, tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.