Source Code Obfuscation via Binary Instruction Set Transformation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing code obfuscation techniques, such as those applied to JavaScript, are inadequate in preventing attackers from understanding the purpose and control flow of programs, especially when dealing with high-level languages like JavaScript, as they retain the high-level structure and organization of the original code, making it easier for attackers to reverse-engineer.
Innovation Solution
The approach involves transforming high-level code into low-level processor-specific code, using compilers to generate new sets of code and corresponding interpreters for different processors, and employing finite state tables to encode and decode opcodes, thereby creating a new instruction set that is more difficult to reverse-engineer.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of manufacture
If high-level source code (JavaScript) is obfuscated using traditional techniques, then the code structure is preserved for easier debugging and maintenance, but attackers can easily reverse-engineer the code to understand its purpose and control flow
Solution Approach 1:
The patent replaces traditional text-based high-level code with a binary instruction set architecture (ISA) that executes via interpretation. This substitution transforms readable JavaScript into low-level binary opcodes that maintain functional equivalence while eliminating the high-level structure that attackers exploit for reverse-engineering.
Solution Approach 2:
The patent changes the fundamental representation parameters of the code from human-readable text to machine-level binary. By transforming the code into a different parameter space (binary ISA with custom opcodes), the patent achieves both obfuscation and functional preservation through the interpreter that translates binary back to executable operations.
2Object-affected harmful factors
If code is transformed into low-level binary instruction sets, then reverse-engineering difficulty increases, but debugging and understanding code purpose becomes more challenging
Solution Approach 1:
The patent introduces an interpreter as an intermediary layer between the binary ISA and the original high-level logic. This intermediary maintains the binary representation for security while providing a translation mechanism that allows debugging tools to interact with the code at a higher level of abstraction, thus preserving debugging capability without compromising obfuscation.
3Object-affected harmful factors
If custom binary instruction sets are used, then code obfuscation effectiveness increases, but device compatibility and execution environment requirements increase
Solution Approach 1:
The patent designs a universal binary ISA that can be interpreted across different platforms and devices. The interpreter serves as a portable execution environment that translates the custom binary instructions into platform-specific operations, enabling the obfuscated code to run on diverse devices without requiring native compilation for each platform.
Data Source
AI summary
Programs written in interpreted languages, such as JavaScript, are distributed in source form, which is helpful to attackers so that they can more easily derive the purposes and effects of a program. As discussed herein, a program's high-level code may be effectively obfuscated by transforming the program's code from its high-level programming language to low-level processor-specific language, such as x86 instructions for x86 processors, JVM bytecode for JVMs, or proprietary opcodes for a corresponding proprietary processor or interpreter. Additional obfuscation techniques can be applied the program's low-level processor-specific code.


