Det har blivit vanligt att distribuera programvara i former som är isomorfa till den ursprungliga källkoden. Ett viktigt exempel är Java bytecode. Eftersom sådana koder är lätta att dekompilera, ökar de risken för mahcious reverse engineering attacker. I tii papper beskriver vi utformningen av en Java kod obfus- ett verktyg som -genom tillämpning av kod transformationer - omvandlar ett Java program till en motsvarande som är mer difficuh att omvända ingenjör. Vi beskriver ett antal transformationer som fördunklar kontrollflödet. Transformationer utvärderas med avseende på potens (I vilken utsträckning är en människas läsare förvirrad?), motståndskraft (Hur väl är automatiska deobfuscation attacker motstås?), kostnad (Hur mycket tid / utrymme overhead läggs till?), och stealth (Hur väl blandas obfuscated kod in med den ursprungliga koden?). Motståndskraften hos många kontrollförändrande omvandlingar är beroende av ogenomskinliga predikats motståndskraft. Dessa är booleska värderade uttryck vars värden är kända för obfuscator men svåra att bestämma för en automatisk deobfuscator. Vi visar hur man konstruerar motståndskraftiga, billiga och smygande ogenomskinliga predikat baserade på intraktbarheten hos vissa statiska analysproblem såsom aliasanalys.
I REF infördes ogenomskinliga predikat, som är booleska uttryck vars sanningsvärde är känt under fördunklad tid men svårt att bestämma statiskt.
Manufacturing cheap, resilient, and stealthy opaque constructs
{'venue': "POPL '98", 'journal': None, 'mag_field_of_study': ['Computer Science']}