ipaguard

自动修改/翻新/混淆/OC/iOS代码,自动替换类名,方法名

由来

网上有很多关于如何混淆iOS源码的方法,但是都不够智能,生成的方法类名要么千奇百怪,要么aaaabbbxxx这种完全毫无意义的名称,要么只能修改单个文件,多个文件根本无法关联,我就想有什么方法可以像真人一样去修改源码,符合语义,不是胡编烂造的方法名,还可以自动修改相关联的文件, 还能自己自定义单词库,于是就有了这个工具。

演示视频​v.youku.com/v_show/id_XNTkyMDQzMzg2OA==.html

划重点

1. 该工具可以让你一键翻新代码,但是不是生成完整的xcode项目,需要你自己新建一个xcode项目,然后把翻新的文件拖入到新的项目中。

2. 该工具只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。

3.目前免费使用,免费使用,免费使用,重要的事情说三遍

几个效果展示

使用说明

下载项目,官网下载:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具

注意:

说明中提到的路径均为绝对路径,提到的逗号,都为英文逗号。使用工具运行成功后,需要自己新建OC项目再将修改后的代码与资源文件拖入新建的工程。

功能说明:

1.自动修改Object-C类名,方法名。
2.自动添加类名前缀,后缀。
3.自动修改分类,自定义是否修改分类。
4.自动过滤系统方法与自定义方法。
5.混淆图片资源,自动添加md5值。
6.可自定义混淆字库。
7.自定义修改范围,提供多种规则选择,让修改更便捷。
8.自动添加介词,使生成的名称更符合语义。
9.自定义后缀规则。
10.自动添加源码注释。
11.支持配置文件设置,对程序员更友好。
12.自定义想要过滤的方法,直接贴上方法名,系统自动解析。
13.支持修改属性全局开关
14.支持修改方法全局开关
15.支持属性声明乱序
16.支持方法声明乱序
17.支持同文件内部多个类声明是乱序(指:@class xxxx)
18.支持头文件import乱序
19.支持静态常量定义乱序
20.支持interface类声明乱序
21.支持extentsion扩展声明乱序
22.支持implementation扩展声明乱序
23.支持代理声明乱序
24.支持block声明乱序
25.支持遵循代理乱序

未来可能添加的功能:

1.随机生成全局属性前缀,例如将_下划线修改为self.,或者将self.修改为下划线。
5.枚举顺序进行随机处理。
7.静态常量定义顺序进行随机处理。
8.宏定义顺序进行随机处理。

说明文档会不定期更新,如遇到问题先检查是否依照说明文档的定义进行配置。

1. 源文件路径/import_path(必选)

OC项目文件路径包含代码文件与资源文件

如下图

2. 导出路径/export_path(必选)

OC项目导出路径。

注意,本工具并不能帮你生成完整的OC项目,只会生成OC代码文件和复制修改项目内部的资源

3. 直接复制的路径/copy_only_pathes(可选)

直接复制,忽略的文件名,多个路径以,逗号隔开

4. 直接复制的文件名(不包含后缀)/copy_only_names(可选)

直接复制,忽略的文件名,不包含后缀

例:UISheetView.h 只需要输入UISheetView,多个文件用 , 逗号隔开(注意全半角,逗号为英文逗号)

5. 不进行修改的文件或文件夹/no_change_pathes(可选)

深度读取,但是不会进行更改,如果引入了其他修改了的类,会相应的修改

深度读取(说明):会读取文件内部的类比与项目内其他类进行关联

例:xxxx/Classes/Models 不想修改,则输入这个文件夹的绝对路径, 如只输入Models,则所有包含名为Models的文件或文件夹都会标记为只读取不修改,多个文件和类用, 逗号隔开(注意全半角,逗号为英文逗号)

6. 不修改的文件或类的前缀名(区分大小写)/no_change_class_prefix_names(可选)

例:不想所有以MJ开头的类或文件,则输入MJ, 多个文件和类用, 逗号隔开(注意全半角,逗号为英文逗号)

7. 不修改的文件后缀名(区分大小写)/no_change_class_prefix_names (可选)

如第六条。Model,Info -->不修改以Model,Info为结尾的文件或类

8. 只修改类名的文件名或类名/only_change_clsname_names (可选)

深度读取,只修改类名,不修改内部属性与方法,这个优先级最低,如果之前的条件包含了本参数中的路径,则不生效

9. 只修改类名的文件夹/文件路径/only_change_clsname_pathes (可选)

深度读取,只修改类名,不修改内部属性与方法的文件名,这个优先级最低,如果之前的条件包含了本参数中的路径 则不生效

10. 动词词库路径/verbwords_path (可选)

提供单词数组json文件路径\n修改的命名逻辑为ABAB型,A为动词,B为名词,

例:getMessage

11. 名词词库路径/nounwords_path (可选)

提供单词数组json文件路径\n修改的命名逻辑为ABAB型,A为动词,B为名词,

例:getMessage

12. 类名前缀/class_prefix (可选)

给每个类添加的前缀

例:MJExtension--> MJ 为前缀, SD_ScrollView--> SD_ 为前缀

13. 属性名前缀/property_prefix (可选)

给每个属性添加的前缀

例:property(nonatomic, strong) UIView MJView --> MJ 为前缀, property(nonatomic, strong) UIView SD_View --> SD_ 为前缀

14. 需要过滤的方法路径/filter_methods_path (可选)

把你需要过滤的方法写入一个文本文件,然后将该文本路径填入到此项输入框

注意事项:

1.确保填入的每个方法以';'分号结尾

2.每一行只有一个方法

格式示例:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
- (instancetype)initWithName:(NSString *)name content:(NSString *)content isPublic:(BOOL)isPublic;

其他说明:本工具已经过滤了大多数常用系统方法,大部分情况下不需要配置此项。

15. 类名和属性名后缀路径/property_subfix_path (可选)

给每个属性添加的后缀,需要一个配置json文件路径

json格式:

[
{"UITableView":{"class":["TableView", "TabView"], "property":["TableView", "TBView", "TView"]}},
{"UICollectionView":{"class":["CollectionView", "ColView"], "property":["ColView", "CollectView", "CTView"]}},
{"UIView":{"class":["View", "V"], "property":["View", "Vw", "Vi"]}}
]

注意:key一定要与上面一直,否则系统无法读取,工具会遍历数组,为对应的类匹配后缀,在配置改文件时,包含相同字符串的类,需要将类名更长的类放在前面,不然匹配结果会达不到预期。

例如:UITableView与UIView,配置时需要将UITableView放在View之前,如上面的例子。

16. 为方法名添加介词/add_preposition (可选)

工具内置了所有介词,可选择性添加

例:getMessage添加介词后---> getAMessage or getTheMessage

具体介词完全随机添加

17. 修改分类/change_category (可选)

工具会自动识别分类,可选择是否修改

18. 将原代码行作为注释写入/add_original_comments (可选)

由于本工具不保证修改后百分百不报错,将修改过原属性声明和方法名作为注释写入,方便在重建工程后报错与原工程进行对照,建议设置

19. 修改方法内部局部变量名/change_local_property (可选)

定义在方法内部的局部变量,可选择是否修改

20. 综合配置路径 (可选)

json配置文件路径,内部必须为字典,key为说明条目标题后面的英文

请注意:配置文件优先级高于输入框输入的规则,配置文件存在时, 输入框输入的配置不生效

例:(可直接复制修改)

{
"import_path": "", "export_path": "", "copy_only_pathes": "", "copy_only_names": "", "no_change_pathes": "", "no_change_class_subfix_names": "", "no_change_class_prefix_names": "", "only_change_clsname_pathes": "", "only_change_clsname_names": "", "change_category": true, "add_original_comments": true, "class_prefix": "", "property_prefix": "", "add_preposition": true, "change_local_property": true, "verbwords_path": "", "nounwords_path": "", "filter_methods_path": "", "property_subfix_path": "" }

20. 关于bug

虽然工具本身经过了完整的商业项目的考验,但由于每个人的代码风格不一样,工具不可避免会出现解析不了的情况,开发者建议过滤C语言的文件,与第三方库,减少出错的可能性,还是无法运行成功,你可以发isssue至客服邮箱或根据报错Log自行删减项目文件,其中利弊,自行斟酌。

一键自动修改和翻新OC源码,解决苹果审核4.3和马甲问题的更多相关文章

  1. 【原创】修改Sqoop1.4.6源码实现--fields-terminated-by选项支持多字节分隔符

    修改Sqoop1.4.6源码实现--fields-terminated-by选项支持多字节分隔符 最近项目中需要使用sqoop实现oracle与hdfs的数据交换,从oracle数据表导入到hdfs集 ...

  2. 32.修改IK分词器源码来基于mysql热更新词库

    主要知识点, 修改IK分词器源码来基于mysql热更新词库     一.IK增加新词的原因 在第32小节中学习到了直接在es的词库中增加词语,来扩充自已的词库,但是这样做有以下缺点: (1)每次添加完 ...

  3. c# winform 中的 工具栏自动隐藏 splitter用法 带源码

    c# winform 中的 工具栏自动隐藏 splitter用法 带源码 代码下载地址 http://download.csdn.net/detail/simadi/7649313

  4. es 修改拼音分词器源码实现汉字/拼音/简拼混合搜索时同音字不匹配

    [版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 在业务中经常会用到拼音匹配查询,大家都会用到拼音分词器,但是拼音分词器匹配的 ...

  5. 修改Java标准库源码

    以下是摘抄,实际操作没有测试   先前我曾提到,原本想借由“改动Java标准库源码”来测知Class object的生成,但由于其ctor原始设计为private,也就是说不可能透过这个管道生成Cla ...

  6. 编译VisualVM源码解决乱码问题

    编译VisualVM源码解决乱码问题 起因 今天在使用VisualVM对测试服务器进行JVM监控的时候,发现所有统计图的横纵坐标都是显示乱码(小方块),即使我的Ubuntu系统使用的是英文语言环境.奇 ...

  7. 修改CKplayer.js 源码解决移动端浏览器全屏不能限制快进的问题

    原文地址:https://www.cnblogs.com/jying/p/9642445.html,转载请说明出处. 最近项目需要播放视频且限制未观看部分的快进功能,找了两款js插件ckplayer和 ...

  8. SSM 框架基于ORACLE集成TKMYBATIS 和GENERATOR自动生成代码(Github源码)

    基于前一个博客搭建的SSM框架 https://www.cnblogs.com/jiangyuqin/p/9870641.html 源码:https://github.com/JHeaven/ssm- ...

  9. windows7使用Source insight上远程修改ubuntu共享内核源码

    由于本人阅读喜欢使用source insight.前段时间接触了linux核代码,而这份代码只能放在ubuntu服务器上编译,刚开始的时候是在windows上修改,完了之后再copy到服务器上去编译, ...

  10. 分享一个客户端程序(winform)自动升级程序,思路+说明+源码

    做winform的程序,不管用没用过自动更新,至少都想过自动更新是怎么实现的. 我这里共享一个自动更新的一套版本,给还没下手开始写的人一些帮助,也希望有大神来到,给指点优化意见. 本初我是通过sock ...

随机推荐

  1. Langchain-Chatchat项目:4.1-P-Tuning v2实现过程

      常见参数高效微调方法(Parameter-Efficient Fine-Tuning,PEFT)有哪些呢?主要是Prompt系列和LoRA系列.本文主要介绍P-Tuning v2微调方法.如下所示 ...

  2. 高精度减法(C语言实现)

    高精度减法(C语言实现) 介绍 众所周知,整数在C和C++中以int ,long,long long三种不同大小的数据存储,数据大小最大可达2^64,但是在实际使用中,我们仍不可避免的会遇到爆long ...

  3. 一文概览NLP句法分析:从理论到PyTorch实战解读

    关注TechLead,分享AI全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI ...

  4. 一张图搞懂sql执行顺序

    冲浪时发现一张很有意思的图,细分了一个长sql语句的执行顺序

  5. ics-06

    打开题目界面有点科技感,然后找到报表中心的位置 url地方出现了一个奇怪的id,试了下sql注入但是没报错,判断应该不是sql注入,然后就坐牢了 看了wp得在id的地方进行爆破 爆破了1-2500可以 ...

  6. 简单地聊一聊Spring Boot的构架

    本文由葡萄城技术团队发布.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 本文小编将详细解析Spring Boot框架,并通过代码举例说明每个层的作用 ...

  7. .net下功能强大的HTML解析库HtmlAgilityPack,数据抓取必备

    HtmlAgilityPack是一个.NET平台下的HTML解析库,它可以将HTML文本转换为DOM文档对象,方便我们对HTML文本进行操作和分析.HtmlAgilityPack支持XPath语法,可 ...

  8. C# 泛型编译特性对性能的影响

    C#作为一种强类型语言,具有丰富的泛型支持,允许开发者编写可以应对不同数据类型的通用代码.然而,在泛型编译时,针对结构和类作为泛型参数时,会对性能产生不同的影响. 泛型编译行为 在C#中,泛型编译行为 ...

  9. Java 21 官方速览:全面拥抱虚拟线程

    前言 首先,感谢一下不少xdm私信关心我的身体状况,我也不是什么厉害的大佬,点开通知看到一堆私信还是蛮感动的. 近来有意大幅缩短了更新频率,增加了日常调养身体的时间,淋巴结确实变小了,睡眠也逐渐正常, ...

  10. IDEA提示Cannot resolve class or package ‘beans‘等类似错误

    一.解决方案 1.问题原因: 2.解决: 快捷键:Alt+Enter选择.