Code Obfuscation Its limits in today Software & Hardware By Shahid Razzaq.

Slides:



Advertisements
Similar presentations
Cracking the Code of Mobile Application OWASP APPSEC USA 2012
Advertisements

Programming Paradigms and languages
Using Instruction Block Signatures to Counter Code Injection Attacks Milena Milenković, Aleksandar Milenković, Emil Jovanov The University of Alabama in.
Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong Fall 2009.
1/1/ / faculty of Electrical Engineering eindhoven university of technology Introduction Part 3: Input/output and co-processors dr.ir. A.C. Verschueren.
.NET IL Obfuscation Presented by: Sarath Chandra Dorbala.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Programming Logic & Design First Edition by Tony Gaddis.
Great Theoretical Ideas in Computer Science.
OORPT Object-Oriented Reengineering Patterns and Techniques 12. Analyzing Dynamic Behavior Orla Greevy & Adrian Lienhard.
Computer Organization and Assembly language
Software Design Division 秘 CONFIDENTIAL Panther Content Security Mar. 14, 2014 Sony Corporation.
Chapter 3 Software Two major types of software
Arithmetic logic unit (ALU)
Detailed Technical Feature Presentation Background Information The Importance of Software Software Roadblocks Development Environment DSP Development Cycle.
The PHP Story. PHP Story PHP is a programming language. Incorporate(join) sophisticated business logic. Widely used general purpose scripting language.
Formal languages and automata theory Andrej Bogdanov The Chinese University of Hong Kong Fall 2011.
Code Injection and Software Cracking’s Effect on Network Security Group 5 Jason Fritts Utsav Kanani Zener Bayudan ECE 4112 Fall 2007.
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
Trying to like a boss… REVERSE ENGINEERING. WHAT EVEN IS… REVERSE ENGINEERING?? Reverse engineering is the process of disassembling and analyzing a particular.
An Introduction Chapter Chapter 1 Introduction2 Computer Systems  Programmable machines  Hardware + Software (program) HardwareProgram.
Application Security Tom Chothia Computer Security, Lecture 14.
A data structure model: basic representation of data, such as integers, logic values, and characters homogeneous data structures, such as arrays and stringsheterogeneous.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
Programming 1 1. Introduction to object oriented programming and problem-solving.
Introduction to Programming Peggy Batchelor.
What is a Computer? An, electrical machine, that can be programmed to accept data (input), process it into useful information (output) and store it away.
Computer system overview1 The Effects of Computers Pervasive in all professions How have computers affected my life? How have computers affected my life?
Scalable Game Development William Roberts Senior Game Engineer
INTRODUCTION SOFTWARE HARDWARE DIFFERENCE BETWEEN THE S/W AND H/W.
Visual C++ Programming: Concepts and Projects
EECS 354 Network Security Reverse Engineering. Introduction Preventing Reverse Engineering Reversing High Level Languages Reversing an ELF Executable.
Topic 1Topic 2Topic 3Topic 4Topic
Lead Black Slide. © 2001 Business & Information Systems 2/e2 Chapter 5 Information System Software.
An Introduction to Visual Basic.NET. What is.NET.Net is a new framework for developing windows-based and web-based applications within the Microsoft environment.
School of Computer Science & Information Technology G6DICP Introduction to Computer Programming Milena Radenkovic.
The Central Processing Unit (CPU) and the Machine Cycle.
McGraw-Hill/Irwin Copyright © 2013 by The McGraw-Hill Companies, Inc. All rights reserved. Chapter 4 Computer Software.
Vikas Gonti. Dictionary Meaning: To confuse, to make obscure a problem with extraneous information or to darken. - In Terms of Technology:
Computer Architecture 2 nd year (computer and Information Sc.)
Survey of Program Compilation and Execution Bangor High School Ali Shareef 2/28/06.
 Programming - the process of creating computer programs.
By: Cheryl Mok & Sarah Tan. Java is partially interpreted. 1. Programmer writes a program in textual form 2. Runs the compiler, which converts the textual.
COEN 311 Computer Organization & Software Chapter 1 Introduction and Terminology (Prof. Sofiène Tahar) Concordia University Electrical & Computer Engineering.
Compilers and Interpreters
Review A program is… a set of instructions that tell a computer what to do. Programs can also be called… software. Hardware refers to… the physical components.
Exploitation Development and Implementation PRESENTER: BRADLEY GREEN.
Software Reverse Engineering Binary analysis: concepts, methods and tools. Catalin Patulea Mar 5, 2008.
Reverse Engineering Contemporary Countermeasures By: Joshua Schwartz.
Turing’s Legacy: The Limits Of Computation. Great Theoretical Ideas In Computer Science Anupam GuptaCS Fall 2005 Lecture 26Nov 29, 2005Carnegie.
Computer Systems Nat 5 Computing Science
What Do Computers Do? A computer system is
Component 1.6.
Computer Systems Nat 5 Computing Science
Topic: Difference b/w JDK, JRE, JIT, JVM
Reverse engineering and debugging .Net applications
مقدمة في الحاسب الآلي T. Arwa Alsarami.
Mobile Development Workshop
Security by Obscurity: Code Obfuscation
Turing’s Legacy: The Limits Of Computation.
Identifiers.
Obfuscation in .NET Atchyutuni Shilpa CS-795.
What time is it?. What time is it? Major Concepts: a data structure model: basic representation of data, such as integers, logic values, and characters.
Obfuscation Aparna Belhe CS-795.
A Top-Level View Of Computer Function And Interconnection
Programming language translators
Parts of the Computer
Hello World Program In Visual Studio and Debugging
Presentation transcript:

Code Obfuscation Its limits in today Software & Hardware By Shahid Razzaq

What is this Obfuscation? Literal Meaning of Obfuscation: The word ‘obfuscation' refers to the concept of concealing the meaning of communication by making it more confusing and harder to interpret. The word ‘obfuscation' refers to the concept of concealing the meaning of communication by making it more confusing and harder to interpret. Code Obfuscation: Code obfuscation is the generation or alteration of source code and/or object code in such a way that it is easy for the computer to comprehend but considerably difficult to reverse engineer. Code obfuscation is the generation or alteration of source code and/or object code in such a way that it is easy for the computer to comprehend but considerably difficult to reverse engineer.

Reverse Engineering Code Normal Engineering: Dude writes code -> Dude compiles -> Dude parties with the binary Reverse Engineering: Evil dude gets the binary -> Uses powerful tools (e.g IDA Pro) to gain knowledge about program -> Gets to know code structure, control flow, and valuable assets, keys, alrogithms, PI IDA Pro: How much can it do?

How can Obfuscation Help Types of Obfuscation: Code Structure Obfuscation Code Structure Obfuscation Data Obfuscation Data Obfuscation Control Obfuscation Control Obfuscation Preventive Obfuscation Preventive Obfuscation Effects of Obfuscation on Code: Code logic doesn’t change Code logic doesn’t change Decreases footprint of code Decreases footprint of code Decreases performance (w.r.t time) Decreases performance (w.r.t time) Harder for developers during product cycle & possibly support Harder for developers during product cycle & possibly support

Widely used in Intermediate Compiled Languages.Net, Java Dotfuscator (.Net, Microsoft Visual Studio) Dotfuscator (.Net, Microsoft Visual Studio) ProGuard (Java, free) ProGuard (Java, free) Factor that prevent use of Obfuscation Cost of Obfuscation Cost of Obfuscation Execution time of code Execution time of code High Program complexity High Program complexity Obfuscation in Action

Limits to Obfuscation No obfuscation enough against extremely dedicated hackers Prevents against easy reverse engineering using tools How can Software Help: Built-in support in OS Built-in support in OS Public APIs Public APIs Hardware Assisted Obfuscation: Use of hardware for decryption Use of hardware for decryption How are decryption keys transferred? How are decryption keys transferred?

Obfuscation in Future Interesting Scenario: ‘Brain’ obfuscation Processor detached from memory Processor detached from memory Non conventional use of processor registers Non conventional use of processor registers Memory kept relatively in-accessable, encrypted Memory kept relatively in-accessable, encrypted Obfuscation in design, like a real brain. Example? Obfuscation in design, like a real brain. Example?

What does this do? #include #include main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,main(- 86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,- 27+t,a)&&t==2?_<13?main(2,_+1,"%s %d %d\n"):9:16:t<0?t<- #{l,+,/n{n+,/+#n+,/#\;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \;;{nl'- {}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \}'+}##(!!/"):t<-50?_==*a?putchar(31[a]):main(- 65,_,a+1):main((*a=='/')+t,_,a+1) :0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,"!ek;dc [w]*%n+r3#l,{}:\nuwloca-O;m.vpbks,fxntdCeghiry"),a+1);}

Q & A