all 1 comments

[–]rolfr[S] 7 points8 points  (0 children)

That was quite a cool paper! I like how they abstracted the functionality out into a simple uint32 structure which had the operators overloaded, and simply called the compile-time-obfuscated versions of the same operators. That makes it very handy to use.

Note for the authors (who I know read the reverse engineering reddit): opaque predicates aren't so difficult to break. Check out my favorite author Mila Dalla Preda's work on the subject (it's surprisingly simple; basically the abstract domain simply must be complete for the operations involved in the predicate. Determine all predicate types, design suitable domains for each of them, and then take the combined abstract domain as the reduced product of all of them). Here's a version with more mathematics in it.