[原创]一个基于LLVM6.0的开源加固Hikari光
21岁, 学生desu。
闺女的Github地址 欢迎点Star
安装指南请看Wiki
已实现功能
- 优化的伪控制流
- 控制流平坦化
- 指令替换
- 反class-dump(部分实现。具体看Wiki)
- 字符串加密。支持中文和Objective-C字符串,且实现更安全
- 间接跳转化
- API调用混淆
- 基本块分割
- 第二种不可描述的抗F5方式(仅限私有版本)
- 代码完整性校验(可用于对抗静态/动态Patch/内连Hook/调试器,仅限私有版本)
开源版效果截图







在私有的版本中还额外增加了二进制校验及更多功能上的优化,已知的Bug请看README。总体来说目前稳定性可以在产品中使用了。开源版中现有的Bug可能不再会将私有版本中的修复向回移植,因为维护开源版本和私有版本还挺累的。
附件为一个打开了包括私有混淆在内所有混淆和保护的Demo。编译给macOS,编译自如下代码:
#import <Foundation/Foundation.h>
#import <CoreFoundation/CoreFoundation.h>
#import <dlfcn.h>
#import <objc/runtime.h>
#include <unistd.h>
#include <sys/ioctl.h>
@interface foo:NSObject
+(void)foo;
+(id)foo2;
@end
@implementation foo
+(void)foo{
NSLog(@"FOOOO");
}
+(id)foo2{
NSMutableDictionary *doo=[NSMutableDictionary new];
[doo setObject:@"你好" forKey:@"世界"];
return doo;
}
@end
@implementation foo2:foo
+(void)foo{
[super foo];
NSLog(@"FOOOO2");
}
@end
void fooooooo(int i){
if(i%2==0){
NSLog(@"You");
}
NSLog(@"Fuck");
}
int main(){
NSLog(@"Fuck");
[foo foo2];
[foo2 foo];
fooooooo(3);
return 0;
}
Some Men Just Want to Watch the World Burn ----- Alfred Pennyworth
