├── Images ├── AntiClassDump.jpeg ├── FunctionWrapper.jpeg ├── IndirectBranch.jpeg ├── StringEncryption.jpeg └── InstructionReplacement.jpeg ├── CONTRIBUTING.md ├── .gitignore ├── .github └── ISSUE_TEMPLATE.md └── README.md /Images/AntiClassDump.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HikariObfuscator/Hikari/HEAD/Images/AntiClassDump.jpeg -------------------------------------------------------------------------------- /Images/FunctionWrapper.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HikariObfuscator/Hikari/HEAD/Images/FunctionWrapper.jpeg -------------------------------------------------------------------------------- /Images/IndirectBranch.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HikariObfuscator/Hikari/HEAD/Images/IndirectBranch.jpeg -------------------------------------------------------------------------------- /Images/StringEncryption.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HikariObfuscator/Hikari/HEAD/Images/StringEncryption.jpeg -------------------------------------------------------------------------------- /Images/InstructionReplacement.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HikariObfuscator/Hikari/HEAD/Images/InstructionReplacement.jpeg -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Contributions are not accepted unless you or the employer you represents accepts the following condition: 2 | - The repo owner reserves the right to re-use your contribution in any way he finds apporiate without further notice. 3 | - You agree that the latest revision of the license text will always apply to your contribution. 4 | - Code must be formatted using ``clang-format -style=LLVM -i`` 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/macos 3 | 4 | ### macOS ### 5 | *.DS_Store 6 | .AppleDouble 7 | .LSOverride 8 | 9 | # Icon must end with two \r 10 | Icon 11 | 12 | # Thumbnails 13 | ._* 14 | 15 | # Files that might appear in the root of a volume 16 | .DocumentRevisions-V100 17 | .fseventsd 18 | .Spotlight-V100 19 | .TemporaryItems 20 | .Trashes 21 | .VolumeIcon.icns 22 | .com.apple.timemachine.donotpresent 23 | 24 | # Directories potentially created on remote AFP share 25 | .AppleDB 26 | .AppleDesktop 27 | Network Trash Folder 28 | Temporary Items 29 | .apdisk 30 | 31 | 32 | # End of https://www.gitignore.io/api/macos 33 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Opening an issue 2 | Please fill out the following form with as much detail as possible. **Failing to do so might get yourself blocked.** 3 | 4 | - ![#f03c15](https://placehold.it/15/f03c15/000000?text=+)**Required** 5 | Affected source code or LLVM IR. It's best for you to create minimal source code that could reproduce the issue. Alternatively LLVM IR could be obtained by adding ``-S -emit-llvm`` to your normal CFLAGS or compile a normal binary with Bitcode Enabled. 6 | - ![#f03c15](https://placehold.it/15/f03c15/000000?text=+)**Required** 7 | Obfuscation Flags used. 8 | - ![#f03c15](https://placehold.it/15/ffa500/000000?text=+)**Strongly Recommend** 9 | LLVM's Logs in Debug mode if the issue is about crashed compiling process 10 | - ![#f03c15](https://placehold.it/15/ffa500/000000?text=+)**Strongly Recommend** 11 | Misbehaving passes. Try toggling pass switches to find out what pass(es) is triggering the issue 12 | - ![#f03c15](https://placehold.it/15/ffa500/000000?text=+)**Strongly Recommend** 13 | Details regarding the target platform 14 | 15 | ## 创建一个Issue 16 | 请按照如下模版尽可能详细的填写资料。**不按照规则提供我解决您的问题所需的信息将很有可能导致您的帐号被我的私人账号和Hikari组织永久黑名单** 17 | - ![#f03c15](https://placehold.it/15/f03c15/000000?text=+)**必须** 18 | 受影响源码或LLVM IR. 源码最好是最小复现问题的代码。IR可通过在CFLAGS末尾加上-S -emit-llvm或编译包含Bitcode的二进制获得。注意后者目前只支持iOS 19 | - ![#f03c15](https://placehold.it/15/f03c15/000000?text=+)**必须** 20 | 使用的混淆参数列表 21 | - ![#f03c15](https://placehold.it/15/ffa500/000000?text=+)**强烈建议提供** 22 | LLVM的完整日志 23 | - ![#f03c15](https://placehold.it/15/ffa500/000000?text=+)**强烈建议提供** 24 | 有问题的Pass,试着分别打开关闭混淆的pass来找出是哪个(些)Pass的问题 25 | - ![#f03c15](https://placehold.it/15/ffa500/000000?text=+)**强烈建议提供** 26 | 目标平台的细节。例如操作系统,处理器架构等。 27 | 28 | Please Refer to the following examples on how to create a issue that I could possibly provide any sort of help: 29 | 请参阅下文的例子来创建有足够的信息来让我提供任何形式帮助的Issue: 30 | 31 | - [#41](https://github.com/HikariObfuscator/Hikari/issues/41) 32 | - [#56](https://github.com/HikariObfuscator/Hikari/issues/56) 33 | - [#57](https://github.com/HikariObfuscator/Hikari/issues/57) 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deprecated 2 | 3 | As a toy project, Hikari had way too many design issues that makes it irrelavant in modern binary protection. 4 | You really shouldn't be using it anymore, instead, switch to a commercially supported implementation. 5 | If you absolutely must use Hikari, switch to a actively maintained fork like [NeHyci/Hikari-LLVM15](https://github.com/NeHyci/Hikari-LLVM15) where I occasionally show up and provide some insights / hints/ help. 6 | 7 | I also occasionally analyze existing open-source/commericial LLVM obfuscators in a professional setup, for analysis reports that are not restricted by an NDA, you can see a stripped down version of my reports [here](https://github.com/Naville/Nitpicking-OpenSourceObfuscators) 8 | 9 | 10 | # Hikari 11 | 12 | [English Documentation](https://github.com/HikariObfuscator/Hikari/wiki) 13 | Hikari(Light in Japanese, name stolen from the Nintendo Switch game [Xenoblade Chronicles 2](http://www.nintendo.co.uk/Games/Nintendo-Switch/Xenoblade-Chronicles-2-1233955.html)) is [Naville](https://github.com/Naville)'s 2017 Christmas Toy Project. 14 | 15 | New features are not expected to be open-sourced and instead the focus would be compatibility with future LLVM versions and Xcode versions. 16 | 17 | # License 18 | Please refer to [License](https://github.com/HikariObfuscator/Hikari/wiki/License). 19 | 20 | Note that this linked version of license text overrides any artifact left in source code 21 | 22 | # Building 23 | See [Compile & Install](https://github.com/HikariObfuscator/Hikari/wiki/Compile-&-Install) 24 | 25 | # Security 26 | All releases prior to and including LLVM8 are signed using [this PGP Key](https://keybase.io/navillezhang/pgp_keys.asc) from [Naville](https://github.com/Naville) . Verifiable on his [Keybase](https://keybase.io/navillezhang). 27 | 28 | 29 | # Demo 30 | **This only demonstrates a limited part of Hikari's capabilities. Download the complete demo and analyze yourself, link in the documentation** 31 | ![AntiClassDump](https://github.com/HikariObfuscator/Hikari/blob/master/Images/AntiClassDump.jpeg?raw=true) 32 | ![FunctionWrapper](https://github.com/HikariObfuscator/Hikari/blob/master/Images/FunctionWrapper.jpeg?raw=true) 33 | ![IndirectBranch](https://github.com/HikariObfuscator/Hikari/blob/master/Images/IndirectBranch.jpeg?raw=true) 34 | ![InstructionReplacement](https://github.com/HikariObfuscator/Hikari/blob/master/Images/InstructionReplacement.jpeg?raw=true) 35 | ![StringEncryption](https://github.com/HikariObfuscator/Hikari/blob/master/Images/StringEncryption.jpeg?raw=true) 36 | --------------------------------------------------------------------------------