[Resuelto] ¿Cual es la mejor forma de depurar un JS semiofuscado?

Iniciado por AlbertoBSD, 17 Enero 2020, 02:42 AM

0 Miembros y 1 Visitante están viendo este tema.

AlbertoBSD

Seguramente muchos de ustedes han visto esos códigos javascript Semiofucados ejemplo:

Código (javascript) [Seleccionar]
!function(a){function k(k){for(var n,a,f=k[0],d=k[1],u=k[2],l=0,b=[];l<f.length;l++)o[a=f[l]]&&b.push(o[a][0])
....


Y asi le sigue por unos cuantos Kilobytes de codigo minificado.

Entonces esa es la pregunta, cual es la mejor forma de depurar que es lo que esta haciendo, pregunto por que javascript es bastante permisivo con la sintaxis.

Obvio primer paso:
-- Utilizar alguna de esas paginas para que el código se vea indentado y tabulado

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

engel lex

depsues de organizarlo haces el debug con las herramientas de navegador, usualmente el chrome te da suficiente info...

si aun es muy cuesta arriba, con un buen editor de codig (ej vs code) empiezas a hacer limpieza a mano del codigo, muchos meten if de un solo paso, ejemplo

xxx = 10 xor 5 ? no : si

y bueno 10 es 1010, 5 es 101 por lo tanto siempre sera false...

y resolver las variables de nombres tipo aslkdjd
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AlbertoBSD

Si ya veo, tal como me lo imaginaba mucho trabajo en libreta, reescribir codigo y depuración con el DOM.

Muchas gracias por la respuesta Engel siempre tan oportuno, un abrazo!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

engel lex

si, se torna fastidioso... pero despues de unas veces puedes hacerlo en unos minutos o como mucho un par de horas si es muy largo... sin embargo con el inspector del navegador te ayuda mucho a ver desofuscado el codigo... o por lo menos las funciones ofuscadas...

no se si habrá mejores depuradores de js
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MinusFour

¿Depurar o volver el código legible? Para depurar código minificado se utilizan los source maps. Es la mejor forma de ver en que parte del código original se encuentra el error o el comportamiento incorrecto. No tiene mucho sentido trabajar con el código minificado.

engel lex

Cita de: MinusFour en 17 Enero 2020, 14:17 PM
¿Depurar o volver el código legible? Para depurar código minificado se utilizan los source maps. Es la mejor forma de ver en que parte del código original se encuentra el error o el comportamiento incorrecto. No tiene mucho sentido trabajar con el código minificado.

indiscutiblemente... pero cuando te das con js minificado de una pagina X porque necesitas hacer por ejemplo scrapping, o con js ofuscado de alguna pagina virulenta, no vas a tener los sources XD
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

@XSStringManolo

Chrome Dev tools. Piensa que el navegador lo tiene que entender para poder correrlo. A veces es tan sencillo como ejecutarlo directamente y ver que hace o pasarle alguna función. Hay algunas páginas por ahí de retos de ofuscación en javascript y el 99% de ellos los hago directamente desde el navegador de android en la propia página usando el pseudo-protocolo, eval, el local-storage y las típicas funciones. Algunos hacen algo tipo de ofuscar el js "live" y si miras el cuerpo de la petición de envio te encuentras todo el código en el body.