1.?自动自动Զ?ƥ??Դ??
2.从数据自动生成正则表达式(附源码)
3.AC自动机AC自动机 C++ 源代码
4.Presto源码分析之模式匹配
5.pyc是什么意思?
?Զ?ƥ??Դ??
自动修改/翻新/混淆/OC/iOS代码,自动替换类名,匹配匹配方法名
由来
网上有很多关于如何混淆iOS源码的源码源码方法,但是自动自动都不够智能,生成的匹配匹配方法类名要么千奇百怪,要么aaaabbbxxx这种完全毫无意义的源码源码头像分享源码名称,要么只能修改单个文件,自动自动多个文件根本无法关联,匹配匹配我就想有什么方法可以像真人一样去修改源码,源码源码符合语义,自动自动不是匹配匹配胡编烂造的方法名,还可以自动修改相关联的源码源码文件, 还能自己自定义单词库,于是自动自动就有了这个工具。
演示视频
划重点
1. 该工具可以让你一键翻新代码,匹配匹配但是源码源码不是生成完整的xcode项目,需要你自己新建一个xcode项目,然后把翻新的文件拖入到新的项目中。
2. 该工具只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。
3.目前免费使用,免费使用,免费使用,重要的事情说三遍
几个效果展示
使用说明
下载项目,官网下载:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具注意:说明中提到的路径均为绝对路径,提到的逗号,都为英文逗号。使用工具运行成功后,ss 源码分析需要自己新建OC项目再将修改后的代码与资源文件拖入新建的工程。功能说明:
未来可能添加的功能:说明文档会不定期更新,如遇到问题先检查是否依照说明文档的定义进行配置。
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(可选)
深度读取,只修改类名,不修改内部属性与方法的XLWLGF导航源码文件名,这个优先级最低,如果之前的条件包含了本参数中的路径 则不生效
. 动词词库路径/verbwords_path(可选)
提供单词数组json文件路径 修改的命名逻辑为ABAB型,A为动词,B为名词,例:getMessage
. 名词词库路径/nounwords_path(可选)
提供单词数组json文件路径 修改的命名逻辑为ABAB型,A为动词,B为名词,例:getMessage
. 类名前缀/class_prefix(可选)
给每个类添加的前缀例:MJExtension-> MJ 为前缀, SD_ScrollView-> SD_ 为前缀
. 属性名前缀/property_prefix(可选)
给每个属性添加的前缀例:property(nonatomic, strong) UIViewMJView-> MJ 为前缀, property(nonatomic, strong) UIView SD_View-> SD_ 为前缀
. 需要过滤的方法路径/filter_methods_path(可选)
把你需要过滤的方法写入一个文本文件,然后将该文本路径填入到此项输入框注意事项:其他说明:本工具已经过滤了大多数常用系统方法,大部分情况下不需要配置此项。
. 类名和属性名后缀路径/property_subfix_path(可选)
给每个属性添加的后缀,需要一个配置json文件路径json格式:注意:key一定要与上面一直,否则系统无法读取,工具会遍历数组,为对应的类匹配后缀,在配置改文件时,包含相同字符串的类,需要将类名更长的类放在前面,不然匹配结果会达不到预期。例如:UITableView与UIView,配置时需要将UITableView放在View之前,如上面的例子。
. 为方法名添加介词/add_preposition(可选)
工具内置了所有介词,可选择性添加例:getMessage添加介词后-> getAMessage or getTheMessage具体介词完全随机添加
. 修改分类/change_category(可选)
工具会自动识别分类,可选择是否修改
. 将原代码行作为注释写入/add_original_comments(可选)
由于本工具不保证修改后百分百不报错,将修改过原属性声明和方法名作为注释写入,方便在重建工程后报错与原工程进行对照,源码解密免费建议设置
. 修改方法内部局部变量名/change_local_property(可选)
定义在方法内部的局部变量,可选择是否修改
. 综合配置路径(可选)
json配置文件路径,内部必须为字典,key为说明条目标题后面的英文请注意:配置文件优先级高于输入框输入的规则,配置文件存在时, 输入框输入的配置不生效例:(可直接复制修改)
关于bug
虽然工具本身经过了完整的商业项目的考验,但由于每个人的代码风格不一样,工具不可避免会出现解析不了的情况,开发者建议过滤C语言的文件,与第三方库,减少出错的可能性,还是无法运行成功,你可以发isssue至客服邮箱或根据报错Log自行删减项目文件,其中利弊,自行斟酌。
从数据自动生成正则表达式(附源码)
正则表达式,作为字符串匹配和处理的强大工具,几乎在所有编程语言中都有支持。其主要用途包括:匹配和查找、替换、数据验证等。对于有经验的开发者,从数据中提炼合适的正则表达式并非难事。然而,有没有可能让计算机自动生成这样的表达式呢?特别是当数据可能存在质量问题,包含错误或脏数据时,这一问题显得尤为重要。
在面对如下的药物批准文号数据时,很容易写出正则表达式:国药准字[BHZ]\d{ 8} 或 国药准字[A-Z]\d{ 8}。但自动生成这样的cbt模式源码表达式是否可行呢?答案是肯定的。
在处理数据时,计算机必须考虑到脏数据的可能,比如数据不完整或格式错误。例如:“J 国药准字”或“国药准字”。这些问题需要在数据处理过程中进行识别和处理。
正则表达式的结构包括内容匹配符、数量限定符、位置限定符和逻辑或等元素,其中最底层的是原始字符,它们只能匹配自身。字符集合和元字符则涵盖了更广泛的字符集,如 \w、\d、\s 等,它们之间存在一定的包含关系。
字典树(Trie树)是一种用于统计、排序和保存大量字符串的高效数据结构,特别适用于文本词频统计。通过将数据插入字典树,可以生成正则表达式。首先,将所有数据分支组合为正则表达式的逻辑或形式,然后,根据子节点的数量和表达能力的层级,对字典树进行升级和合并,以提升正则表达式的泛化能力。
在升级合并操作中,如果节点的子节点数量超过阈值(例如3个),则提升节点的层级。如果节点的多个子节点值相同,进行合并,以简化表达式。同时,根据数据进入和终止的统计情况,对字典树进行剪枝操作,去除数据量少于平均值%的分支,以去除脏数据。
在生成正则表达式的过程中,还应考虑深度合并机制,如将重复的字符或元字符合并到其父节点,以简化表达式。此外,可以构建两棵字典树,一棵正序,另一棵逆序,以保留公共子串的特征,提高表达式的准确性。
整体算法流程包括升级、合并、剪枝和深度合并操作,直到字典树不再改变或节点升级到预设的最大层级。通过测试示例,可以验证生成的正则表达式的正确性和效率。
为了实现这一自动化过程,可以使用如 GitHub 上提供的完整代码库(github.com/mxnaxvex/Reg...)作为参考和实现依据。
AC自动机AC自动机 C++ 源代码
以下是一个使用C++编写的AC自动机的源代码,它实现了单词匹配的功能。首先,定义了结构体node,包含失败指针、个子节点和单词计数器。队列q用于BFS构建失败指针,keyword用于输入单词,str为模式串,head和tail分别表示队列的头尾指针。
在insert函数中,遍历输入的字符串,根据每个字符在字母表中的位置,动态创建和连接节点,同时更新节点计数。build_ac_automation函数用于构建AC自动机,通过广度优先搜索(BFS)设置失败指针,使得每个节点的失败指针指向其在模式串中可能的下一个匹配节点。
query函数则用于查询给定模式串在输入单词中出现的次数。首先遍历模式串,遇到每个字符时,从当前节点开始向上查找,直到找到匹配或到达根节点。然后,统计所有匹配节点的计数并累加到结果。
在main函数中,读取测试用例数量,对于每个用例,先初始化自动机,读取单词并插入,然后构建自动机,最后读取模式串并输出匹配次数。
Presto源码分析之模式匹配
Presto 中的小型模式匹配库,即presto-matching,其作用在于识别并优化性能不佳的查询计划。本文将详细解析presto-matching库中的主要概念,包括Pattern、Match、Matcher,以及它们的设计思路与在Presto查询优化中的应用。
首先,Pattern是一个抽象类,它负责定义模式的结构、行为、常用构造方法,形成了小型的DSL,并提供与匹配逻辑之间的桥梁方法matches。Pattern的结构定义了模式的属性,如EqualsPattern的expectedValue和FilterPattern的predicate。Pattern的行为通过accept方法实现,它接受Matcher核心类和匹配对象,以及用于保存匹配过程中关注的节点的Context。Pattern还定义了模式构造方法,使用户可以直观地描述复杂的匹配逻辑,避免冗长且难以理解的代码。
Pattern匹配的关键在于Pattern的matches方法,它用于判断给定对象是否能匹配当前模式。
Pattern的子类包括5个,分别用于实现不同的匹配逻辑。
Match是一个抽象类,代表匹配结果,包含Present和Empty两个私有实现类。Present类保存匹配到的节点,Empty类表示未匹配到任何内容。用户通过Match的工厂方法获取具体的实现类。
Matcher作为桥梁,使用Visitor模式,定义了匹配各种模式的方法。当前实现仅有一个DefaultMatcher,它通过递归调用match方法,检查整个模式链是否满足给定对象,同时保存用户感兴趣的子节点。
模式匹配在Presto中的应用主要在于查询优化,特别是在基于规则的优化器中。例如,Presto的优化规则推限通过项目可以利用模式识别找到性能提升的机会,通过在选择阶段减少数据量,从而减少整个查询的处理数据量。
本文对presto-matching库进行了深入解析,从其设计思路到实际应用,展现了模式匹配在Presto查询优化中的重要作用。这个库的设计虽然简洁,但在查询优化场景中发挥了巨大作用。它不仅提高了查询性能,还为未来的类似模式识别场景提供了灵活的应用基础。
pyc是什么意思?
以下是详细的解释: 1. pyc文件的定义 pyc文件是Python源代码编译后的字节码文件。Python是一种解释型语言,通常在执行时解释器会将源代码转换为字节码并执行。然而,为了提高执行效率,Python还提供了将源代码编译成字节码文件的功能。这些.pyc文件可以被Python解释器直接加载执行,从而提高运行效率。 2. pyc文件的生成 当Python源代码文件被运行或导入时,Python解释器会自动将其转换为.pyc文件。这个文件包含了编译后的字节码以及源代码的文件哈希和其他信息。在下次导入或运行时,如果.pyc文件存在并且其内容与源代码相匹配,Python可以直接加载编译的字节码,从而提高性能。 3. pyc文件的作用 .pyc文件的主要作用是提高Python程序的运行效率。通过将源代码编译成字节码,并保存在.pyc文件中,可以避免每次运行或导入时都重新解释源代码。此外,.pyc文件还可以跨平台和跨Python版本使用,因为字节码是与Python解释器版本和平台相关的,但源代码是可移植的。这意味着在不同的操作系统或不同的Python版本上,只要安装了相应的Python解释器,就可以运行相应的.pyc文件。 总的来说,pyc文件是Python程序运行过程中的一个重要环节,它提高了程序的运行效率,并使得Python程序更加易于移植和共享。