question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[QUESTION|BUG] Not Obfuscated Props

See original GitHub issue

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: image All is good, work fine. But I saw some strange result.

Obfuscator config

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.pidoor is exist and have value (9999). image
  • With keys obfuscate - prop kruzya.pidoor isn’t exist BUT prop kruzya._0x2bdd58didn’t have value (9999). image
  • 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);

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:18 (18 by maintainers)

github_iconTop GitHub Comments

5reactions
da411dcommented, Feb 14, 2021
(offtop) sori, psihanul 0JHQu9C40L0sINGC0Ysg0YPQttC1IDBMZlFzTkMxMExIUXNOQzcg0YHQstC+0LjQvCAi0LrRgNGD0LfRjyAwTC9RdU5DMDBMN1JnQT09Ii4g0KHRgtCw0LLRjCDQvtCx0YnQtdC/0YDQuNC90Y/RgtGL0LUgZm9vLWJhciDQuCDQvdC1IDBMTFJpOUdSMExIUmk5Q3kwTERRdWRHQjBZOD0=
1reaction
sanex3339commented, Feb 14, 2021

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:

var Status;
(function (Status) {
    Status[Status["Clear"] = 0] = "Clear";
    Status[Status["Low"] = 1] = "Low";
    Status[Status["Mid"] = 2] = "Mid";
    Status[Status["High"] = 3] = "High";
    Status[Status["Ultra"] = 4] = "Ultra";
    Status[Status["Kruzya"] = Infinity] = "Kruzya";
})(Status || (Status = {}));

console.log(Status.Kruzya);
console.log(Status.Clear);

properties (clear, low, mid and other properties of the enum) will be excluded because they also occur as values)

Status[Status["Clear"] = 0] = "Clear";
                 ^^             ^^
              excluded because value here

This exclusion will be global. So if property foo also used somewhere in the code - it will be excluded. In practice, I think, it may allow using renameProperties option more often because of the fewer amount of breaking cases.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Why proguard does not obfuscate method body?
I am using ProGuard to obfuscate my .jar program. Everything works fine, except for the fact that ProGuard does not obfuscate local variables...
Read more >
Shrink, obfuscate, and optimize your app - Android Developers
It works in conjunction with code shrinking such that once unused code has been removed, any resources no longer referenced can be safely...
Read more >
Troubleshooting - Dotfuscator Professional 6.5
If you are processing a package that contains third-party assemblies, we generally recommend that you do not obfuscate the third-party assemblies themselves.
Read more >
What is obfuscation and how does it work? - TechTarget
Obfuscation means to make something difficult to understand. Programming code is often obfuscated to protect intellectual property or trade secrets, ...
Read more >
Non-Malleable Obfuscation
Intuitively, a functionally non-malleable obfuscation has the prop- erty that an adversary, given the obfuscated code to a program, can only make.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found