Byte coded .Net and Java programs reveal type
information through encoded type hierarchies, casts, field declarations and
method signatures. This facilitates byte code verification, but it also helps
reverse engineers. To obfuscate the type information, we combine three
transformations. Class hierarchy flattening removes as much of the type
hierarchy from programs as possible. Interface merging and object factory
insertion further remove type information from casts, method signatures, and
object creation sites. We evaluate these techniques with a prototype tool for
Java byte code. On real-life programs from the DaCapo benchmark suite, we
demonstrate that our approach effectively hinders human and tool analysis with
limited overhead
No comments:
Post a Comment