3 ms·
> AfterPack approaches this differently. Instead of layering reversible transforms on top of each other, AfterPack uses non-linear, irreversible transforms — cl
by layer8 7mo ago
> AfterPack approaches this differently. Instead of layering reversible transforms on top of each other, AfterPack uses non-linear, irreversible transforms — closer to how a hash function works than how a traditional obfuscator works. The output is functionally equivalent to the input, but the transformation destroys semantic meaning in a way that cannot be reversed — even by AfterPack itself. There's no inverse function. No secret key that unlocks the original.
That’s probably fun when trying to analyze bugs occurring in production. :)
- Retr0id 7mo agoWhat they describe is snake oil. Even if you assume it is mathematically possible in the general case (which is debatable!), it'll likely have a huge performance overhead. See https://en.wikipedia.org/wiki/Indistinguishability_obfuscation#Practicality https://en.wikipedia.org/wiki/Indistinguishability_obfuscati...
- throwup238 7mo agoWhat they’re describing is a polymorphic virus. A great analogy for SV startups. It works great in assembly, not so much for higher level languages.
- brookst 7mo agoIs all polymorphic code virii?
- throwup238 7mo agoNot necessarily, but in practice no one has any use for the technique except to obfuscate viruses, with the exception of academic research. The nonvirus equivalent is JITs which are present in all major browsers and tons of other runtimes, but they have no use for polymorphism except at a theoretical level (they all use it extensively, but at the type level).
- brookst 7mo agoI fought with polymorphic code quite a bit back when I was removing copy protection (many decades ago). There may be other cases where making debugging hard is desirable.
- throwup238 7mo agoGreat point! I forgot about copy protection. Although in my defense, in my line of work that’s indistinguishable from a rootkit :)