iOS马甲包过审经验4.3和2.1的过包

时间:2024-02-20 20:48:54

version_update_

1. 机审原理

我们虽然无法得知苹果实际的机审原理,但从程序员的角度还是能分析出一些东西的。ynapp,zhhapp,

1.1 首先OC和C++代码编译出的二进制文件,有点经验和反编译过的应该都知道:
删注释神马的是没用的,因为注释是不会被编译进包里
改类名是靠谱的,因为反编译出来能看到类名,改掉它显然是会造成包不一样
增改函数也是靠谱的,同样是因为反编译能看到
改文件夹或者文件名应该是不太靠谱的,编译的时候会根据路径来引用查找,编译之后应该是根据在包里的相对内存地址来查找类和函数,跟你编译时的文件名称和路径关系应该不大。不过为了方便和代码的统一,更换时可以顺便换了。
1.2 然后是一些资源文件如图片、音效
路径和文件名相当可能或者绝对是有用的,可惜修改代价有点高
文件的md5值以程序员的角度来看才是真正区分文件是否一致的标准,我们有理由相信我们的苹果同行也用了这个来判断是否重复。所以一些修改md5值的操作如添加空行、注释、额外字节,应该也被考虑加上。
1.3 最后是相似的判定,,应该是相似率高于某个值才认为你跟其他的重复了,针对像改资源文件名这种代价太高的可能暂不考虑的操作,我们只能添加垃圾文件提高总值来降低重复率了。 
2. 混淆方法
2.1 修改类名文件名
先说下手动操作,无非是在xcode上修改文件名类名,然后在可能引用的地方替换类名和文件名(header),要注意的地方是替换的时候要选中匹配大小写;然后是文件夹名称跟文件名一样的时候,可能文件夹名称也要跟着改名,否则替换之后路径引用可能找不到