KiwiCompiler For iOS

1. Overview

This article mainly introduces the use of iOS source code confusion protection Xcode plug-in, readers need to have iOS development experience, otherwise it may be difficult to use.

2. Obtain Tool

After purchasing the KiwiCompiler, use the machine code generation tool, provided by the KiwiSec to extract the key of the computer to be bound. It will generate a unique KiwiCompiler toolkit based on the Key, authorization time, and enterprise information.

3. Install Plug-in

Plug-in version can be seamlessly integrated into the development environment by executing Python installation script, automatically replacing Xcode or NDK's original compiler [clang], without changing the development and compilation process of the project, thus reducing the cost of learning and using the product:

Xcode plug-in executes the Xcode file. The tool will automatically replace the default Xcode compiler, start the Xcode development tool, and automatically restore the original compiler after exit.

"1-2"

4. Header File

Copy the header files in the include directory to the iOS and NDK projects, reference them where needed.

5. Add KIWIOBF Tag

Add KIWIOBF tag to functions that need to be protected by confuse, to tell the compiler that the function needs to be protected by confuse. As shown below: "1-2"

6. Setting Compilation Parameters

The security compiler has default obfuscation parameters and can customize configuration parameters if the requirements are not met

Parameters that:

parameter effect description
-kce-fla transverse expansion Separate each basic block and use switch statment to control the running process.
The value range is 0 ~ 5, and the default value is 1
-kce-fla-chance transverse expansion ratio Random encryption is performed for functions that have not set labels or are not checked. If only the functions of tags are encrypted, 0 can be set
The value range is 0 ~ 100, and the default value is 15
-kce-bcf longitudinal expansion Copy the basic block in the original equation and mix in useless instructions. Add conditional transfer instructions at the beginning of the equation and become multiple basic block branches.
The value range is 0 ~ 5, and the default value is 1
-kce-bcf-prob Longitudinal expansion of the base block proportions Each encryption randomly overrides the proportion of the base block
The value range is 0 ~ 100, and the default value is 15
-kce-bcf-chance Longitudinal expansion function proportions Random encryption is carried out for functions that have not set labels or are not checked. If only the functions of tags are encrypted, 0 can be set.
The value range is 0 ~ 100, and the default value is 15
-kce-mbs Lightweight virtualization Lightweight virtualization switch, without changing the original logic, to replace the program basic block jump, function call for indirect jump, prevent static analysis of the target program[Only the professional edition does]
The default open
-kce-str String encryption Encrypts and protects the plaintext string in the project.
The default open
-kce-use-unity Unity project If you are a Unity project, you must open it.-kce-use-unity=1
The default close

Note: the larger the parameter, the longer the compilation time, and the higher the package expansion; It is recommended to set reasonable parameters

Confusing parameters for iOS projects are set in Other C Flags,Other C++ Flags 1-2

7. Build

The project compilation operation is the same as the original process. The iOS project executes the Build in Xcode.

8. Uninstall plugins

a.execute sudo uninstall.sh or python setup. py --clang=/path/to/clang --uninstall script to automatically restore the original compiler

9. Encryption effect reference

Reference resources:KiwiCompiler

results matching ""

    No results matching ""