最新iOS 马甲包制作工具和脚本,一次搞定问题

iOS 马甲包制作(Config 配置)准备阶段

链接:马甲包不影响母本的情况下Config配置(这里不多说—->看博客 )

iOS 马甲包混淆代码和添加类名文件工具使用

添加文件类和垃圾代码,以及当前类添加垃圾代码

生成的类文件和垃圾代码

工具下载:工具使用

iOS 马甲包重新命名类修改文件类名脚本

这个是python 脚本 后缀 py 把下面的代码复制txt文件,修改后缀为py

#!/usr/bin/env python3

# coding=utf-8

import os

#原来的前缀

oldPrefix=’SKT’

#新前缀

newPrefix=’ZJP’

fordirpath, _, filenamesinos.walk(‘.’):

forfilenameinfilenames:

iffilename.startswith(oldPrefix):

oldFile = os.path.join(dirpath, filename)

newFile = os.path.join(dirpath, filename.replace(oldPrefix, newPrefix,2))

printnewFile

inFile = open(oldFile)

outFile = open(newFile,’w’)

replacements = {oldPrefix:newPrefix}

forlineininFile:

forsrc, targetinreplacements.iteritems():

line = line.replace(src, target)

outFile.write(line)

inFile.close()

outFile.close()

os.remove(oldFile)

附加视频,修改成功————–类名修改

iOS代码混淆使用教程

代码混淆都是一个很重要的安全技术手段,如何进行全局的自动化代码混淆,以下开源项目详细介绍了如何实现这个目标。

如果你的工程支持cocoapod,你可以直接添加!
pod “STCObfuscator” (注:请用最新版本1.3.0,最好更新下pod repo update master)

把下面的代码加入到Appdelegate didFinishLaunchingWithOptions方法里,
#import "STCObfuscator.h"

#if (DEBUG == 1)
[[STCObfuscator obfuscatorManager] confuseWithRootPath:[NSString stringWithFormat:@"%s", STRING(ROOT_PATH)] resultFilePath:[NSString stringWithFormat:@"%@/STCDefination.h", [NSString stringWithFormat:@"%s", STRING(ROOT_PATH)]] linkmapPath:[NSString stringWithFormat:@"%s", STRING(LINKMAP_FILE)]];
#endif

然后完成下面步骤的设置

步骤一:

在 Build Settings->Preprocessor Macros->DEBUG 中添加环境变量。(注:工程尽量不要放在中文路径下)

LINKMAP_FILE=$(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt复制代码

ROOT_PATH="${SRCROOT}"

步骤二:

在 Build Settings 开启Write Link Map File, 设置成 YES。

步骤三:

将下面的脚本添加到 Build Phases

dir=${SRCROOT}
file_count=0
file_list=`ls -R $dir 2> /dev/null | grep -v '^$'`
for file_name in $file_list
do
temp=`echo $file_name | sed 's/:.*$//g'`
if [ "$file_name" != "$temp" ]; then
cur_dir=$temp
else
if [ ${file_name##*.} = a ]; then
find -P $dir -name $file_name > tmp.txt
var=$(cat tmp.txt)
nm $var > ${file_name}.txt
rm tmp.txt
fi
if [ ${file_name##*.} = framework ]; then
find -P $dir -name ${file_name%%.*} > tmp.txt
var=$(cat tmp.txt)
nm $var > ${file_name}.txt
rm tmp.txt
fi
fi
done.

步骤四:

在预编译文件最前面中添加以下代码:

#if (DEBUG != 1)
#import "STCDefination.h"
#endif

步骤五:

在DEBUG环境下用模拟器运行工程,在STCDefination.h头文件中生成混淆的宏。

所有的混淆符号会保留在工程目录下的confuse.json。

用于反混淆的文件confuse.json:

步骤六:

把工程目录下STCDefination.h头文件加入工程。

混淆后,如果工程增加代码,需要再次混淆,先清空STCDefination.h里面的内容,不能留任何空格和换行,然后pod update,再次在模拟器DEBUG环境下运行。

步骤七:

在 RELEASE 环境下运行工程,实现代码混淆。

1、混淆前

2、混淆后

另外,如果采用jenkins集成了项目,在jenkins中有进行pod update 处理,请在pod update 后加上以下脚本,

其中SRCROOT必须在脚本中配置为jenkins打包job中的要混淆的工程的根目录。

dir=${SRCROOT}/Pods
headerFile=${SRCROOT}/STCDefination.h
file_count=0
file_list=`ls -R $dir 2> /dev/null | grep -v '^$'`
for file_name in $file_list
do
temp=`echo $file_name | sed 's/:.*$//g'`
if [ "$file_name" != "$temp" ]; then
cur_dir=$temp
else
if [ ${file_name##*.} = pch ]; then
echo $file_name
find -P $dir -name $file_name > tmp1.txt
var1=$(cat tmp1.txt)
echo $var1
var2=$(cat $headerFile)
echo "" > $var1
echo "Pipe"
echo "$var2" | while read line
do
echo "$line" >> $var1
done
rm tmp1.txt
fi
let file_count++
fi
done

注:对于大量采用runtime的库比如RAC,RN,尽量不混淆,另外那些采用反射机制映射的类、字段和方法依赖接口的,也不要混淆,这些情况一般自动化的工具很难解决,还是需要手工处理过滤下,比如那些暴露给RN的属性,一旦混淆,RN就崩溃了。


转载于:https://juejin.im/post/5c1848745188256b2e71e4e2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值