皮皮网
皮皮网

【toolkit源码】【负数有源码吗】【超级工厂病毒 源码】马甲包源码_app 马甲包

来源:私服脱机挂源码 发表时间:2024-12-22 13:01:24

1.iOS审核被拒4.3,马甲码a马甲怎么解决
2.苹果审核被拒4.3,包源包怎么解决
3.一键自动修改和翻新OC源码,马甲码a马甲解决苹果审核4.3和马甲问题

马甲包源码_app 马甲包

iOS审核被拒4.3,包源包怎么解决

       最近,马甲码a马甲苹果对于中国区的包源包toolkit源码iOS开发者们要求很是严格,想必各位也吃到了苹果的马甲码a马甲2.1大礼包,满世界的包源包寻找马甲包的混淆方案。

       作者:棋牌视角

       来源:棋牌视角

       本文为作者授权鸟哥笔记发布,马甲码a马甲转载请联系作者并注明出处

       来源: 棋牌视角(ID:qipai)

       本文为作者授权鸟哥笔记发布,包源包转载请联系作者并注明出处。马甲码a马甲

       马甲包对于一家公司的包源包产品引流起到至关重要的作用。但是马甲码a马甲最近这段时间,苹果对于中国区的包源包iOS开发者们要求很是严格,想必各位也吃到了苹果的马甲码a马甲2.1大礼包,满世界的寻找马甲包的混淆方案。

       第一次被打回

       第一次被打回时,我们并没有意识到马甲包的问题有多严重,而且苹果给出的拒绝原因是我们的APP中包含敏感词汇,我们当时并没有往马甲包的方面去想,第一次被打回时,我们采用的方案是对敏感词汇进行base+MD5的混合加密方案,然后就重新提包了。

       第二次被打回

       这次苹果说的很明显了,而且他们机扫了我们的二进制文件,告诉我们API名称与我们之前的一个产品非常相像,而且那个产品并不是使用这个马甲包的开发者账号。我们猜测苹果可能针对APP做了数据库,负数有源码吗会去比对方法名。

       这一次我们代价比较大,由于之前没有考虑到这层,我们的API名称就是和系统方法命名方式保持一致,导致无法引入脚本来自动替换。我们花了三个开发,和6个小时,人工对我们自定义的API名称加上了特定前缀,如ab_xxx.这个思路主要是根据念茜大佬之前在微博上发布的API混淆加密方案。念茜的脚本是将需要混淆的API添加进文件,然后全局对所有需要加密的API字段进行混淆加密。我们在此基础上更新了脚本,可以自动抓取拥有我们前缀的API进行加密。但是这个方案在后面我们完全摒弃,所以在这里不详细往下说了。

       第三次打回

       第三次被打回已经惊动了老板,再想不出好的固化混淆方案我觉得差不多可以收拾东西了。这次苹果的拒绝原因更令人窒息,他说我们的API加密性质太明显,认为我们的APP一定藏有什么隐藏功能,还给我们吃了一张延迟审核的黄牌。经过我们一波分析之后,认为这几次被打回的经验中,苹果没有涉及到说我们的UI有什么相似的地方,所以,只要我们能把这个马甲包做到变成我们开发人员都认为是另一个APP即可。

       分析

       首先感谢将混淆脚本开源的超级工厂病毒 源码大佬!已经找不到源码是谁写的了,我们只是站在了巨人的肩膀上!

       改头换面

       首先,由于是从主APP上拉的分之进行开发,所以这个马甲包的scheme和工程名都没有变化,于是我们首先从这里进行开刀。我们把project名称完全换成了另一个。

       API

       首先base加密API肯定不能再使用了,苹果都说了,加密特征太过明显。

       幸好之前已经把所有自定义的API名称都加上了ab_前缀,使得我们写脚本很好识别。我们将所有扫描出的API放到一个plist文件中保存在本地,然后我们建立了6个数组,每个数组中有6个单词,每次从每个数组中随机抽取一个单词。将6个单词拼接成一段方法名保存在另一个plist文件中,当然,在保存前,先去重,如果这个方法名已经用过了,那我们随机再换,这样一共可以生成种方法名,对于我们的工程已经够用了。

       

       我们利用脚本遍历本地所有png文件,当然你可以自行添加.jpg格式遍历。根据自己的命名规则将所有重新命名了一波。另外我们也发现网上有个轮子可以利用shell命令对所有资源进行超轻量级的用源码编译app压缩,在不影响质量的情况下,改变的hash值。当然我们的马甲包中没有和主界面相似的,所以的这一步我们没有实践。

       类前缀替换

       这一步主要是更改文件名。程序扫描绝对地址下的所有文件,只要是带”XX”开头的文件都替换成”AB”这种,另外每次替换一个文件都要遍历所有文件,将所有用到这个头文件的文件内容进行更换。

       注意

       类前缀替换有时会有个别没有替换到,我没能定位到问题,但很少,可以手动查找替换

       生成垃圾代码

       我用plist专门搞了一个垃圾方法名,每四个方法生成一个带参数名的方法。暂时每个文件里只生成一个垃圾方法。当然可以多运行几次,就会生成几个垃圾方法

       实现

       混淆工程我们使用C+OC的混合编程方式。

       目前已经实现的功能有:

       1、资源修改名字

       2、修改工程名

       3、类前缀修改,如“GD”修改为“IE”,即修改了文件名

       4、混淆随机添加垃圾代码、参数

       5、修改方法名前缀

       6、人工修改部分方法名,memz彩虹猫源码人工对重要类中的方法进行打乱排序

       7、(可选)本地超轻量级压缩,打乱hash值,新上的马甲包建议修改

       使用方法

       启动参数配置

       先配置启动参数再运行,如图

       除第一项必选外其他都非必选。另外第一项启动参数必须放在第一行

       参数解释

       1.工程代码的绝对路径

       2.-modifyProjectName [原工程名]>[新工程名]

       3.-modifyClassNamePrefix [xcodeproj文件的绝对路径,不是pod安装后的那个打开文件] [旧类前缀]>[新类前缀]

       4.-spamCodeOut

       5.-ignoreDirNames [需要忽略的文件夹],[需要忽略的文件夹] 注意,Pods文件夹不在混淆范围内,不需要写

       6.-handleXcassets (混淆文件)

       7.-deleteComments (删除多余的空格和注释)

       8.-chageAPIPrefix [旧方法名前缀]>[新方法名前缀] 注意,前缀要有“”才能被识别,如果之前工程中没有xx下划线开头来命名方法的,此项不要勾选

       此工程可以选择混淆概率,修改工程中kPercent数值。

       实际测试如下

       小结

       目前第三次打回后的工程已经提审,未可知能否过审,会持续更新。脚本也写的很匆忙,后期会进行优化。脚本传送门

       www.it.com

苹果审核被拒4.3,怎么解决

       4.3一般存在3种情况,可以根据被拒回复进行判断,如果你真的看不懂被拒回复,下面一一列举,逐一排除,黑色字体是解决方案

       第一种:简称代码重复,代码重复使用也有三种情况

       1.可能你之前用这套源码上过一个包,现在用这套代码直接改一个logo跟名字再上一个马甲,这种基本会直接4.3

       这种情况基本要改源码,第一步:工程中的文件夹的名字全部进行修改。第二步:每一个工程都有一个类前缀, 我们需要取一个长一点的类前缀, 并且这个类前缀在你的整个工程一定是一个唯一的字符串, 我们假设这个类前缀是PayDayLoan, 现在我们需要生成一个控制器, 控制器的结尾Controller也需要用一个特定的字符去代替, 比如:Director,剩下的View以及object做法类似, 就不一一介绍了,做马甲的时候就是把这些名字用另一个唯一的字符去代替, 尽量长一点。第三步:把另一个其他的工程中的类全部导入进来, 主要是混淆代码, 在现有的工程中调用, 可以没有任何效果, 只是单纯调用方法。

       注:单一的加入垃圾代码混淆没用的!

       2.如果你的这套源码在一个账号上提交过,但是被拒了,后来因为其他原因你不得不在别的账号上重新提交此源码,这种情况第二个账号基本也会报4.3

       这种情况需要在第一个账号做一下处理, xcode新建一个应用, 直接用之前提交过的bundle Id打包,logo用一个纯白或者纯黑的, 将这个新建的应用提交到应用市场, 构建版本中将之前被拒的包移除, 用这个新的应用顶替之前被拒的包, app名字改成 “作废-此应用不再提交” 后面再随便加一个数次, 因为这个名字别人已经用过了, app描述跟app名字一样, 剩下的信息全部删除.最后点击保存即可.不需要提交审核。

       3.你的源码只要提交到itunes connect里面,就算没提交审核,当你再次使用此源码提交审核的时候,基本都会报4.3

       这种情况的解决方案参照2

       第二种,界面功能相似

       这种情况简单的改源码已经没用了,需要在原有的app上加一些不同的功能,我用借贷类举例说明该如何解决,其他类型的app可以参考

       以下举两个应用说明, 分别用A应用与B应用代替, 你需要如何处理并且如何回复审核人员

       1.A应用 是给没有信用卡的用户使用的一款借款App,B应用 是给有信用卡的用户使用的一款借款App.2.A应用的最高借款额度是元, B应用 的最高借款额度是元.3.A应用的还款时间是7天与天, B应用 的还款时间是天. 4.A应用 内部有贷款计算器功能, B应用只是一个普通的贷款app, 并无其他功能5.两款app是我们公司内不同的部门开发的app, 分别针对不同的用户人群.

       第三种,app名字被用过

       这一种,可能是最容易被忽略的,取名字之前一定要先搜索app store有没有同名应用,尽量避免同名应用

一键自动修改和翻新OC源码,解决苹果审核4.3和马甲问题

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

       由来

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

       演示视频

       划重点

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

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

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

       几个效果展示

       使用说明

       下载项目,官网下载:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具注意:说明中提到的路径均为绝对路径,提到的逗号,都为英文逗号。使用工具运行成功后,需要自己新建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(可选)

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

       . 动词词库路径/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自行删减项目文件,其中利弊,自行斟酌。

相关栏目:探索