【iOS】iOS馬甲包製作+OC、Swift垃圾程式碼生成指令碼
阿新 • • 發佈:2018-11-09
文章目錄
一、馬甲包介紹
1、什麼是馬甲包
馬甲包是利用APP Store規則漏洞,通過開發人員的技術手段,在多個地區平臺上架同一產品。馬甲包和主包內容功能是一樣的。
2、為什麼要製作馬甲包
不同的產品定位,不同的產品需要,會需要一套程式碼上架多個產品。
- 產品定位不一樣,馬甲包用來做一些導量、刷分。
- 抗風險。先用馬甲包測試新功能,看看市場反應,好的話再在主包上迭代。
- 需要上架到不同國家地區應用市場。
3、怎麼製作馬甲包
UI部分:
- icon和啟動圖替換
- 程式碼裡面文案修改
程式碼部分:
- 修改工程名字
- 修改圖片資源,改變圖片的hash值,不要讓檢測到以前被拒的資源
- 修改類名
- 修改方法名
- 打亂方法順序
- 新增混淆程式碼、垃圾程式碼
打包提審:
- 建議換一個開發者賬號去提交,並且換一個ip
- 更換一臺新電腦打包
- 專案描述、專案宣傳不能和之前的一樣
- 測試賬號不能和之前一樣
- 一個賬號只提交一個包,一臺電腦不能提交超過23個包
二、OC垃圾程式碼生成指令碼
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
#第一步:首先生成一個500位的陣列 駝峰型別的元素 用作檔名 eg:AsdfdfGsd
import random
import os,sys
import string
first = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
second = "abcdefghijklmnopqrstuvwxyz"
number = "345"
index = 0
array = []
for i in range (500):
final=(random.choice(first))
index = random.randint(3, 5)
for i in range(index):
final+=(random.choice(second))
final += (random.choice(first))
for i in range(index):
final+=(random.choice(second))
array.append(final)
print (array)
#第二步:
#用上邊生成的陣列來建立對應的.h和.m檔案
# -*- coding: utf-8 -*-
import random
import os
import string
#建立.h檔案
def text_createH(fileNmae,msg,msg1,propertyNumber,methodArray,msg3):
full_path = sys.path[0] + '/OCFiles/' + fileNmae + '.h'
file = open(full_path, 'w')
file.write('//\n// '+fileNmae+'.h\n// SajiaoShopping\n\n// Created by 某 波 bo on 15/10/23.\n// Copyright © 2017年 阿里郎. All rights reserved.\n//\n\n')
file.write(msg)
file.write(msg1)
propryNameArray = []
for index in range(1,propertyNumber):
propryNameArray.append(random.choice(array))
propryNameArray = list(set(propryNameArray))
for propertyName in propryNameArray:
file.write('@property(nonatomic,strong)'+random.choice(classArray)+' * '+propertyName+';\n')
file.write('\n\n')
for methodName in methodArray:
file.write('- (void)pushTo'+methodName+'VC:(NSDictionary *)info;\n')
file.write(msg3)
file.close()
print('Done')
#建立.m檔案
def text_createM(fileNmae,msg,msg1,methodArray,msg3):
full_path = sys.path[0] + '/OCFiles/' + fileNmae + '.m'
file = open(full_path, 'w')
file.write('//\n// '+fileNmae+'.m\n// SajiaoShopping\n\n// Created by 某 波 bo on 15/10/23.\n// Copyright © 2017年 阿里郎. All rights reserved.\n//\n\n')
file.write(msg)
file.write(msg1)
for methodName in methodArray:
file.write('- (void)pushTo'+methodName+'VC:(NSDictionary *)info\n{\n\n NSMutableArray *array = [NSMutableArray array];\n')
number = random.randint(3, 10)
for i in range(1,number):
file.write(' [array addObject:@"'+random.choice(array)+'"];\n')
file.write('\n}\n\n')
file.write(msg3)
file.close()
print('Done')
classArray = ['NSString','UILabel','NSDictionary','NSData','UIScrollView','UIView']
array = ['HwxrFvrj', 'QnzduQbtdd', 'PvcrwLtqhf', 'UvdhDbjn', 'SuntmyTxvyzg', 'CvlxwBipbp', 'GzrdyzIbimvz', 'CqsjqMmgsp', 'OxaaeuWjhasc', 'NjiardRvwgbi', 'NcculmLtpljq', 'ApoqQrll', 'GkgokDyvjb', 'EblldkVouplj', 'KfdrFvnw', 'SfhyhObftc', 'SmruByoc', 'YzcccvXmpmit', 'OmqvaHpxat', 'XzytsUyvyd', 'MjforNnnyi', 'ZvjhuIdogs', 'BzfrxzSeahxc', 'PycycwFjtpny', 'XvngtoSedljr', 'DktiaCbucd', 'AqbplNuodc', 'MzkvgZuala', 'KdwzIoej', 'AaynatUpqcfd', 'IyvwhZvtjc', 'UmijGmsy', 'AoayndXxghym']
array = list(set(array))
for name in array:
number = random.randint(3, 10)
methodArray = []
for i in range(1,5):
methodArray.append(random.choice(array))
methodArray = list(set(methodArray))#陣列去重
text_createH(name+'ViewController', '#import <UIKit/UIKit.h>\n','@interface '+name+ 'ViewController:'+ 'UIViewController\n\n',number,methodArray,'\n\[email protected]')
text_createM(name+'ViewController', '#import "'+name+'ViewController.h"\n\n' '@interface '+ name+'ViewController()\n\n @end\n\n','@implementation '+name+'ViewController\n\n- (void)viewDidLoad { \n\n [super viewDidLoad];\n\n}\n\n',methodArray,'\n\[email protected]')
三、Swift垃圾程式碼生成指令碼
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import random
import os,sys
import string
#建立.swift檔案
def createSwift(fileNmae,propertyNumber,methodArray):
full_path = sys.path[0] + '/SwiftFiles/' + fileNmae + '.swift'
file = open(full_path, 'w')
file.write('//\n// '+fileNmae+'.swift\n// LinkMall\n\n// Created by Meng on 2018/9/17.\n// Copyright © 2018年 OneThing Ltd. All rights reserved.\n//\n\n')
file.write('import UIKit \n\n' + 'class '+fileNmae+': UIViewController {\n\n')
propryNameArray = []
for index in range(1,propertyNumber):
propryNameArray.append(random.choice(array))
propryNameArray = list(set(propryNameArray))
for propertyName in propryNameArray:
file.write(' public var '+propertyName+':'+random.choice(classArray)+'!\n')
file.write('\n\n')
file.write(' override func viewDidLoad() {\n super.viewDidLoad()\n }\n\n')
for methodName in methodArray:
file.write(' public func '+methodName+'TOVC() {\n\n var realArr = Array<String>()\n')
number = random.randint(10, 15)
for i in range(1,number):
file.write(' realArr.append("'+random.choice(array)+'")\n')
file.write('\n }\n\n')
file.write('}')
file.close()
print('Done')
def createClassName():
first = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
second = "abcdefghijklmnopqrstuvwxyz"
index = 0
array = []
# 設定生成多少個類
classNumber = 100
for i in range(classNumber):
final=(random.choice(first))
#字串長度
index = random.randint(10, 15)
for i in range(index):
final+=(random.choice(second))
final += (random.choice(first))
for i in range(index):
final+=(random.choice(second))
array.append(final)
return array
#屬性型別
classArray = ['UIColor','UILabel','UITableView','UISlider','UIScrollView','UIView','UIButton']
array = createClassName()
array = list(set(array))
for name in array:
number = random.randint(10, 15)
methodArray = []
for i in range(50,100):
methodArray.append(random.choice(array))
methodArray = list(set(methodArray))#陣列去重
createSwift(name+'VController',number,methodArray)