SkillAgentSearch skills...

Confuse

iOS混淆加固差异化翻新加密工具,模拟人工手动混淆,识别上下文 ,支持继承链、类型识别、方法多参等复杂高级混淆。source-to-source obfuscation of iOS projects,Xcode's refactor->rename. 告别插入毫无关联的垃圾代码、弃用无脑单词随机拼接替换,模拟正常开发,一款最好的混淆最彻底的Mac App Tools。支持OC(Objc、Objective-C)、C、C++(Cocos2d-x、Cocos2dx和Lua游戏开发)、Swift、C#(Unity)混淆,可用于ios马甲包游戏SDK混淆,减少账号调查过机审上架过包过审4.3、2.3.1、2.1

Install / Use

/learn @520coding/Confuse
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<a name="tMJSz"></a>

china-2.png

<a name="beqYw"></a>

English | 中文

<a name="wNymF"></a>

Preface

By chance, I ran into the iOS vest bag business . I also used other tools on the market in the early stage, but the actual effect was not ideal. After a lot of practice, a full-featured obfuscation tool has been developed . The tool have been packaged into a Mac application which support multiple programming languages, such as OC, C++, Swift. More functions are still being packaged, so stay tuned. <a name="ixxhF"></a>

Prompt

In order to let everyone get started quickly and compare the effects of confusion, a new test project confuse_test was created. If you encounter problems during actual use, welcome to extend the test project. Please indicate the bug details in the project, and there will be rewards. <a name="sbrhD"></a>

Test engineering description:

confuse_test: Contains oc, c++, swift and some third-party use cases to quickly verify the overall effect
confuse_test_oc: only contains oc, which is convenient to verify the effect of each function
confuse_test_oc_fast: only contains oc, which is convenient to quickly verify the effect of some functions
confuse_test_swift: only contains swift, the code comes from Apple's official example code, which is convenient to verify the effect of each function

The source code can be modified arbitrarily to verify the actual effect. It is recommended to use different tools to confuse the above test projects or third-party open source library projects to compare the effects.

Instructions for the old version before 1.2.0:   Introduction: No grammar and compilation requirements are involved, but partial omissions or corrections may occur after confusion, please add to the blacklist filter by yourself.   Applicable projects: RN and other mixed projects that have not yet been adapted.   Conditions of use: temporarily unavailable, reopen later

<a name="Yng3v"></a>

Readme

<a name="6e674183b5d2f1af15baaa27bb7c93b2"></a>

The essence of vest bag:

  1. The first stage reduces the repetition rate. The initial version of my development is basically similar to other tools currently on the market, mainly the basic function of global substitution of class name, method name, and variable name.
  2. The second stage reduces the similarity (normal distribution of the same elements). At present, the tool has been greatly improved after optimization and continuous reconstruction, and it basically meets the requirements in this respect. For details, see the following function introduction. There are two sides to everything. The more powerful the function, the longer it will take to confuse. If your project is large, it is possible to confuse for a few hours. Please do not take offense, and continue to optimize. <a name="fc8a03eacc987f4c5e94e6dc0086ea50"></a>

Distinguish the pros and cons of tools

In fact, to identify the pros and cons of a tool, just look at the following points:

  1. Can modify all attributes, methods, and all parameter names of methods
  2. Modify the name of the member (attribute, method), can it be distinguished by class, or a simple global replacement
  3. Can modify the method with block parameters, a typical network request

For example:+ (BOOL)post:(NSString *)url parameters:(NSDictionary *)parameters success:(HttpRequestResponse)success error:(HttpRequestResponse)error;

  1. The length of the changed name of the method name and attribute name (this tool can guarantee that 60~80% of the changed name is a common word, such as name, title, etc., and ensure that it does not conflict with the system.~~Completely abandon the simple practice of relying on a large number of word libraries to ensure the uniqueness of naming~~, The real simulation of manual development)
  2. Modify the layout (Frame, Masonry, SDAutoLayout)
  3. Is the code inserted or "garbage" (this tool creates custom controls, encapsulates network requests, and uses MVC pattern association between files to completely bid farewell to "garbage" and mix the spurious with the genuine).
  4. Not to mention "Who else..." can identify macros, distinguish contextual content such as inheritance chains, and intelligently identify unmodifiable parts

For example: + (void)init ;-(void)reloadData; basically can be changed, who else can do it? "

  1. Normal projects (or third-party libraries) basically do not report errors after obfuscation (except for some individual improper grammars that cause confusion and report errors) <a name="426215c094f184f34acdb12593ddb1fc"></a>

Features

confuse is a confusion tool that simulates manual development as much as possible, imitates some functions of Xcode, and avoids machine core 4.3, 2.1, 2.3.1, account surveys, etc.<br />Goal: Simulate manually modify everything that can be changed , which is why this tool only has a blacklist and no whitelist<br />The detailed functions are as follows (the basic functions are not described, see other tools for details): <a name="82f2e3582d1466241460f1564b36b2a6"></a>

Completed

The following functions are supported:

  1. Blacklist (secondary) filtering, freely control the obfuscated content of each function, and adapt to almost all projects.
  2. Confusion percentage control, you can freely adjust according to the actual needs of your own project
  3. Smart noun substitution:
    1. When renaming, use the combination of related type existing information + similar semantics + type + some old vocabulary, and filter sensitive words. At the same time, users can also customize sensitive words.~~Deprecate'random word brainless combination'~~
    2. Different types of members with the same name -> different types of members with different names, and different types of different name members -> different types of members with the same name, simulating normal development. Members refer to methods, attributes, and functions
  4. Intelligent identification of unmodifiable parts: Identifying systems, third parties, and Pod methods through types and inheritance chains is not a'simple' equality judgment, for example:
    1. Class method: + (void)init; in principle, it can be changed anywhere
    2. Object method:-(void)reloadData; can be changed if it is not a subclass of UITableView
    3. Property: @property (readonly) NSUInteger length; it can be changed if it is not a subclass of NSString <a name="7e02145ffab0f7184b0a6b92e79d9acd"></a>

General part

  1. [Project Configuration], as long as you select the project path, other default configurations will be automatically completed
    1. Global setting "Ignore path", support regular, better use with blacklist
    2. ' xcodeproj' setting, for multiple xcodeproj projects and xx.xcodeproj is not in the project root directory
    3. 'Scheme' is confused and consistent with Xcode
    4. 'Debug mode', It is convenient to view the comparison before and after the modification in the source file, and insert some special annotations to facilitate the location of the bug.
    5. 'Hybrid mode', this mode is used to process the swift call oc part of the mixed project, to ensure that the call relationship is maintained after confusion
    6. 'proto' setting, used for separate obfuscation of protobuf files
    7. 'Environmental inspection mode' setting, which is convenient for correcting irregular codes in advance
    8. 'Reference project root path' setting, read the word and UUID of the reference project
    9. 'Sensitive words' filtering
    10. 'Close Output', annotated NSLog, print and other debugging statements
    11. 'Version iteration confusion', iteratively update after review, continue to use the last time (you can also choose the version arbitrarily) to obfuscate the record incremental confusion, maintain version continuity, and simulate normal development. Advantages: Development and obfuscation are synchronized and independent . The main functions currently support update confusion
  2. ~~[Antivirus], ~~~~Xcode poisoning, XCSSET Malware~~
    1. ~~'UUID suffix', the virus will randomly insert UUID with a fixed suffix, regular scanning~~
    2. ~~'Script path feature', a suspicious script will be executed before virus compilation, support regular scanning~~
    3. ~~'Run script code flag', a suspicious script code will be executed before virus compilation, support regular scanning~~
  3. [Resource replacement], specify the resource folder that needs to be replaced before obfuscation , and automatically replace the file with the same name, which is convenient and quick
  4. [Modify sks],modify the layout and node names of sks files in SpriteKit
    1. 'Run splicing name', which is used for the image name generated by splicing strings at runtime
  5. [Remove comment], identify single-line, multi-line comments
  6. [Modify picture], each sub-function can be run independently
    1. 'Custom path', convenient for debugg
View on GitHub
GitHub Stars2.1k
CategoryDevelopment
Updated14h ago
Forks265

Languages

Objective-C

Security Score

85/100

Audited on Mar 27, 2026

No findings