Skip to content

MrChens/codeObfuscated

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

本工具是用于混淆方法名和类名

改良这个脚本工具的初衷:因为项目中使用JSPatch的热修复功能,然后上架的时候被Apple拒绝了,然后就有了这个混淆的工具。如果你也需要混淆JSPatch那么你可以复用obfuscation.list,本人已经曾经通过审核了.

使用本脚本做完了混淆后,可以使用github上整理好的上的class_dump中的工具做.h文件的dump查看混淆的效果.

建议:理论上来说能混淆任意的字符串,但是出于实用性obfuscation.list最好不要放置属性名,我只测试过函数名和类名的混淆,如果有兴趣对其他的字符串做混淆请自行测试。

该工具是由念茜的iOS安全攻防(二十三):Objective-C代码混淆为原型做了以下的修改

  • 防止生成的随机数有可能重复的问题
  • 防止每次编译程序的时候,codeObfuscation.h文件都会发生变化而导致的每次编译都要很久的问题

使用步骤:

  • 将混淆脚本obfuscated.sh和需要混淆的函数名/类名表obfuscation.list这2个文件放到工程的根目录下.

  • 重要的提示:如果是为了审核通过请不要将obfuscation.list在项目中引用(reference),否则就会和我一样虽然混淆了但是obfuscation.list暴露出了一切还是会被Apple拒绝的,因为你将文件引用入工程会导致它在打包时会将该文件一起打包进去的.

  • 配置Build Phase:在工程Build Phase中添加执行脚本操作,执行obfuscated.sh如图BuildPhase.

  • obfuscation.list中写入需要混淆的方法名和类名,如:
    @interface JPCore : NSObject //其中JPCore是需要混淆的类名 -(void)sample;
    -(void)seg1:(NSString *)string seg2:(NSUInteger)num;
    就这样写:
    JPCore
    sample
    seg1
    seg2

  • 脚本执行完了以后会生成一个codeObfuscation.h头文件,将此头文件加入XXX-Prefix.ch

      #ifdef __OBJC__  
          #import <UIKit/UIKit.h>  
          #import <Foundation/Foundation.h>  
          //添加混淆作用的头文件(这个文件名是脚本obfuscated.sh中定义的)  
          #import "codeObfuscation.h"  
      #endif  
    

在使用过程中如果有任何问题或者改良的方案欢迎提issue和pr.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages