FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序把安全装进口袋
一次过审总结-包括2.1大礼包
1.基本信息
1.1客户的APP做的套壳属于直播图书类商城APP。
1.2马甲
1.3特意购买了全新的公司开发者账号
2.经历
3.第三方支付解决方案
方案一:还是保留第三方支付,加入内购,另外把充值、花费和流水的部分功能显示出来。
方案二:按照要求的添加内购,去掉隐藏的所有第三方支付。
1.把第三方sdk去掉。
2.去掉代码中所有有关第三方支付的字眼,包括白名单。
最后综合考虑,因为我们APP本身没有携带第三放支付的SDK,所以做了代码清除操作。
4.方案实施
4.1全局搜索“alipay”等字眼,并做相应的删除或替换。
4.3删掉白名单。
4.4为了应付上线后,避免再次被复审暴露开关,后台针对访问IP做了处理。
5.实现效果
然后在前几天提交后,到2018年07月18日终于成功重新上架有了结果,在这期间苹果打回,反馈2.3.1,3.1.1条例违法,下次审核将被延时。结果已经不重要了,但是比较蛋疼的说说这一个月我做了什么。首先提交上线后等了一个周后没有任何动静,我就开始进行加急审核操作(后来才知道延审期间,加急是没有任何意义的),然后等了几天状态变为“正在审核”,我以为看到希望了,结果又等了一周,没有任何反应的情况下,我给苹果发了邮件,第一封回了,说您的APP还在审核中,请耐心等待(后来才知道,这是苹果的套路回复),于是我回复了请尽快审核,再没下文,后来继续等,然后隔三差五,我就邮件问候了苹果那边,但是都杳无音信。唯有等。。。
6.第二次改版提交
新增修改:去掉所有有关第三方支付的注释代码。
提交后,还是经历了痛苦的一个半月才有结果,虽然每天早起第一件事依然是打开ituneconnect看看状态,但你在束手无策的前提下的每次祈祷都终将破碎,而且变成麻木与绝望。
最终还是悲剧,连回复不知道怎么措辞了,真想直接骂街苹果了。可是我忍,老大拍板,修改优化充值隐藏功能。最终方案是取代审核开关方案,使用js调用web支付。然后便是第三次改版。
7.第三次改版提交
新增修改:优化web支付,添加JS调用。
然后延续前两次操作,除了等,还是隔三差五发邮件过去催。
最后经历了差不多2个月的时候,有了结果,反馈条例是:Guideline2.1-InformationNeeded,我勒个去,直接跳楼算了。
8.新年大礼包Guideline2.1-InformationNeeded
大礼包内容如下:
一下子回了这么做问题,着实让我一口老血喷死了算了。结果网上一搜,发现一大波同样中毒的同胞,于是找到了失散多年的小伙伴就好说话了,诸位都是来自不同行业,对大礼包2.1有各自不同的见解,我收集了一下:
1)基本中招的来自一下几个行业和类型:马甲、金融小贷、cp(彩票)、游戏、社交和其他。
2)有很大一部分确实存在以上部分问题的(至少是有猫腻的)。
3)2.1大礼包是机审的结果,苹果对机审做了升级处理。
4)有些之前被延时审核的,在收到2.1之后自动解除了延审,例如我的。
至于查看收到2.1之后是否解除了延审,可以留意是否有诸如以下语句
thenextsubmissionofthisappmayrequirealongerreviewtime或者thenextsubmissionofthisappwillstillrequirealongerreviewtime
若果有,证明你被延审或者延时审核还没解除。
然后陆陆续续就有人过了,诸如一下这篇
于是许许多多的猜想得以认证,针对2.1做回复或申述是现行比较合理的解决办法。
9.千万别怼2.1
直接做一下回复
基本意思是:
对于2.3.0、2.3.1、3.1.1,我承认在上个版本隐藏了支付功能,app被你们下架,这惩罚我罪有应得,但是我在现在的构建版本里已经将第三方支付去掉了,只有内购。也没有什么“隐藏开关”功能。
对于4.3.0,我们团队花了4个月,经过构思、设计、开发才独立研发出来的产品,没有任何抄袭。
最后对于5.3.4,我的app在中国发布,公司已经取得了《网络文化经营许可证》,同时我在审核附件里一致提供着。
最后,过了2天,就有了回馈,真的是喜出望外啊,苦尽甘来。
不过,还是被拒了,回馈是1.2内容违法,并要求提供《网文》的官网地址。
在这一part先说完2.1大礼包的一些其他回复策略吧:
1)直接回复说:没有违反以上任何条例,请重审。
2)回复没见反应之后:直接申述,申述内容与回复一致。
另外补充说明一点:假如你已经回复,并且苹果已经正在受理你的回复内容,你再选择申述,苹果会回馈你说“审核团队已经在认真考虑你的渴求,并将重新审核,请耐心等候,并且下次直接回复即可,本次申述将予以关闭”。也就是说,苹果审核团队已经开始做事了,耐心等候。网上有伙计说,不能回复和申述同时操作,但根据反馈不应该说是“不能”,而是“不需”,无需同时回复和申述,因为一方在处理之后,另一方就不负责你的诉求了。要注意的是,“回复”对接的是审核团队的审核员,“申述”对接的是审核的申述委员会,两个职责是不一样的。不过本人建议,可以再回复之后,两天内没收到消息,即可进行申述。
10.第四次提交审核
1)针对1.2,后台清理了一次数据,包括一些挑逗性的图片和内容。
2)提供了《网文》的官网地址,这个扫描网文的二维码即可获得。
但是还是第3天就被打回来,仍然是1.2。没办法,继续清除,有过3天还是1.2,陆陆续续的清了好几遍,还是不成功,后来采取了终极策略。
11.终极过审
采取策略:联系qq:2205357007付费协助上架app
11.一点忠告
1)对于2.1,最好要耐心,回复文字要礼貌性一点,可中文可英文,最好是英文。
2)马甲包的请慎重,免得封号。作者已成功被封了
3)目前发现解决2.1的可行办法只有回复或申述,至于那些付费过审的请慎重。
4.2最低功能要求&4.3重复App/马甲包
主要说的是应用简单及重复的问题
解决办法
不愿意换包换账号的情况:
1.修改定价/发布地区/产品分类
2.升级版本号重新提交
3.换bundleid,换一个包重新审核
愿意换包换账号:
4.更改开发者账号,修改icon、素材等
5.可以做开关,修改审前页面
6.添加垃圾代码或者注释块
以上是老的办法。
下面另外的亲自最新测试方案
1、定期换电脑提包.
2、换电脑的序列号.
3、换图标,换启动图.
4、换VPN环境.
5、定期换域名.有条件的,最好电脑不要超过三个包
开发者计划许可协议1.2被拒问题
金融理财应用
2.将敏感信息(例如App中出现的银行名称等)和功能删除或隐藏;
其他应用
1.删除被拒理由中明确指出的,或者自身觉得敏感的信息(例如应用名称、关键词或描述中出现的其他应用的品牌词)或功能;
2.提审期间将敏感信息和功能(优惠卷等)隐藏;
4.如果被拒原因中指出的品牌词、商标等确实是自家公司的,可以把信息以及证明资料等反馈给审核人员。
开发者计划许可协议3.2(f)被拒问题
Apple开发者计划会员资格被用于不诚实或欺诈活动
1.若是误会,考虑向苹果解释清楚;如是真的,修改后回复苹果承认错误并保证以后不再采取该行为。
2.如果是提交了重复应用而被拒,还可考虑修改应用名称、图标等元数据以及功能、界面,或者去掉代码特征等后,重新提审。或者,直接用新账号提交审核,必要时可考虑修改名称、图标等元数据以及功能、界面等,这样更容易过审。
分析&应对措施
从苹果回复的信息以及Apple开发者计划许可协议第3.2(f)节的内容我们不难推测,任何干扰苹果软件或服务的行为都有可能因该理由被拒。
通过样本分析出的现象和Apple开发者计划许可协议第3.2(f)节中的部分举例不谋而合,同时其也帮我们解释了:为什么近期马甲应用提审困难。(→因为苹果加大了对重复提交的应用或和第三方应用类似的应用的审核力度!)
如果因该理由被拒,我们该如何处理呢?作者和群里的一些开发者交流经验后,总结了几点:
1、收到苹果的通知/邮件后,如果是误会,可考虑向苹果解释清楚,然后请求苹果停止处罚。如果真的存在欺骗行为且确认苹果已发现该行为,可考虑(改正后)态度诚恳地回复苹果,承认错误并保证以后不再采取该行为。如果苹果接受了道歉,也许可以解封。但如果苹果态度坚决,就只能另想办法了。(主动承认有一定风险,请综合利弊后,谨慎选择。)
2、如果是提交了重复应用而被拒,还可考虑修改应用名称、图标等元数据以及功能、界面,或者去掉代码特征等后,重新提审。(需要注意的是,据传苹果现在已经开始通过技术手段扫代码,如果只是简单的更改,仍然可能会被拒。)或者,直接用新账号提交审核,必要时可考虑修改名称、图标等元数据以及功能、界面等,这样更容易过审。(注意,如果只是简单的更改,仍然可能被拒,且新账号也有被封的风险。)
如果产品因IPv6问题被拒,首先要确认代码是否有问题。若确定没有问题的话,重新提交1~2次即可,这种情况多数是审核人员所在的网络环境导致的问题(可在重新提交时将截图或拍下视频放附件里或直接向苹果申诉)。
如果App本身有问题,例如不兼容IPv6,最好的办法是让App兼容IPv6或通过升级服务器来支持IPv6
解决方案一
苹果AppStore审核员在美国的IPv6-Only环境下对APP进行访问(审核),如果APPServer支持IPv6,则可直接访问;如果APPServer不支持IPv6,则通过DNS64+NAT64进行访问;很明显,大部分开发者的APP服务器都是不支持IPv6直接访问的,所以基本是用NAT64+DNS64进行访问的。那么我们就先了解NAT64+DNS64的访问机制吧,直接看图:
从这里看出审核的关键在于能不能获取一个有效的ServerIPv6地址。当苹果公司的APP审核员在进行审核时,由于国内大部分开发者的APPserver没有IPv6地址,只能通过苹果公司自己的NAT64+DNS64服务器进行测试,而最关键的是苹果的服务器不能有效的给APPserver返回一个IPv6地址,这就导致了审核失败,APP被拒。
就国内目前来说审核被拒的主要原因有第三个:
1、国内大部分APP服务器没有IPv6地址,导致DNS无法解析;
2、苹果公司的审核环境不能自动将中国APP内URL转换成IPv6可访问的格式,导致访问失败;
3、由于国际线路带宽严重拥堵等原因造成访问不稳定,失败率高
那么该如何解决这些问题呢?
就目前国内的现状,能够提供这种服务的当属教育网了,中国教育网坐拥全国几百所高校,拥有真实的IPv6骨干网络,国际出口,IPv6资源丰富,服务质量好。
因此解决方案就是使用教育网的NAT64+DNS64服务,方案示意图如下:
具体的操作步骤就是使用教育网的NAT64+DNS64,把您的域名发给我们,帮你解析出IPv6地址(全球可达的地址),您只需在您的域名管理中添加一条4A记录即可,之后就可以提交审核了,一天之后你就会发现审核通过了!
解决方案二
既然审核被拒是因为IPV6,那么我们就让服务器支持就可以了,但是很多运营商的服务器不提供IPv6地址,这样的话就要使用IPv6隧道技术,通过建立隧道使自己的服务器通过IPv6隧道来支持IPv6,方案示意图如下:
使用IPv6隧道服务APP服务器必须满足三个条件:
①服务器拥有公网IPv4地址
②服务器支持IPv6协议
③服务器放行6in4协议
具体的配置如下:(这里只是举个例子)
确认申请了IPv6隧道服务并按照上述模板进行配置完成后,请检查防火墙(iptables)是否放行了6in4协议,并确认(/etc/sysctl.conf)中IPv6转发已打开。如果上述操作都已正确完成,那么在你的服务器上应该可以看到如下结果:
至此,IPv6隧道搭建完毕,服务器已经支持IPv6了这样就OK了
5.1隐私
1.在采取用户数据信息之前需要给予用户提示,并得到用户的允许,或设置为可选;
2.明确告知苹果采集用户数据信息的使用目的。例:新闻类App需要用户位置信息,目的是根据地域的不同而向用户推送不同的新闻内容。
5.2知识产权
PLA1.2
一直以来,因PLA1.2问题被拒的多为金融理财应用,但通过近期小七和CP们交流、调查后发现:“PLA1.2”已不再是金融理财应用的专属。在因为此原因被拒的应用中,还有大批购物、医疗及其他类应用。调查详细结果及解决方式如下所示(以下内容围绕金融理财应用、其他应用、马甲应用三部分展开):
一、金融理财应用
通过调查发现,在因PLA1.2问题被拒的应用中,金融理财应用仍占大部分。被拒原因基本是:应用的开发商名称和公司名称与应用/应用元数据/金融产品中的公司名称/金融机构/金融机构名称/信用卡名称/贷款业务提供者等不匹配,违反了苹果开发者计划许可协议1.2。
如果遇到类似情况,大家不妨尝试下述方式:
①苹果规定:金融理财类应用只能用对应公司名称的开发者账号上传。也就是说,如果用个人开发者账号提交金融理财类应用后收到了类似邮件,可以考虑用公司开发者账号提交;
②如果不想采取上面的方式,且是在帮客户提交应用,可以让客户将你的开发者账号添加到他们的开发者账号团队成员中,然后再尝试提交;
③审核期间,将敏感信息(例如App中出现的银行名称等)和功能删除或隐藏;
二、其他应用
在此番调查中,购物应用多是因为在应用以及应用元数据中添加了其他应用的品牌词(例如,淘宝)等,以及开发商和公司名称与App中多次出现的购物平台名称或优惠券服务商等不匹配而被拒;医疗类应用多是因为开发商和公司名称与App中出现的医疗机构等不一致而没有过审;而其他类型的应用被拒的原因多是因为在应用以及应用元数据中添加了其他应用的品牌词,或技术支持网站无法体现该公司的经营内容等。
针对这些情况,小七觉得可以尝试以下方式:
①删除被拒理由中明确指出的,或者自身觉得敏感的信息(例如应用名称、关键词或描述中出现的其他应用的品牌词)或功能;
②提审期间将敏感信息和功能(优惠卷等)隐藏;
④如果被拒原因中指出的品牌词、商标等确实是自家公司的,可以把信息以及证明资料等反馈给审核人员;
三、马甲应用
除了上面的情况外,还有另外一种情况:近日有很多马甲应用收到过此类被拒信息。而针对这种情况,目前主要有两种解决方式:①隐藏敏感信息,并对应用的元数据、图标、界面以及功能等进行修改,过审后再将可修改的信息或功能改回来。但是这样做有一个弊端,如果被苹果发现,会面临下架的风险;②设计一款和主版本不同的App。
结语
解决办法:
一、依照苹果审核人员的要求修改应用名称。
例:公司名称”好贷天下信息技术有限公司“,则App名称修改为”好贷“,然后重新提交。
二、如果是个人开发者,换公司开发者。
三、如果是金融包,尽量用金融账号提交。
四、向苹果证明产品名称与公司的关联性,例如提交”软件著作权“证书,或者”商标“证书,主要为了作为产品名称及公司名称的关联。(所以最好提前申请主包软著)如果没有软著,提供一份证明。
1.有软著的回复
尊敬的苹果开发者审核:
您好,针对贵方提出的PLA1.2品牌归属性问题,我方产品XXX为我方XXX公司旗下产品,我方开发者账户全称为”xxxxx有限公司“,附件为我方产品”软件著作权“证书(或者商标),请贵方审阅,及尽快给予我方App上架AppStore!
诚挚的问候!
2.无软著的回复以及证明模板
xxx产品为我公司独立自主开发完成,不存在任何侵犯第三方合法权益的情形。我公司承诺若该应用存在虚假、侵权或侵害第三方合法权益的行为,我公司愿承担由此产生的一切法律后果。
五、向苹果阐述App功能及名字情况。
之后回复苹果:
2.回复苹果方公司运营主体,运营范围等。(此条适用于金融包)
六、软件个人中心内增加关于我们一栏,关于我们中可以增加该产品logo、公司名称、官方网址等一切能证明该产品为该开发者账户。
七、开关功能。(开关能解决的都不叫问题,该隐藏就隐藏)
1.比如金融包上信用卡问题;
2.比如导流包上聚合贷款问题;
3.比如某些功能不被允许问题。
ida逆向:变量、函数标注;反编译代码修改
分析dll文件中的2个函数中变量、函数进行标注,以及反汇编代码修改,(遵循一些约定俗称的规定+自己爱好=形成自己风格)方便以后很快的阅读。
函数1:DllEntryPoint()
汇编窗口
栈窗口
反编译窗口
函数2:Init1()
没有栈窗口
清楚的标注,方便以后快速识别样本如何执行。
修改IOS逆向--使用IDA的Patch更改汇编或二进制码并写入项目和deb重新打包举例
小案例需求
加我们有这样一个判断
inti=4;if(i==3){//做一些事情}
我们想要把==号换为>=号。当然如果你有源码的话改起来很方便,但是可惜我们没有源码。我写了一个实例deb进行这样的操作。
//上面的省略CMPx1#4;//比较B.NQLocal_1658//不相等的话跳到对应地址块不反回
那么我们会要做的就是讲B.NQ改为B.CC让他做大于等于操作,接下来我们介绍如何进行修改。
.第一步:
我们需要了解Patch是如何进行使用的。Edit—>Patchprogram如下所示
.在这里看看他们都有什么
changebyte…就是直接修改二进制数值
changeword..就是直接改地址
Assemble没用过:欢迎大家补充
Applypatchestoinputfile:使我们patch成功并修改后要写回原文件中此处是我的dylib
如何进行改数值呢?好我们现在开始
点击你定位的程序位置,如图此处是我修改后的内容。点击这段地址后可以点击Edit—>Patchprogram–>Changebyte进行更改当前的内容如图:
可以看到我画框的8位数就是我们需要修改的汇编指令。更改为你想要操作的指令的16进制数值即可。
当你修改成功后,就可以按之前介绍的内容进行写入文件中。后面会讲到如何进行重新打包。
Debian进行重新打包
DebianLinux系统解压和重新打包.deb文件方法,iplaypy.com在网络上搜索问题的答案,找到了类似这样解释:
mkdir-pextract/DEBIANdpkg-deb-xpackage.debextract/dpkg-deb-epackage.debextract/DEBIAN[...dosomething,e.g.editthecontrolfile...]mkdirbuilddpkg-deb-bextract/build/
以上这五打命令的解释如下:
第一条命令创建了一个名为“extract”文件夹和一个名为“DEBIAN”的子文件夹;
第二条命令会从你的.deb包提取一些文件到“extract”文件夹;
第三条命令会解压.deb包的内容到“DEBIAN”子文件夹,在那里你就可以修改/补丁你想要的文件;
第四条命令建立一个名为“build”的文件夹;
而第五条命令会将修改后的文件重新构建到一个新的.deb包中,并在“build”文件夹中生成。
在你执行第三条命令后,可以通过你的默认文件管理器,用一个图形化的文本编辑器可视化地修改文件。
那些能提高你效率的iOS应用们
有那么一些APP,可以提高你在iPhone上的工作效率。有的免费,有的需要付费,不知道你愿不愿意去尝试?在这个时代,永远不缺少好的工具。
还有一段话,我觉得还是有必要要说。效率取决于人,真正用好这些工具的可能只是少数人。养成好习惯,比有好工具来的实在。但也请不要过度依靠工具,这样也会造成很严重的后果。
LaunchCenterPro
LaunchCenterPro它对URLSchemes的支持,实现了许多iOS用户梦寐以求的快速跳转操作和高效率的工作流程(workflow),可以这样说,LCP是iOS上追求效率的朋友必不可少的应用,「能用两步完成的,绝不用第三步」。
Workflow
对于一些相对简单的机械式工作,只要交付给Automator(AppleScript)去完成,,与同类应用LaunchCenterPro相比,图形化的Workflow的操作习惯沿袭了Automator的风格,「一添加、二拖拽、三选择、四执行、五保存」,简单直观人性化。
1Password
1Password(免费+内购)
可以储存管理你所有的密码,并在不同平台不同设备之间同步,只需要在1Password中储存一次,你就可以忘掉密码了。支持iOS8的浏览器应用扩展功能,可以在其他App中直接调用1Password保存的密码,省去了反复查看密码的繁琐。(特别推荐Mac版)
TextExpander
evermemo
EverMemo
可以同步到印象笔记的轻巧笔记应用,如果你只是专注于文字记录,就用EverMome吧。
AiSearch
不仅能谷歌,更有创新的自然语句、标签、多引擎和自定义搜索源,可以直接在通知中心使用「AiSearch」搜索,随时随地满足你的搜索需求。(个人首屏应用,非常棒)
Drafts
顶级文本处理应用,提供了纯文本、Markdown、社交网络三种语法高亮主题。可以将你撰写的文本进行多种处理,比如:保存到印象笔记、发送到twitter,功能非常强大,可以Google搜索一下测评。
Purge
Purrge
Purrge是一个能对系统相册进行操作的相册管理应用。可以快速删除相片。
due
Due
Due是一个非常「快」的应用——快在添加任务和调整任务状态的速度。它也是一个非常强大的应用——提醒功能、URLScheme的丰富、对x-callback-url的支持等。
ifttt
IFTTT
IFTTT是IfThisThenThat的缩写,它是一个新生的网络服务平台。通俗的来讲,IFTTT的作用就是如果触发了一件事,则执行设定好的另一件事。
Stacks
最便捷的汇率换算应用,可以在通知中心快速进行汇率换算,能将Safiri中打开的网页外币迅速转换成另一种货币显示。
clear
Clear
下滑增加一条新的事项,在事项上右滑完成事项,左滑删除事项,上滑清空所有已完成事项,用力下滑返回上级菜单。简单的操作带来的是极致的效率。
Clips
剪切板神器,可以添加Safari扩展、通知中心插件、自定义键盘等,让你的剪切板飞起来。可解锁专业版内购:存储不限量的剪辑条目,并可通过iCloud在不同的iOS设备上同步。
past
Paste+
通知中心小插件,可以对你的剪切板、照片进行一些快速的操作,比如发送到第三方软件内。
iTranslate
同声翻译软件,可以在通知中心上直接翻译剪切板的内容。
Launcher
通知中心启动器,类似LaunchCenterPro。
musiclaunch.
MusicLauncher
支持在通知中心添加快速播放项,你可以通过它添加一切可播放的本地音频(歌曲、播客、有声书等)并一键播放。和上面的Launcher是同作者开发的,还没下架,建议收一下。
Fantastical
Fantastical2
日历应用,拥有绝对强大的自然语言输入能力,实用的通知中心小部件(个人认为挺反人类的暂时方式)。在添加日程时,如果你不觉得文字输入是一件麻烦事,会十分顺手。同时,流畅的交互体验,帮助你聚焦于近期的事项。
Calendars
Calendars5
iOSXcode安装
2、双击Xcodedmg文件
3、将找到的设备安装和打开
4、在这里会有两个项目在显示的窗口中即Xcode应用程序和应用程序文件夹的快捷方式
5、将Xcode拖拽并复制到应用程序
6、在应用里选择和运行程序,Xcode也将成为运行程序中的一部分
还可以从MacAppstore里下载Xcode,并按照屏幕上的安装步
界面生成器(InterfaceBuilder)
利用界面生成器这一工具,能很容易的创建UI界面。
可利用一系列的UI元素,拖拽进入UI可视界面。
我们将在接下来的页面了解添加用户界面元素,创建零售商和UI元素的操作。
在对象库的下方包含有全部必要的UI元素。用户界面通常称为xibs,这是他们的文件扩展名。
每个xibs都链接到相应的视图控制器。
iOS模拟器
iOS模拟器实际上包含两种类型的设备即iPhone和iPad及其不同的版本。
iPhone版本包括iPhone(常规版)、iPhoneRetina,iPhone5,iPhone53。
Ipad有iPad和iPadRetina。iPhone模拟器显示如下:
你可以在经度和纬度影响应用程序的位置的情况下运行iOS模拟器,也可以模拟内存警告和呼叫在模拟器中的状态。
能够多数目的使用模拟器,但不能测试像加速度计这样的设备的功能。因此你可能需要iOS设备来测试一个应用程序的所有方面。