Is there such thing as "Perfect Decompiler"?
La fonte originale è - in alcune lingue - irrecuperabile. Una versione del sorgente può essere costruita, ma mancherà di nomi significativi per le variabili. Mancheranno anche commenti e potrebbero avere espansioni di codice inline che sono ripetutamente confuse.
Si noti che l'ottimizzazione dei compilatori può rendere la fonte recuperata piuttosto oscura.
In altre lingue, vi sono sufficienti informazioni di debug che è possibile recuperare una versione ragionevolmente leggibile della fonte.
[perfect] mean the original source files with all the variable names/macros/functions/classes/if possible comments in the respective headers and source files used to get the binary)
Mai. Le macro del preprocessore non fanno parte dell'origine e vengono sempre perse per sempre.
"se possibili commenti" non ha molto senso. Immagino tu voglia dire che vuoi i commenti. In genere sono spariti per sempre.
Puoi, tuttavia, recuperare il binario da cose che mancano macro e commenti. Quindi la tua definizione di "perfetto" è incoerente.
binaries safe from reverse engineering?
No.
What are some of the best practices used to prevent reverse engineering of software?
Offri nuove versioni così velocemente che non c'è alcun valore nel reverse engineering della versione precedente.
Is it a major concern?
Solo per gli avvocati.
Also is obfuscation/file permissions the only way to prevent unauthorized hacks on scripts?
Che cos'è un "hack non autorizzato"? In effetti, cosa intendi per "hack" su una sceneggiatura?
Se vuoi scherzare con una sceneggiatura, devi solo scherzare con essa. A meno che, naturalmente, non sia su un server web e tu non lo sia. Quindi non hai accesso allo script, solo la pagina web presentata dallo script.