Control Flow Obfuscation for Featherweight Java + Efficient Fair Conjunction
summary
Two short, concrete results: a mechanical CPS translation to FJ_lambda lifts Featherweight Java (SSA input) into a library of CPS combinators (seq, if-else, loop, try/catch), handles exceptions, and provably reduces precision of common static control‑flow analyses; no full implementation yet, but author expects constant allocation overhead plus extra call/stack cost for recursive loops. The second defines fair semantics by structural recursion: an angelic semantics and a parametric scheduler using a well‑quasi‑order on (substitution, application) heights, which completes benchmarks (5 programs) where left‑biased or naive strategies diverge and matches optimistic performance.
AI-written summary · about
chapters (30)
- 0:00Introduction
- 0:45Control flow obfuscation overview
- 3:58Assumptions and problem
- 5:00Prior work and CPS translation
- 9:35CPS translation example in FJ
- 13:06Simple block translation
- 15:13Exceptions and loops handling
- 16:37If-else and try-catch translation
- 21:11SSA form and summary
- 24:22Potency against control analysis
- 27:11Conclusion and future work
- 28:19Q&A: Resource overhead
- 30:07Q&A: Reverse engineering from CPS
- 31:54Q&A: Obfuscation effectiveness
- 33:21Efficient fair conjunction intro
- 34:14MiniKanren and conjunction basics
- 37:10Conjunction order performance
- 40:01Conventional MiniKanren limits
- 42:53Angelic semantics for fair conjunction
- 45:24Parametric semantics and fairness
- 49:26Well quasi-ordering and fairness
- 51:37Fair semantics by recursion
- 53:06Evaluation methodology
- 56:17Optimistic performance results
- 56:59Pessimistic performance results
- 58:24Q&A: Well quasi-ordering measures
- 59:50Q&A: Overhead and relation evaluation
- 1:00:56Q&A: Refactoring for recursion
- 1:02:22Q&A: Future work and generalization
- 1:03:28Conclusion
related talks
22mEfficient OCaml compilation with Flambda 2
21mFlow-Analysis-Based Closure Optimization
29mA Flow-Insensitive-Complete Program Representation
30mCalculating Compilers for Concurrency
29mFlambda 2 Types: An abstract domain for static analysis of functional programs (mo...
16mBeyond Relooper: Recursive Translation of Unstructured Control Flow to Structu…
14mOn Fair Relational Conjunction
16mSoundly Handling Linearity
