Bug in obfuscate js code.
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript
- Área
- build-system, tooling
Línea de trabajo
No se especifica ningún archivo del repositorio, prueba, versión ni configuración. Empieza reproduciendo el ejemplo de Painter proporcionado mediante el pipeline de ofuscación de gulp y compara las referencias generadas para this.prePaint, this.paint y this.postPaint. Se considera hecho cuando el código ofuscado conserva las referencias a propiedades invocables sin requerir saltos de línea insertados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
First at all, sorry for my english, i will try to explain it as better as possible.
I have the following js code:
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):
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:
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
- Lenguaje dominante
- JavaScript
- Estrellas
- 103
- Forks
- 37
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de javascript-obfuscator/gulp-javascript-obfuscator
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
javascript-obfuscator/gulp-javascript-obfuscator#34 · 1 comentario ·
-
License for RepoAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 45/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
Throws error with Node.js 13.6Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
javascript-obfuscator/gulp-javascript-obfuscator#28 · 5 comentarios · 1 reacción ·
-
Bad regex causes code to failAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
javascript-obfuscator/gulp-javascript-obfuscator#27 · 1 comentario ·
Todos los issues de javascript-obfuscator/gulp-javascript-obfuscator
Issues similares
-
[ordering-review] workshop order graph: 1 confirmed ordering problem, 3 cycles are false positivesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
githubnext/gh-aw-workshop#5331 ·
Los mantenedores suelen responder en 1 día
-
Remove: 21 SexturyAbiertochannels:remove check:passed
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
Los mantenedores suelen responder en 4 días
-
[vika] console keeps a stale "in progress" turn after a daemon restart mid-runPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
volcengine/OpenViking#7011 ·
Los mantenedores suelen responder en 1 día
-
__VERSION__ within dist build is not replaced, causes missing version in XDM implementation detailsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Issue: ready for confirmation Reported on 2.4.9 Triage: Dev.Experience
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
magento/magento2#41773 · 1 comentario ·
Los mantenedores suelen responder en 5 días