ios 自动生成垃圾代码(4.3方策)

时间:2020-11-28 09:06:26

由于各种原因,苹果机审的时候,就好像大学论文机审一样,会进行app代码查重,一般你提交的代码重复率高于45%就会直接被拒。

需要使用“垃圾代码”填充工程代码文件,降低重复率,自动生成垃圾代码,过程如下:


#import "ViewController.h"

@interface ViewController ()
@property(strong,nonatomic)NSMutableArray *lettersArr;
@property(strong,nonatomic)NSMutableArray *numbersArr;
@property(strong,nonatomic)NSMutableArray *lettersArrAndNumbers;
@property(strong,nonatomic)NSMutableArray *paramesNameArr;
@property(strong,nonatomic)NSMutableArray *paramesTypeArr;
@property(strong,nonnull)NSString *str;
//暂时int NSString* BOOL
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.paramesNameArr = [[NSMutableArray alloc] initWithCapacity:0];
    self.paramesTypeArr = [[NSMutableArray alloc] initWithCapacity:0];
    // Do any additional setup after loading the view, typically from a nib.
}
/*-(void)dasdwdaWithdasdsas:(int)dasdas asdsadas:(nsstring*)adas dasdasdas:(Bool)age{
 int dasdas = dasdas;
 nsstring sadas = adas;
 sadas* age = sadas;
 }
 */
- (IBAction)makeFuntion:(id)sender {
    self.str = @"";
    int letterNumber = arc4random()%10+1;
    for (int i = 0 ; i<10; i++) {
        [self printCode];
    }
    NSLog(@"txtStr:\n\n\n\n\n\n\n\n\n\n\n\n\n%@",self.str);
}
-(void)printCode{
    //参数个数
//    int letterNumber = self.paramsNumber.text.intValue;
    int letterNumber = arc4random()%10+1;
    [self.paramesNameArr removeAllObjects];
    [self.paramesTypeArr removeAllObjects];
    //根据number,重置这次所有的参数,还有类型
    for (int i = 0; i<letterNumber; i++) {
        [self.paramesNameArr addObject:[self getParamesName]];
        [self.paramesTypeArr addObject:[self getParamesType]];
    }
    
    int rtType = arc4random()%2;
    int rtLogo = arc4random()%2;//+ -
    int rtParamesInddex = arc4random()%(self.paramesNameArr.count);
    NSString *txtStr = @"";
    if (rtType==0) {
        //返回类型为void
        if (rtLogo==0) {
            //-
            txtStr = [txtStr stringByAppendingString:@"-(void)"];
        }else{
            //+
            txtStr = [txtStr stringByAppendingString:@"+(void)"];
        }
    }else{
        //返回类型为某个参数
        if (rtLogo==0) {
            //-
            txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"-(%@)",self.paramesTypeArr[rtParamesInddex]]];
        }else{
            //+
            txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"-(%@)",self.paramesTypeArr[rtParamesInddex]]];
        }
    }
    txtStr = [txtStr stringByAppendingString:[self getPrexWithStr]];
    //-(void)dasdasWith
    for (int i = 0; i<self.paramesNameArr.count; i++) {
        if (self.paramesNameArr.count == 1) {
            txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"%@:(%@)%@{\n",self.paramesNameArr[i],self.paramesTypeArr[i],self.paramesNameArr[i]]];
        }else{
            if (i==0) {
                txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"%@:(%@)%@",self.paramesNameArr[i],self.paramesTypeArr[i],self.paramesNameArr[i]]];
            }else if (i==self.paramesNameArr.count-1){
                txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@" %@:(%@)%@{\n",self.paramesNameArr[i],self.paramesTypeArr[i],self.paramesNameArr[i]]];
                
            }else{
                txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"  %@:(%@)%@",self.paramesNameArr[i],self.paramesTypeArr[i],self.paramesNameArr[i]]];
            }
        }
        
    }
    //-(void)asdasdaWithad:(int)ad{
    for (int i = 0; i<self.paramesNameArr.count; i++) {
        txtStr = [txtStr stringByAppendingString:[self getOneLineWithIndex:i]];
    }
    /*-(void)asdasdaWithad:(int)ad{
     int a = 1;
     NSString *b = @"dasdas";
     */
    if (rtType==0) {
        txtStr = [txtStr stringByAppendingString:@"\n}\n"];
    }else{
        txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"return %@;",self.paramesNameArr[rtParamesInddex]]];
        txtStr = [txtStr stringByAppendingString:@"\n}\n"];
    }
//    NSLog(@"txtStr:\n%@",txtStr);
    self.str = [self.str stringByAppendingString:txtStr];
    self.str = [self.str stringByAppendingString:@"\n"];
}
-(NSString*)getOneLineWithIndex:(int)index{
    //int a = 1
    NSString *line = @"";
    if ([self.paramesTypeArr[index] isEqualToString:@"int"]) {
        line = [NSString stringWithFormat:@"int the%@ = %d;\n",self.paramesNameArr[index],arc4random()%9999];
    }else if ([self.paramesTypeArr[index] isEqualToString:@"NSString*"]){
        line = [NSString stringWithFormat:@"NSString* the%@ = @\"%@\";\n",self.paramesNameArr[index],[self getPrexWithStr]];
    }else if ([self.paramesTypeArr[index] isEqualToString:@"BOOL"]){
        line = [NSString stringWithFormat:@"BOOL the%@ = %d;\n",self.paramesNameArr[index],arc4random()%2==0?TRUE:FALSE];
    }
    return line;
}
-(NSString*)getPrexWithStr{
    //1-20位
    //1-10位,字母开头
    int random = arc4random()%20+1;
    NSString *str = @"";
    for (int i = 0; i<random; i++) {
        if (i==0) {
            str = [str stringByAppendingString:[self.lettersArr objectAtIndex:arc4random()%self.lettersArr.count]];
        }else{
            str = [str stringByAppendingString:[self.lettersArrAndNumbers objectAtIndex:arc4random()%self.lettersArrAndNumbers.count]];
        }
        
    }
    str = [str stringByAppendingString:@"With"];
    return str;
}
-(NSString *)getParamesName{
    //1-10位,字母开头
    int random = arc4random()%10+1;
    NSString *parames = @"";
    for (int i = 0; i<random; i++) {
        if (i==0) {
            parames = [parames stringByAppendingString:[self.lettersArr objectAtIndex:arc4random()%self.lettersArr.count]];
        }else{
             parames = [parames stringByAppendingString:[self.lettersArrAndNumbers objectAtIndex:arc4random()%self.lettersArrAndNumbers.count]];
        }
       
    }
    return parames;
}
-(NSString *)getParamesType{
    NSArray*arr = @[@"int",@"NSString*",@"BOOL"];
    return arr[arc4random()%3];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
-(NSMutableArray *)lettersArr{
    if (!_lettersArr) {
        _lettersArr = [NSMutableArray arrayWithCapacity:0];
        [_lettersArr addObjectsFromArray:@[@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",@"i",@"j",@"k",@"l",@"m",@"n",@"o",@"p",@"q",@"r",@"s",@"t",@"u",@"v",@"w",@"x",@"y",@"z"]];
    }
    return _lettersArr;
}
-(NSMutableArray *)numbersArr{
    if (!_numbersArr) {
        _numbersArr = [NSMutableArray arrayWithCapacity:0];
        [_numbersArr addObjectsFromArray:@[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"]];
    }
    return _numbersArr;
}
-(NSMutableArray *)lettersArrAndNumbers{
    if (!_lettersArrAndNumbers) {
        _lettersArrAndNumbers = [NSMutableArray arrayWithCapacity:0];
        [_lettersArrAndNumbers addObjectsFromArray:self.lettersArr];
        [_lettersArrAndNumbers addObjectsFromArray:self.numbersArr];
    }
    return _lettersArrAndNumbers;
}







@end

上面版本有几率会随机在一个方法中生成相同参数名,如:-(void)a:(int)a a(int)a{...},而且警告较多,下面上升级版:


#import "ViewController.h"

@interface ViewController ()
@property(strong,nonatomic)NSMutableArray *lettersArr;
@property(strong,nonatomic)NSMutableArray *numbersArr;
@property(strong,nonatomic)NSMutableArray *lettersArrAndNumbers;
@property(strong,nonatomic)NSMutableArray *paramesNameArr;
@property(strong,nonatomic)NSMutableArray *paramesTypeArr;
@property(strong,nonatomic)NSMutableArray *systemStrArr;
@property(strong,nonnull)NSString *str;
//暂时int NSString* BOOL
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.paramesNameArr = [[NSMutableArray alloc] initWithCapacity:0];
    self.paramesTypeArr = [[NSMutableArray alloc] initWithCapacity:0];
    // Do any additional setup after loading the view, typically from a nib.
}
/*-(void)dasdwdaWithdasdsas:(int)dasdas asdsadas:(nsstring*)adas dasdasdas:(Bool)age{
 int dasdas = dasdas;
 nsstring sadas = adas;
 sadas* age = sadas;
 }
 */
- (IBAction)makeFuntion:(id)sender {
    self.str = @"";
    int letterNumber = arc4random()%10+100;
    for (int i = 0 ; i<letterNumber; i++) {
        [self printCode];
    }
    NSLog(@"txtStr:\n\n\n\n\n\n\n\n\n\n\n\n\n%@",self.str);
}
-(void)printCode{
    //参数个数
//    int letterNumber = self.paramsNumber.text.intValue;
    int letterNumber = arc4random()%10+1;
    [self.paramesNameArr removeAllObjects];
    [self.paramesTypeArr removeAllObjects];
    //根据number,重置这次所有的参数,还有类型
    for (int i = 0; i<letterNumber; i++) {
        [self.paramesNameArr addObject:[self getParamesName]];
        [self.paramesTypeArr addObject:[self getParamesType]];
    }
    
    int rtType = arc4random()%2;
    int rtLogo = arc4random()%2;//+ -
    int rtParamesInddex = arc4random()%(self.paramesNameArr.count);
    NSString *txtStr = @"";
    if (rtType==0) {
        //返回类型为void
        if (rtLogo==0) {
            //-
            txtStr = [txtStr stringByAppendingString:@"-(void)"];
        }else{
            //+
            txtStr = [txtStr stringByAppendingString:@"+(void)"];
        }
    }else{
        //返回类型为某个参数
        if (rtLogo==0) {
            //-
            txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"-(%@)",self.paramesTypeArr[rtParamesInddex]]];
        }else{
            //+
            txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"-(%@)",self.paramesTypeArr[rtParamesInddex]]];
        }
    }
    txtStr = [txtStr stringByAppendingString:[self getPrexWithStr]];
    //-(void)dasdasWith
    for (int i = 0; i<self.paramesNameArr.count; i++) {
        if (self.paramesNameArr.count == 1) {
            txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"%@:(%@)%@{\n",self.paramesNameArr[i],self.paramesTypeArr[i],self.paramesNameArr[i]]];
        }else{
            if (i==0) {
                txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"%@:(%@)%@",self.paramesNameArr[i],self.paramesTypeArr[i],self.paramesNameArr[i]]];
            }else if (i==self.paramesNameArr.count-1){
                txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@" %@:(%@)%@{\n",self.paramesNameArr[i],self.paramesTypeArr[i],self.paramesNameArr[i]]];
                
            }else{
                txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"  %@:(%@)%@",self.paramesNameArr[i],self.paramesTypeArr[i],self.paramesNameArr[i]]];
            }
        }
        
    }
    //-(void)asdasdaWithad:(int)ad asdadas:(BOOL)asdadas{
    for (int i = 0; i<self.paramesNameArr.count; i++) {
        txtStr = [txtStr stringByAppendingString:[self getOneLineWithIndex:i]];
    }
    /*-(void)asdasdaWithad:(int)ad{
     int a = 1;
     NSString *b = @"dasdas";
     */
    for (int i = 0; i<self.paramesNameArr.count; i++) {
        txtStr = [txtStr stringByAppendingString:[self setNilFuntionWithInddex:i]];
    }
    /*-(void)asdasdaWithad:(int)ad{
     int a = 1;
     NSString *b = @"dasdas";
     a = 0;
     b = @"";
     */
    
    if (rtType==0) {
        txtStr = [txtStr stringByAppendingString:@"\n}\n"];
    }else{
        txtStr = [txtStr stringByAppendingString:[NSString stringWithFormat:@"return %@;",self.paramesNameArr[rtParamesInddex]]];
        txtStr = [txtStr stringByAppendingString:@"\n}\n"];
    }
//    NSLog(@"txtStr:\n%@",txtStr);
    self.str = [self.str stringByAppendingString:txtStr];
    self.str = [self.str stringByAppendingString:@"\n"];
}
-(NSString*)getOneLineWithIndex:(int)index{
    //int a = 1
    NSString *line = @"";
    if ([self.paramesTypeArr[index] isEqualToString:@"int"]) {
        line = [NSString stringWithFormat:@"int the%@ = %d;\n",self.paramesNameArr[index],arc4random()%9999];
    }else if ([self.paramesTypeArr[index] isEqualToString:@"NSString*"]){
        line = [NSString stringWithFormat:@"NSString* the%@ = @\"%@\";\n",self.paramesNameArr[index],[self getPrexWithStr]];
    }else if ([self.paramesTypeArr[index] isEqualToString:@"BOOL"]){
        line = [NSString stringWithFormat:@"BOOL the%@ = %@;\n",self.paramesNameArr[index],arc4random()%2==0?@"TRUE":@"FALSE"];
    }
    return line;
}
//parame = nil ;
-(NSString*)setNilFuntionWithInddex:(int)index{
    NSString *line = @"";
    if ([self.paramesTypeArr[index] isEqualToString:@"int"]) {
        line = [NSString stringWithFormat:@"the%@ = 0;\n",self.paramesNameArr[index]];
    }else if ([self.paramesTypeArr[index] isEqualToString:@"NSString*"]){
        line = [NSString stringWithFormat:@"the%@ = @\"\";\n",self.paramesNameArr[index]];
    }else if ([self.paramesTypeArr[index] isEqualToString:@"BOOL"]){
        line = [NSString stringWithFormat:@"the%@ = %@;\n",self.paramesNameArr[index],arc4random()%2==0?@"TRUE":@"FALSE"];
    }
    return line;
}
-(NSString*)getPrexWithStr{
    //1-20位
    //1-10位,字母开头
    int random = arc4random()%20+1;
    NSString *str = @"";
    for (int i = 0; i<random; i++) {
        if (i==0) {
            str = [str stringByAppendingString:[self.lettersArr objectAtIndex:arc4random()%self.lettersArr.count]];
        }else{
            str = [str stringByAppendingString:[self.lettersArrAndNumbers objectAtIndex:arc4random()%self.lettersArrAndNumbers.count]];
        }
        
    }
    str = [str stringByAppendingString:@"With"];
    return str;
}
-(NSString *)getParamesName{
    //1-10位,字母开头
    int random = arc4random()%10+1;
    NSString *parames = @"";
    for (int i = 0; i<random; i++) {
        if (i==0) {
            parames = [parames stringByAppendingString:[self.lettersArr objectAtIndex:arc4random()%self.lettersArr.count]];
        }else{
             parames = [parames stringByAppendingString:[self.lettersArrAndNumbers objectAtIndex:arc4random()%self.lettersArrAndNumbers.count]];
        }
       
    }
    //防止随机参数词语是if,return,void等与系统已命名过的词语冲突
    if ([self isStrDisCmoplictSystemWithStr:parames]) {
        //如果冲突,就将词语倒叙,如if - >if
        [self disStringWithStr:parames];
    }
    //先生成一个parames,在判断相同的话,就一直循环,直到不相同为止
    while ([self isSameToParamesArrOneParameWithStr:parames]) {
        for (int i = 0; i<random; i++) {
            if (i==0) {
                parames = [parames stringByAppendingString:[self.lettersArr objectAtIndex:arc4random()%self.lettersArr.count]];
            }else{
                parames = [parames stringByAppendingString:[self.lettersArrAndNumbers objectAtIndex:arc4random()%self.lettersArrAndNumbers.count]];
            }
            
        }
    }
    
    return parames;
}
//如果参数数组里已经有参数d,就不再生成参数d。
-(BOOL)isSameToParamesArrOneParameWithStr:(NSString*)str{
    for (int i = 0; i < self.paramesNameArr.count; i++) {
        if ([str isEqualToString:self.paramesNameArr[i]]) {
            return TRUE;
        }
    }
    return FALSE;
}
-(BOOL)isStrDisCmoplictSystemWithStr:(NSString*)str{
    for (int i = 0; i < self.systemStrArr.count; i++) {
        if ([str isEqualToString:self.systemStrArr[i]]) {
            return TRUE;
        }
    }
    return FALSE;
}
//if = fi , or =  ro , and = dna , while = elihw , return = nruter , super = repus , void = diov ,
-(NSString*)disStringWithStr:(NSString *)str{
    NSString *newStr = @"";
    for (int i = 0; i<str.length; i++) {
        newStr = [newStr stringByAppendingString:[NSString stringWithFormat:@"%@", [str substringWithRange:NSMakeRange(str.length-1-i, 1)] ]];
    }
    return newStr;
}
-(NSString *)getParamesType{
    NSArray*arr = @[@"int",@"NSString*",@"BOOL"];
    return arr[arc4random()%3];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
-(NSMutableArray *)lettersArr{
    if (!_lettersArr) {
        _lettersArr = [NSMutableArray arrayWithCapacity:0];
        [_lettersArr addObjectsFromArray:@[@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",@"i",@"j",@"k",@"l",@"m",@"n",@"o",@"p",@"q",@"r",@"s",@"t",@"u",@"v",@"w",@"x",@"y",@"z"]];
    }
    return _lettersArr;
}
-(NSMutableArray *)numbersArr{
    if (!_numbersArr) {
        _numbersArr = [NSMutableArray arrayWithCapacity:0];
        [_numbersArr addObjectsFromArray:@[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"]];
    }
    return _numbersArr;
}
-(NSMutableArray *)lettersArrAndNumbers{
    if (!_lettersArrAndNumbers) {
        _lettersArrAndNumbers = [NSMutableArray arrayWithCapacity:0];
        [_lettersArrAndNumbers addObjectsFromArray:self.lettersArr];
        [_lettersArrAndNumbers addObjectsFromArray:self.numbersArr];
    }
    return _lettersArrAndNumbers;
}
-(NSMutableArray *)systemStrArr{
    if (!_systemStrArr) {
        _systemStrArr = [NSMutableArray arrayWithCapacity:0];
        [_systemStrArr addObjectsFromArray:@[@"if",@"or",@"and",@"while",@"return",@"super",@"void"]];
        
    }
    return _systemStrArr;
}






@end

代码有点乱,不过思路很简单,就不一一解释了,makeFuntion是点击按钮的方法,直接链接你的xib里的按钮就好了;点下按钮,会随机打印1000行左右方法代码(可控,在按钮点击事件里,改变for循环重复次数即可),在控制台复制下,填充进你的工程每个。m文件即可.


欢迎加群讨论:565191947