Source Code Obfuscation via Binary Instruction Set Transformation

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improveease of debugging and maintenanceVSAvoidattacker ability to reverse-engineer
Core Design Contradiction:
Ease of manufactureVSObject-affected harmful factors

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.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

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.

Inventive Principle:
Principle #35Parameter changes

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

Engineering Contradiction:
Improvedifficulty for attackers to reverse-engineerVSAvoidease of debugging
Core Design Contradiction:
Object-affected harmful factorsVSEase of operation

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Object-affected harmful factors

If custom binary instruction sets are used, then code obfuscation effectiveness increases, but device compatibility and execution environment requirements increase

Engineering Contradiction:
Improvecode obfuscation effectivenessVSAvoiddevice compatibility
Core Design Contradiction:
Object-affected harmful factorsVSAdaptability or versatility

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.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS11349816B2Obfuscating source code sent, from a server computer, to a browser on a client computer
Publication Date: 2022.05.31 F5 NETWORKS INC
  • US11349816B2 patent drawing
  • US11349816B2 patent drawing
  • US11349816B2 patent drawing

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.