| |
| |
Preface | |
| |
| |
Acknowledgments | |
| |
| |
About the Author | |
| |
| |
| |
Introduction | |
| |
| |
Objectives | |
| |
| |
Intended Audience | |
| |
| |
| |
About this Book | |
| |
| |
| |
Introduction | |
| |
| |
| |
Software | |
| |
| |
| |
Intellectual Property | |
| |
| |
| |
Source Code Differentiation | |
| |
| |
| |
Source Code Correlation | |
| |
| |
| |
Object and Source/Object Code Correlation | |
| |
| |
| |
Source Code Cross-Correlation | |
| |
| |
| |
Detecting Software IP Theft and Infringement | |
| |
| |
| |
Miscellaneous Topics | |
| |
| |
| |
Past, Present, and Future | |
| |
| |
| |
Intellectual Property Crime | |
| |
| |
| |
The Extent of IP Theft | |
| |
| |
| |
Software | |
| |
| |
Objectives | |
| |
| |
Intended Audience | |
| |
| |
| |
Source Code | |
| |
| |
| |
Programming Languages | |
| |
| |
| |
Functions, Methods, Procedures, Routines, and Subroutines | |
| |
| |
| |
Files | |
| |
| |
| |
Programs | |
| |
| |
| |
Executing Source Code | |
| |
| |
| |
Object Code and Assembly Code | |
| |
| |
| |
Object Code | |
| |
| |
| |
Assembly Code | |
| |
| |
| |
Files | |
| |
| |
| |
Programs | |
| |
| |
| |
Scripts, Intermediate Code, Macros, and Synthesis Primitives | |
| |
| |
| |
Scripts | |
| |
| |
| |
Intermediate Code | |
| |
| |
| |
Macros | |
| |
| |
| |
Synthesis Primitives | |
| |
| |
| |
Intellectual Property | |
| |
| |
Objectives | |
| |
| |
Intended Audience | |
| |
| |
| |
Copyrights | |
| |
| |
| |
The History of Copyrights | |
| |
| |
| |
Copyright Protections | |
| |
| |
| |
Software Copyrights | |
| |
| |
| |
Allowable and Nonallowable Uses of Copyrighted Code | |
| |
| |
| |
Patents | |
| |
| |
| |
The History of Patents | |
| |
| |
| |
Types of Patents | |
| |
| |
| |
Parts of a Patent | |
| |
| |
| |
Patenting an Invention | |
| |
| |
| |
Special Types of Patent Applications | |
| |
| |
| |
Software Patents | |
| |
| |
| |
Software Patent Controversy | |
| |
| |
| |
Patent Infringement | |
| |
| |
| |
NPEs and Trolls | |
| |
| |
| |
Trade Secrets | |
| |
| |
| |
The History of Trade Secrets | |
| |
| |
| |
Uniform Trade Secrets Act (UTSA) | |
| |
| |
| |
Economic Espionage Act | |
| |
| |
| |
Aspects of a Trade Secret | |
| |
| |
| |
Trade Secret Theft | |
| |
| |
| |
Patent or Trade Secret? | |
| |
| |
| |
Software Forensics | |
| |
| |
| |
Forensic Science | |
| |
| |
| |
Forensic Engineering | |
| |
| |
| |
Digital Forensics | |
| |
| |
| |
Software Forensics | |
| |
| |
| |
Thoughts on Requirements for Testifying | |
| |
| |
| |
Source Code Differentiation | |
| |
| |
Objectives | |
| |
| |
Intended Audience | |
| |
| |
| |
Theory | |
| |
| |
| |
Diff | |
| |
| |
| |
Differentiation | |
| |
| |
| |
Types of Similarity | |
| |
| |
| |
Measuring Similar Lines | |
| |
| |
| |
Measuring File Similarity | |
| |
| |
| |
Measuring Similar Programs | |
| |
| |
| |
Implementation | |
| |
| |
| |
Creating and Comparing Arrays | |
| |
| |
| |
Number of Optimal Match Score Combinations | |
| |
| |
| |
Choosing Optimal Match Scores for Calculating File Similarity | |
| |
| |
| |
Choosing File Similarity Scores for Reporting Program Similarity | |
| |
| |
| |
Applications | |
| |
| |
| |
Finding Similar Code | |
| |
| |
| |
Measuring Source Code Evolution | |
| |
| |
| |
Source Code Correlation | |
| |
| |
Objectives | |
| |
| |
Intended Audience | |
| |
| |
| |
Software Plagiarism Detection | |
| |
| |
| |
The History of Plagiarism Detection | |
| |
| |
| |
Problems with Previous Algorithms | |
| |
| |
| |
Requirements for Good Algorithms | |
| |
| |
| |
Source Code Characterization | |
| |
| |
| |
Statements | |
| |
| |
| |
Comments | |
| |
| |
| |
Strings | |
| |
| |
| |
Theory | |
| |
| |
| |
Practical Definition | |
| |
| |
| |
Comparing Different Programming Languages | |
| |
| |
| |
Mathematical Definitions | |
| |
| |
| |
Source Code Correlation Mathematics | |
| |
| |
| |
Source Code Examples | |
| |
| |
| |
Unique Elements | |
| |
| |
| |
Statement Correlation | |
| |
| |
| |
Comment/String Correlation | |
| |
| |
| |
Identifier Correlation | |
| |
| |
| |
Instruction Sequence Correlation | |
| |
| |
| |
Overall Correlation | |
| |
| |
| |
Implementation | |
| |
| |
| |
Creating Arrays from Source Code | |
| |
| |
| |
Statement Correlation | |
| |
| |
| |
Comment/String Correlation | |
| |
| |
| |
Identifier Correlation | |
| |
| |
| |
Instruction Sequence Correlation | |
| |
| |
| |
Overall Correlation | |
| |
| |
| |
Comparing Programs in Different Programming Languages | |
| |
| |
| |
Comparing Sections of Code Other than Files | |
| |
| |
| |
Applications | |
| |
| |
| |
Functional Correlation | |
| |
| |
| |
Identifying Authorship | |
| |
| |
| |
Identifying Origin | |
| |
| |
| |
Detecting Copyright Infringement (Plagiarism) | |
| |
| |
| |
Detecting Trade Secret Theft | |
| |
| |
| |
Locating Third-Party Code (Open Source) | |
| |
| |
| |
Compiler Optimization | |
| |
| |
| |
Refactoring | |
| |
| |
| |
Detecting Patent Infringement | |
| |
| |
| |
Object and Source/Object Code Correlation | |
| |
| |
Objectives | |
| |
| |
Intended Audience | |
| |
| |
| |
Theory | |
| |
| |
| |
Practical Definition | |
| |
| |
| |
Extracting Elements | |
| |
| |
| |
Comparing Different Programming Languages | |
| |
| |
| |
Mathematical Definitions | |
| |
| |
| |
Object and Source/Object Code Correlation Mathematics | |
| |
| |
| |
Comment/String Correlation | |
| |
| |
| |
Identifier Correlation | |
| |
| |
| |
Overall Correlation | |
| |
| |
| |
False Negatives | |
| |
| |
| |
Implementation | |
| |
| |
| |
Creating Text Substring Arrays from Object Code | |
| |
| |
| |
Creating Arrays from Source Code | |
| |
| |
| |
Identifier Correlation | |
| |
| |
| |
Comment/String Correlation | |
| |
| |
| |
Overall Correlation | |
| |
| |
| |
Applications | |
| |
| |
| |
Pre-Litigation Detective Work | |
| |
| |
| |
Tracking Malware | |
| |
| |
| |
Locating Third-Party Code | |
| |
| |
| |
Detecting Open Source Code License Violations | |
| |
| |
| |
Source Code Cross-Correlation | |
| |
| |
Objectives | |
| |
| |
Intended Audience | |
| |
| |
| |
Theory, Implementation, and Applications | |
| |
| |
| |
Comparing Different Programming Languages | |
| |
| |
| |
Mathematical Definitions | |
| |
| |
| |
Source Code Cross-Correlation Mathematics | |
| |
| |
| |
Source Code Examples | |
| |
| |
| |
Statement-to-Comment/String Correlation | |
| |
| |
| |
Comment/String-to-Statement Correlation | |
| |
| |
| |
Overall Correlation | |
| |
| |
| |
Implementation and Applications | |
| |
| |
| |
Detecting Software IP Theft and Infringement | |
| |
| |
Objectives | |
| |
| |
Intended Audience | |
| |
| |
| |
Detecting Copyright Infringement | |
| |
| |
| |
Reasons for Correlation | |
| |
| |
| |
Steps to Find Correlation Due to Copying | |
| |
| |
| |
Abstraction Filtration Comparison Test | |
| |
| |
| |
Copyright Infringement Checklist | |
| |
| |
| |
Detecting Patent Infringement | |
| |
| |
| |
Interpreting the Claims | |
| |
| |
| |
Examining the Software | |
| |
| |
| |
Tools | |
| |
| |
| |
Determining Patent Validity | |
| |
| |
| |
Detecting Trade Secret Theft | |
| |
| |
| |
Identifying Trade Secrets | |
| |
| |
| |
Tools | |
| |
| |
| |
Miscellaneous Topics | |
| |
| |
Objectives | |
| |
| |
Intended Audience | |
| |
| |
| |
Implementing a Software Clean Room | |
| |
| |
| |
Background | |
| |
| |
| |
The Setup | |
| |
| |
| |
The Procedure | |
| |
| |
| |
Open Source Software | |
| |
| |
| |
Definition | |
| |
| |
| |
Free Software | |
| |
| |
| |
Open Source Licenses | |
| |
| |
| |
Open Source Lawsuits | |
| |
| |
| |
The Pervasiveness of Open Source Software | |
| |
| |
| |
Digital Millennium Copyright Act | |
| |
| |
| |
What Is the DMCA? | |
| |
| |
| |
For and Against the DMCA | |
| |
| |
| |
Noteworthy Lawsuits | |
| |
| |
| |
Conclusion: Past, Present, and Future | |
| |
| |
Glossary | |
| |
| |
References | |
| |
| |
Index | |