Reverse engineering app.min.js

Salutare,

Am preluat un proiect (website) și trebuie să fac unele modificări pe partea de JS

În aplicație apelul către scripturile externe JS se face doar prin linia de mai jos:

<script charset="utf-8" type="text/javascript" src="/js/app.min.js"></script>

Foldereul JS are următoarea structură:

$ ls -l ./js
total 840
-rw-rw-r-- 1 stl stl  11637 oct 26 17:44 app.js
-rw-rw-r-- 1 stl stl 276999 oct 12 15:50 app.min.js
-rw-rw-r-- 1 stl stl  16692 oct 12 15:51 colorpicker.js
-rw-rw-r-- 1 stl stl    652 oct 12 15:51 convertor.js
-rw-rw-r-- 1 stl stl  13472 oct 12 15:51 FusionCharts.js
-rw-rw-r-- 1 stl stl  72174 oct 12 15:50 jquery-1.4.2.min.js
-rw-rw-r-- 1 stl stl 206991 oct 12 15:51 jquery.ui.datepicker.js
-rw-rw-r-- 1 stl stl 202203 oct 12 15:51 jquery.ui.js
-rw-rw-r-- 1 stl stl  29139 oct 12 15:50 jscolor.min.js
-rw-rw-r-- 1 stl stl   2344 oct 12 15:51 spring.js
-rw-rw-r-- 1 stl stl   2891 oct 12 15:50 widget.js

Dacă din dev.toolbarul din Chrome fac beautify pe app.min.js rezultă ~ 12.000 linii în timp ce js/app.js are cam 400 linii, deci app.min.js s-a obținut folosind tool-uri gen GRUNT (cu care nu am lucrat deloc).

Aveți ideea dacă (și cum) pot face reverse engineering pe app.min.js și să obțin fișierele de configurare care au condus la obținerea fișierului? Deci nu mă refer la unminify/deobfuscate.

Mulțumesc!

Ai vreun fisier .map ?

Nu, nu am.

E un app.js acolo. Pare suspicios de mic, dar poate mai contine informatii.

In principiu e imposibil de inversat o minificare de genul asta total. Poti sa formatezi mai frumos, si depinzand de unele informatii embeduite in .min.js poti cateodata reface fisierele originale. Dar variabile, clase, functii etc. sunt redenumite, si nu prea ai cum sa le iei inapoi.

Trebuie sa te uiti la procesul care genereaza app.min.js.

@horia141 Eu am înțeles că app.min.js e o combinație între restul fișierelor (de unde și dimensiunea mică a app.js), iar ce vrea el este să poată împacheta fișierele în aceeași ordine.


@stl: nu cred că poți automatiza asta în vreun fel, dar manual nu ar trebui să fie vreo problemă:

  1. Deschizi app.min.js și activezi word wrap;
  • Deschizi fiecare din celelalte fișiere și copiezi primele 20-30 caractere și le cauți în app.min.js;
  • Ai ordinea fiecărui fișier;
  • împachetezi cu uglify.js
1 Like

@iamntz Yup, n-am citit cu atentie, ca mentiona @stl de app.js.

Prima data vezi ce framework/frameworkuri e app.min.js ca nu iti scrie nimeni 12000 de linii fara sa il refoloseasca dupa.

Grunt/gulp e un sistem de automatizare care de obicei il setezi sa faci build (efectueaza testele si compileaza/descarca dependintele/face minify).

Dar nu ai nevoie de el o data ce ai codul. Iti faci propriul tau build cu webpack si gulp in 5 minute ca e clar de ce ai nevoie. Te mai poate ajuta Visual Studio Code.

Nu ai nici un Gruntfile.js / gulpfile.js in root-ul proiectului?