1. 程式人生 > >【iOS】iOS馬甲包製作+OC、Swift垃圾程式碼生成指令碼

【iOS】iOS馬甲包製作+OC、Swift垃圾程式碼生成指令碼

文章目錄

一、馬甲包介紹

1、什麼是馬甲包

馬甲包是利用APP Store規則漏洞,通過開發人員的技術手段,在多個地區平臺上架同一產品。馬甲包和主包內容功能是一樣的。

2、為什麼要製作馬甲包

不同的產品定位,不同的產品需要,會需要一套程式碼上架多個產品。

  1. 產品定位不一樣,馬甲包用來做一些導量、刷分。
  2. 抗風險。先用馬甲包測試新功能,看看市場反應,好的話再在主包上迭代。
  3. 需要上架到不同國家地區應用市場。

3、怎麼製作馬甲包

UI部分:

  1. icon和啟動圖替換
  2. 程式碼裡面文案修改

程式碼部分:

  1. 修改工程名字
  2. 修改圖片資源,改變圖片的hash值,不要讓檢測到以前被拒的資源
  3. 修改類名
  4. 修改方法名
  5. 打亂方法順序
  6. 新增混淆程式碼、垃圾程式碼

打包提審:

  1. 建議換一個開發者賬號去提交,並且換一個ip
  2. 更換一臺新電腦打包
  3. 專案描述、專案宣傳不能和之前的一樣
  4. 測試賬號不能和之前一樣
  5. 一個賬號只提交一個包,一臺電腦不能提交超過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)