Software Uniqueness: How and Why? Puneet Mishra Dr. Mark Stamp Department of Computer Science San José State University, San José, California
Agenda Introduction The need (Why) Applications (Where) Techniques (How) Results Conclusion
Introduction Biological SystemSoftware Genetic DiversityCloning 1 Individual != Extinction Dies of species 1 Flaw => System Destroyed
The need (WHY) Uniqueness Defined Obfuscation Vs. Uniqueness Break One Break All Obfuscation used at different places giving unique instances N Instances Increases the problem by N
Applications (Where) Key Protection DRM Code Obfuscation Software Watermarks Anti-Piracy Virus Protection
Techniques (How) Code Transformations Assembly Level Ideal C Language used Types of Transformations Code Reorganization Compiler Based Flow and Structure Miscellaneous
Code Reorganization Mathematical Transformations Redundant Code Breaking up variables Dummy Arguments to function calls Reordering the code Transforming to spaghetti code via goto
Compiler Based Optimizations might nullify Transformations Customized compiler for implementation Location to introduce transformations
Flow and Structure Modify Data Structures Change algorithmic implementation Risks Careful Mapping Required Difficult to Automate
Miscellaneous Applying Transformations Repeatedly Using pre-existing Obfuscators Operating System calls Makes the code platform dependent
Transformation Tool Pattern Matching Tool Looks for appropriate locations to insert code Implementation is non-trivial
Results Graph Original Vs. Transformed Assembly Code
Conclusion and Future Work Many Potential Applications Expected increase in Difficulty Ideal case by a Factor of N
Thank You!