javascript-obfuscator: [QUESTION|BUG] Not Obfuscated Props
I have obfuscated code on JS: https://pastebin.com/vLATku6x
Here is original code: TS | JS
How I saw TS didn’t support. But that isn’t my question.
I saw what when I run code I get next output:
All is good, work fine. But I saw some strange result.
How you can see in my config I was enable change (obfuscate) keys of objects, globals, properties names. So, I suggest what props like name, keys, index, list would change (obfuscated) too. But I didn’t saw that result.
So, my question- this is a bug or not? Why some props isn’t obfuscated?
UPD:
I also a bit edit code. So I will find more “interest” things.
- Without keys obfuscate - prop
kruzya.pidooris exist and have value (9999).
- With keys obfuscate - prop
kruzya.pidoorisn’t exist BUT propkruzya._0x2bdd58didn’t have value (9999).
- With and without keys obfuscate, props of class didn’t obfuscate (mb because this is a class? But one prop was obfuscated. MAGIC)
This
"debug"I will get by next code:
console.log("\n\n[KRUZYA]");
console.log("[kruzya]", kruzya);
// Auto check all exist
console.log("\n\n[AUTO]");
for (const key in kruzya) {
console.log(`[kruzya.${key}]`, kruzya[key])
}
// Manual check "should" exist props
console.log("\n\n[MANUAL]");
console.log("[kruzya.name]", kruzya.name);
console.log("[kruzya.pidor]", kruzya.pidor);
console.log("[kruzya.keys]", kruzya.keys);
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 18 (18 by maintainers)
(offtop) sori, psihanul
0JHQu9C40L0sINGC0Ysg0YPQttC1IDBMZlFzTkMxMExIUXNOQzcg0YHQstC+0LjQvCAi0LrRgNGD0LfRjyAwTC9RdU5DMDBMN1JnQT09Ii4g0KHRgtCw0LLRjCDQvtCx0YnQtdC/0YDQuNC90Y/RgtGL0LUgZm9vLWJhciDQuCDQvdC1IDBMTFJpOUdSMExIUmk5Q3kwTERRdWRHQjBZOD0=Reopened. I think that i can add a new option
renamePropertiesExludeUsedStrings(or so). When this option is enabled all property names that also occur in other strings will be auto-excluded.So for the part of your source code:
properties (
clear,low,midand other properties of the enum) will be excluded because they also occur as values)This exclusion will be global. So if property
fooalso used somewhere in the code - it will be excluded. In practice, I think, it may allow usingrenamePropertiesoption more often because of the fewer amount of breaking cases.I can’t fix this. Remember, if you have bugs with
renamePropertiesdisable it. This option is quite experimental and there is no way to improve how it works.So, in your case you have to disable
renamePropertiesoption orcontrolFlowFlatteningoptionMore simple example based on your code
With config: