GithubHelp home page GithubHelp logo

klgeneratespamcode's Introduction

KLGenerateSpamCode 垃圾代码生成器

本工具用于应对苹果对重复应用的审核(Guideline 4.3 Design Spam),避免苹果机审检测概率。

主要功能

  1. 修改工程名
  2. 修改类名前缀
  3. 扫描工程中的代码,生成同等数量的 Category 文件,文件中及是同等方法数量的垃圾代码。
  4. 修改 xxx.xcassets 文件夹中的 png 资源文件名。
  5. 删除代码中的所有注释和空行。

使用

使用源码

  1. 下载源码。
  2. 用 Xcode 打开工程并配置参数。如图配置参数
  3. 运行

使用二进制文件,在终端中执行 GenerateSpamCode

$ ./GenerateSpamCode \
/Users/kelei/Documents/work/git/projectName/source \
-deleteComments

参数说明

  • (必填) 源码文件夹绝对路径(如:/Users/kelei/Documents/work/git/projectName/source
  • -modifyProjectName [原名称]>[新名称] 修改工程名。程序会修改原名称-Swift.hPodfile原名称-Bridging-Header.h源码文件夹绝对路径原名称.xcodeproj原名称.xcworkspace的名称和内容。Podfile被修改后需要手动pod install
  • -modifyClassNamePrefix [工程文件 xcodeproj 绝对路径] [原前缀]>[新前缀] 修改源代码类名前缀。程序会扫描源码文件夹绝对路径下的 .h .swift 文件,修改文件名,修改使用该类名的代码,修改工程文件中的文件名。文件名有原前缀的会修改成新前缀,如:原前缀ViewController变成新前缀ViewController;没有原前缀的会增加新前缀,如:ViewController变成新前缀ViewController
  • -spamCodeOut [垃圾代码文件输出目录] [垃圾代码方法增加的参数名] 生成垃圾代码。程序会扫描源码文件夹绝对路径下的 .m .swift 文件中的类和方法,并生成categoryextension文件,文件中的方法是在代码原方法的基础上增加垃圾代码方法增加的参数名参数。如:-spamCodeOut /dir AppLog ,会将- (void)setupKeys {}生成为+ (BOOL)setupKeysAppLog:(NSInteger)AppLog { return AppLog % 20 == 0; },会将- (void)foo:(NSString *)str {}生成为+ (BOOL)fooAppLog:(NSInteger)AppLog { return AppLog % 23 == 0; }
  • -ignoreDirNames [忽略文件夹名称字符串] 忽略这些文件夹,对-modifyClassNamePrefix-spamCodeOut-deleteComments参数有效。目前只会忽略源码文件夹绝对路径下一级的这些目录。如:/p/s -ignoreDirNames categorys,那么/p/s/categorys会被忽略,但/p/s/viewControllers/categorys不会忽略。
  • -handleXcassets 修改xxx.xcassets文件夹中的 png 资源文件名,同时也Contents.json文件中的关联名称,不会影响代码中使用图片。
  • -deleteComments 删除工程目录下 .h .m .swift 文件中的注释和空行。

另外修改图片 hash 值的方法

使用 ImageMagick 对 png 图片做轻量压缩,及不损失图片质量,又可改变图片文件 hash 值。方法:

  1. 安装 ImageMagick,brew install imagemagick
  2. 压缩工程目录下所有 png 文件,find . -iname "*.png" -exec echo {} \; -exec convert {} {} \;

使用经验

就我 2017-11 月的提交情况来看,只需要做如下修改就可以上马甲包了。

  1. 修改工程名
  2. 修改类名前缀
  3. 修改图片文件 Hash 值
  4. 修改 .xcassets 中的图片文件名
  5. 用别的电脑打包

已知问题

  • 生成的垃圾代码文件可能是 .m 文件中实现的私有类,编译垃圾代码可能会报错,删除该垃圾代码 .h .m 文件及可。

klgeneratespamcode's People

Contributors

klaus01 avatar ranajagveer avatar sunln avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

klgeneratespamcode's Issues

KLGenerateSpamCode 报错

您好,请问我用了这个您的代码 按照教程设置后,
修改 Xcassets 中的图片名称完成
删除注释和空行完成
打开文件 /Users/xxxx/Desktop/work/xxxx/ReactNative/study/HelloRN-master/node_modules/react-native-windows/ReactWindows/ChakraBridge/Release/pch.pch 失败:The file “pch.pch” couldn’t be opened using text encoding Unicode (UTF-8).
(lldb)
这个错误,但是我的源文件不在这个文件夹内的。好像会修改到其他东西??请问什么问题

libc++abi.dylib: terminating with uncaught exception of type NSException

执行./GenerateSpamCode \

/Users/xxx/Documents/work/XXX
-deleteComments
提示:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSRegularExpression enumerateMatchesInString:options:range:usingBlock:]: nil argument'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff51ec9571 __exceptionPreprocess + 256
1 libobjc.A.dylib 0x00007fff7de7aefb objc_exception_throw + 48
2 CoreFoundation 0x00007fff51ec93a3 +[NSException raise:format:] + 193
3 Foundation 0x00007fff541e50dc -[NSRegularExpression(NSMatching) enumerateMatchesInString:options:range:usingBlock:] + 223
4 Foundation 0x00007fff541e4feb -[NSRegularExpression(NSMatching) matchesInString:options:range:] + 146
5 GenerateSpamCode 0x00000001082eae56 regularReplacement + 502
6 GenerateSpamCode 0x00000001082ed8ba deleteComments + 794
7 GenerateSpamCode 0x00000001082ed7b0 deleteComments + 528
8 GenerateSpamCode 0x00000001082ed7b0 deleteComments + 528
9 GenerateSpamCode 0x00000001082ed7b0 deleteComments + 528
10 GenerateSpamCode 0x00000001082ed7b0 deleteComments + 528
11 GenerateSpamCode 0x00000001082ed7b0 deleteComments + 528
12 GenerateSpamCode 0x00000001082ed7b0 deleteComments + 528
13 GenerateSpamCode 0x00000001082ec2ef main + 3695
14 libdyld.dylib 0x00007fff7ef41085 start + 1
15 ??? 0x0000000000000003 0x0 + 3
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6

插件运行成功后,.pbxproj工程文件打不开

控制台输出:
修改 Xcassets 中的图片名称完成
删除注释和空行完成
修改工程名完成
开始修改类名前缀...
修改类名前缀完成
生成垃圾代码完成
Program ended with exit code: 0

运行完成后查看原工程,发现工程名没改,然后工程文件XXX.pbxproj打不开

有些功能没成功.....

这 git 的评论功能也是把我搞晕了,想替换评论都不行....
我想问下,为什么我类名改成功了,方法名前缀却没替换掉,还有log说垃圾代码打印生成完成也看不到

这个脚本用不好

运行老是提示-deleteComments不存在
Program ended with exit code: 1
其他的也一样 感觉我用的方法不对 有联系方式吗?

工程名无法修改

其他的命令,运行后都正常,在执行修改工程名时,只是修改了一个文件夹的名字

有些不懂的地方

我设置完参数 最后一步 GenerateSpamCode是什么
使用二进制文件,在终端中执行 GenerateSpamCode

$ ./GenerateSpamCode
/Users/kelei/Documents/work/git/projectName/source
-deleteComments

imageClick 求详细 教程

能够给个截图 这下面 是什么。。 除了安装 brew install imagemagick 下面 是怎么操作的 实在不知道
// find . -iname ".png" -exec echo {} ; -exec convert {} {} ;
// or
// find . -iname "
.png" -exec echo {} ; -exec convert {} -quality 95 {} ;

这个真的管用?

你好,我用你这个修改包的名字的时候就文件夹的名字改了,其余的没有改变。还有,生成的垃圾代码只是一些分类,但是核心文件的方法名,属性名都没改变,只是改变类名了。这个状态真的能过审核??最近被4.3搞的头大了

再提个建议,对字符的判断问题

1.有时候会误删除//字符,比如我的代码里auto nFind=strUrl.find("//");就会删成这样auto nFind=strUrl.find("
2.对于含有乱码注释的文件,打不开,具体报错方法是:

            NSError *error = nil;
            NSMutableString *fileContent = [NSMutableString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
            
            if (error) {
                printf("打开文件 %s 失败:%s\n", path.UTF8String, error.localizedDescription.UTF8String);
                abort();
                
            }

我的文件乱码注释是://∑˛ŒÒ∆˜∂œø™¡¨Ω”,是否换个编解码试一下,不用NSUTF8StringEncoding?

和你配置的一样,出现如下问题

打开工程文件 /Users/wt/Desktop/QQJXLuckPay_Mains/QQJXLuckPay.xcodeproj/project.pbxproj 失败:The file “project.pbxproj” couldn’t be opened because there is no such file.

一直提示 缺少垃圾函数调用名

工程名可以修改成功
无法生成垃圾函数 以及函数名,有时回报缺少 NewClass 代码函数调用名
有给你发邮件不知道收到了没 可以加我一下 13189067759 谢谢
Uploading 屏幕快照 2018-08-31 下午8.27.58.png…

使用 ImageMagick 对 png 图片做轻量压缩失败

使用 ImageMagick 对 png 图片做轻量压缩,及不损失图片质量,又可改变图片文件 hash 值。方法:

安装 ImageMagick,brew install imagemagick
压缩工程目录下所有 png 文件,find . -iname ".png" -exec echo {} ; -exec convert {} {} ;
使用 find . -iname "
.png" -exec echo {} ; -exec convert {} {} ; 报错
dyld: Library not loaded: /ImageMagick-7.0.7/lib/libMagickCore-7.Q16HDRI.5.dylib
Referenced from: /Users/xiaojie/Desktop/worlk/ImageMagick-7.0.7/bin/convert
Reason: image not found

framework 是否可以忽略

打开文件 /Users/user/Desktop/XXX/XXX/XXXX/Framework/XXXXX.framework/Headers/IOSemvapi.h 失败:The file “IOSemvapi.h” couldn’t be opened using text encoding Unicode (UTF-8

无限等待审核中

目前苹果针对马甲应用采用软暴力,疑似应用全部无限等待审核中。。

对于这种情况,这个工具还有解么?
貌似混淆也没用了,大佬目前使用情况如何?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.