Top Banner
Transformations for Obfuscating Object-Oriented Programs Name: Hao Yuan Supervisor: Len Hamey ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 1
24

Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Dec 19, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Transformations for Obfuscating Object-Oriented Programs

Name: Hao YuanSupervisor: Len Hamey

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 1

Page 2: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Agenda

Introduction Transformations Conclusion

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 2

Page 3: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Problem

Programmers Protected Secured

Reverse engineers Decompile the code

Opposite goals

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 3

Page 4: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Aim

Describe ways to transform the object-oriented programs

Hard to understanding (confuse human reader)

Difficult to reverse engineer (confuse machine)

Obfuscation examples

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 4

if (true){ if (!true){ execute;}

exit;} else{exit;}

else{execute;}

int A=3; int a1=1;int a2=2;

Page 5: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Significance

Source codes are easily stolen and modified Nolan’s Decompiling Java Reuse, misuse, attack

Protect source code and prevent automated reverse engineering

Watermarking, obfuscation, tamper-resistance Obfuscation is the most effective method

▪ protect software against malicious reverse engineering▪ make the code more complex and confusing

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 5

Page 6: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

What Has Been Achieved

Obfuscating tools Allatori Dash-O-Pro Proguard RetroGuard yGuard (Free) Zelix Klassmanster

No guarantee Perfect obfuscator

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 6

Page 7: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Evaluation of Obfuscation

Strength can be measured by: Potency

E(P’)/E(P)-1 Confuse human reader

Resilience Trivial, weak, strong, full, one-way Confuse automated reverse engineering

Cost Free, cheap, costly, expensive Creation, execute time

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 7

Page 8: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Agenda

Introduction Transformations Conclusion

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 8

Page 9: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Class Level Transformations

Relocate the frame of programClass combination

Simple combination Complex combination

Class promotionClass splitting

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 9

Page 10: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Method Level Transformations

Affect addressing the methods and the control flow of programs

Method InterleavingMethod SplittingLoop transformationAdd irrelevant code

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 10

Page 11: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Variable Level Transformations

Operate on the data structuresChange EncodingVariable promotion

Variable to object Local variable to global variable

Variable splitting

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 11

Page 12: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Name Level Transformations Typically trivial to perform and reduce

the amount of informationLayout obfuscation:

Affect the comprehensibility of the program removing debugging information and

comments renaming identifiers

Name overloading Same identifier Different identifier

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 12

Page 13: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Agenda

Introduction Transformations Conclusion

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 13

Page 14: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Discussion

Applying one level’s transformations may be not very efficiency E.g. name level transformations, potency

but not resilience. Combine different levels’

transformations may perform much better Name level should be applied

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 14

Page 15: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Illustration of Implementation

Viewing current month’s calendar

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 15

public class MonthView{…;}

Page 16: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Implementation (cont.)

Promote the variable to object and class splitting

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 16

public class MonthView{…;}public class ShowMonth {…;}public class MonthNameAndDays

Page 17: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Implementation (cont.)

Method splitting and classing splitting techniques

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 17

public class Print { public static void prt(String s) { System.out.println(s); } public static void prt1(String s){ System.out.print(s); } public static void prt(int i){ System.out.print(i); } public static void prt() { System.out.println(); }}

Page 18: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Implementation (cont.)

Layout obfuscation technique

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 18

public class MV{…;}public class P {…;}public class MND { String[ ] m; int d [ ];…;}public class S {…;}

Page 19: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Implementation (cont.)

Variable splitting and variable promotion

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 19

public int ls=0;public int ls1=1;

Page 20: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Implementation (cont.)

Adding variables and fingerprint code

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 20

public double ls;public int ls1;private double xprivate double y

private static void check_std(int k) {…;}

Page 21: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Implementation (cont.)

Name level obfuscation transformation Same identifier Remove the layer

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 21

Page 22: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Conclusion

Four level transformations Class level Method level Variable level Name level

Most of them seem to produce acceptable substitutes for original source code

Original and obfuscated codes produce identical behavior

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 22

Page 23: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Future recommendation

New obfuscating transformations Quality of obfuscation

Study of measuring potency, resilience and cost

Does the order matter: effects of composing obfuscations

together interaction and ordering between

different transformations

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 23

Page 24: Name: Hao Yuan Supervisor: Len Hamey ITEC810 ProjectTransformations for Obfuscating Object-Oriented Programs1.

Question?

ITEC810 Project Transformations for Obfuscating Object-Oriented Programs 24