2019-04-23 10:16:09 Kun__kun 阅读数 14054

2019年03月30日 上架公司的其中一个APP管理端突然被拒,被拒理由如下:


Guideline 2.3.1 - Performance


We discovered that your app contains obfuscated code, selector mangling, or features meant to subvert the App Review process by changing this app's concept after approval to the App Store.

The next submission of this app may require a longer review time, and this app will not be eligible for an expedited review until this issue is resolved.

Next Steps

- Review the Performance section of the App Store Review Guidelines.
- Ensure your app is compliant with all sections of the App Store Review Guidelines and the Terms & Conditions of the Apple Developer Program.
- Once your app is fully compliant, resubmit your app for review.

Submitting apps designed to mislead or harm customers or evade the review process may result in the termination of your Apple Developer Program account. Review the Terms & Conditions of the Apple Developer Program to learn more about our policies regarding termination.

If you believe your app is compliant with the App Store Review Guidelines, you may submit an appeal. Alternatively, you may provide additional details about your app by replying directly to this message.


看到后一脸懵逼,这是啥意思,代码混淆我也没做呀,我一个小小的搬砖的也不会搞这玩意啊。然后就各种问朋友,朋友说我的APP可能有隐藏功能。我就自省:也许是因为同一个APP两个角色,登录不同的角色首页功能不一样,被发现了。提供的测试账号就其中一个角色。然后我就录制APP操作视频,并提供了两个测试账号邮件回复了一下。

第二天邮件回复了,大概意思是:我们不需要你提供更详细的APP说明,请把代码混淆的地方例如 `jhjbye` and `qyjdid`更改或者删除后再重新提交。

???

怎么还是代码混淆,明明我解释了一通了。还给我说代码混淆。思前想后这个应该是在机审的时候就没通过,然后全局搜索了一下这两个关键字,一个是用户模型里的一个属性,另一个是新上的功能所自定义的一个全局变量。于是我把没用的属性删除,把全局变量改了名字,打包后再次提交。就等着吧。

在等待的期间我上传了我们公司的另一个APP用户端,也通过审核了。

但是就在2019年04月19日我再次提交用户端(这次版本相比较上次版本的改动仅仅是隐藏了界面上的几个图标和按钮)同时也提交了另外两个APP的时候,也突然被拒了,被拒理由也是上面的2.3.1,三个被拒理由一样一样的。同样是代码混淆。

问了一圈的技术圈都没遇到过这种情况,无奈我只能走申诉了,在申诉里把四个APP的APPID都填上了,联系电话填上让审核团队联系我,然后明确的写了所有APP都没有关于代码混淆的地方,严格遵守审核制度。

本来对这个没什么指望了,也和领导讨论过用企业分发的形式搞了。但是今天(2019年04月23日)早上到公司,登录App Store Connect一看竟然都通过了。

开心  喜大普奔

2019-01-06 21:11:58 qq_31810357 阅读数 1322

关注小专栏: https://xiaozhuanlan.com/iOSDeveloper 彻底解决上架问题

首先谢谢大家积极催稿, 我迫不及待想尽快出第二篇文章, 由于年前确实忙加上年会节目排练, 生活安排的甚是紧凑, 文章一拖再拖, 谢谢大家的理解和支持, 在此祝大家新年快乐!

今天讲如何使用本地混淆差异化? 为何去做这件事情呢? 容我强势分析一波, 下面这波分析也是我的经验教训, 希望能帮到你~

1.原由为何要本地混淆差异化代码?

最初主要有两个原因:
1.非马甲用户:
2018年开始大量的项目上新更新都受到延迟审核, 或者被误伤为Guideline 4.3, 你可能在当时认为是自己的问题, 就不断在自我反思核查, 最后发现是误伤, 但是Apple review 电话沟通一致认为你有功能点或者内容和别的项目过于相似;

为何会出现这个问题呢?
原因在于你的项目可能是垂直业务领域, 大片的项目功能几乎非常相似, 比如: 工具类, 效率, 社交类, 音乐类等尤为突出, 所以导致苹果加速对垂直领域的整治, 大量垂直产品被下架;

2.马甲用户:
再来说马甲, 2017年12月以前, apple 对马甲的管制很松, 我最多的时候一个包上传30次, 几乎没任何阻碍感;

但从18年4月份开始, apple首先对区域类马甲进行整治, 比如: xx合肥站, xx北京站, xx投注赛马等等;

6月份开始加入只能筛选下架, 猜测是加入了对马甲的打标签功能, 可以简单理解为将你的包统统打标签拉黑进行冷藏, 无论你怎么伸冤都无济于事, 这个阶段可以理解为打击在线App;

9月份开始进行对初审(机审)进行严格把控, 类似对每个项目进行了机器剖析, 提出有效特征参数形成特征码存储, 也就是每个项目都有自己的特征码, 项目一般改动是无法改变这个特征码的, 所以这个阶段很多人引咎放弃;

10月份开始对人审进行把控, 将条款细化, 最为突出的是 Guideline 2.1 成了家常便饭, 现在回头来看这个2.1可以理解为, 回复确认**“我经过自我核查, 保证没有违反苹果爸爸的条款, 并签名进行保证”** 仅此而已;

介于此, 本地混淆代码无论是从马甲还是非马甲都起到了改变现状的作用, 对于非马甲, 解决基础差异化可以顺利上线; 对于马甲可以改变项目特征码, 避开初审(机审), 至于人审就要靠运气了, 到目前为止已可以确定起到作用并完成上新和更新~

2.如何混淆?

在研究本地混淆时参考了网上的一些方法, 有完全混淆成自己都不认得的方法, 也有规律性修改的, 为了快速进行混淆, 对前辈经验的混淆方法进行了提取和优化(文章末尾会提供demo):

第一部分:
1.工程混淆

继续阅读请点击小专栏 ~ QQ群: 446310206 (官方付费, 介意勿加!)

2018-06-29 09:43:14 yanglei3kyou 阅读数 796
阐述
没有绝对安全的系统,也没有黑客破不掉的系统,所需要的只是时间而已… But,当时间成本大于收益成本,聪明人是不会进行尝试。
为了所谓的“相对安全”,研究代码混淆也是必要的。

探讨
Step 1
创建 confuse.sh、 func.list
终端(Terminal)可以键入
touch confuse.sh
touch func.sh


Step 2
将 confuse.sh 、func.list 添加到工程中


Step 3
在 Build Phases 中添加 Run Script 来设置 程序启动时执行 confuse.sh
$PROJECT_DIR/confuse.sh


Step 4
在程序PCH中引入混淆作用的头文件
(如果程序没有PCH文件,可参考 https://blog.csdn.net/yanglei3kyou/article/details/45891267 )


Step 5
在 confuse.sh 文件中填写以下内容
#!/usr/bin/env bash
TABLENAME=symbols
SYMBOL_DB_FILE="symbols"
STRING_SYMBOL_FILE="func.list"
HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/codeObfuscation.h"
export LC_CTYPE=C
#维护数据库方便日后作排重
createTable() {
echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE
}
insertValue() {
echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE
}
query() {
echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE
}
ramdomString() {
openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16
}
rm -f $SYMBOL_DB_FILE
rm -f $HEAD_FILE
createTable
touch $HEAD_FILE
echo '#ifndef Project_codeObfuscation_h'
echo "//confuse string at `date`" >> $HEAD_FILE
cat "$STRING_SYMBOL_FILE" | while read -ra line; do
if [[ ! -z "$line" ]]; then
ramdom=`ramdomString`
echo $line $ramdom
insertValue $line $ramdom
echo "#define $line $ramdom" >> $HEAD_FILE
fi
done
echo "#endif" >> $HEAD_FILE
sqlite3 $SYMBOL_DB_FILE .dump

Step 6
在 func.list 中写出要混淆的函数名、变量名


Step 7
程序编译
若 Build 成功,可在 Show the Report navigator 选项卡中查看结果


如果Build 失败,提示 Permission denied,可在终端中修改 confuse.sh 的权限,再将程序编译进行结果确认
chmod 777 confuse.sh



资料
2019-03-01 09:13:23 samuelandkevin 阅读数 4511

最近,参考了几篇代码混淆文章,然后上架审核发现被苹果拒绝了,具体原因如下:

原因:
2. 3 Performance: Accurate Metadata

Guideline 2.3.1 - Performance

We discovered that your app contains obfuscated code, selector mangling, or features meant to subvert the App Review process by changing this app’s concept after approval to the App Store.

The next submission of this app may require a longer review time, and this app will not be eligible for an expedited review until this issue is resolved.

Next Steps

  • Review the Performance section of the App Store Review Guidelines.
  • Ensure your app is compliant with all sections of the App Store Review Guidelines and the Terms & Conditionsof the Apple Developer Program.
  • Once your app is fully compliant, resubmit your app for review.

Submitting apps designed to mislead or harm customers or evade the review process may result in the termination of your Apple Developer Program account. Review the Terms & Conditions of the Apple Developer Program to learn more about our policies regarding termination.

If you believe your app is compliant with the App Store Review Guidelines, you may submit an appeal. Alternatively, you may provide additional details about your app by replying directly to this message.

是因为参考了这篇文章进行操作:
iOS自动代码混淆
就审核不过。。。

2018-06-25 11:54:16 weixin_42135642 阅读数 720

最新上线ios的项目,苹果那边审核反馈:

Guideline 2.1 - Information Needed

This type of app has been identified as one that may violate one or more of the following App Store Review Guidelines. Specifically, these types of apps often:
1.1.6 - Include false information, features, or misleading metadata.
2.3.0 - Undergo significant concept changes after approval
2.3.1 - Have hidden or undocumented features, including hidden "switches" that redirect to a gambling or lottery website
3.1.1 - Use payment mechanisms other than in-app purchase to unlock features or functionality in the app
4.3.0 - Are a duplicate of another app or are conspicuously similar to another app
5.2.1 - Were not submitted by the legal entity that owns and is responsible for offering any services provided by the app
5.3.4 - Do not have the necessary licensing and permissions for all the locations where the app is used

其他问题都好解决,但是4.3.0这个说代码重复了,需要混淆,其他很多语言都有相应的混淆工具,但是我们用的c++,网上搜索了一个专门做c++混淆的工具,C/C++ Obfuscator,但是是收费的,之后自己写了一个工具,把所有代码都混淆了,而且完全不影响原有项目的结构,还可以自定义插入了垃圾代码,最后顺利通过审核了。

iOS实现代码混淆

阅读数 299

没有更多推荐了,返回首页