shell脚本初试(代码混淆)

2,052 阅读1分钟

#!/usr/bin/env bash

获取指定长度的方法-随机字符串 参数为$1

ramdomMethodString() { openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c $1 }

获取指定长度的参数-随机字符串 参数为$1

ramdomParmString() { openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 6 }

获取随机参数类型

getParmType(){ array=(NSString* int BOOL) index=[RANDOM%3] echo {array[index]} }

指定脚本操作的路径

runShellPath='iPhoneBrowser/Controllers' #存储混淆配置文件的路径 ObfuscatedCodePath="/Users/a123451/Desktop/ObfuscatedCode" #混淆配置文件完整路径 ObfuscatedCodeName=/Users/a123451/Desktop/ObfuscatedCode/ObfuscatedCode.txt #在桌面创建存储混淆配置文件的文件夹 if [ ! -d "/ObfuscatedCode" ];then mkdir ObfuscatedCodePath
else
	rm -rObfuscatedCodePath mkdir ObfuscatedCodePath
	echo "文件夹已存在"
fi
#获取指定目录下.h文件里的方法名
array1=(grep -h -r -I "^[-+]" $runShellPath --include '.h' |sed "s/[+-]//g"|sed "s/[();,: ^/{]/ /g"|sed "s/[ ]</</"| sed "/^[ ]IBAction/d"|awk '{split(0,b," "); print b[2]; }'| sort|uniq |sed "/^/d" ) #获取指定目录下.h文件里的类名 array2=(grep -h -r -I  "^@interface"runShellPath --include '.h' |sed "s/@interface//g"|cut -d ':' -f 1|sort|uniq ) #获取指定目录下.h文件里的协议名 array3=(grep -h -r -I  "^@protocol"runShellPath --include '.h' |sed "s/@protocol//g"|cut -d '<' -f 1|sort|uniq )

echo ${array1[*]}

echo ${array2[*]}

echo ${array3[*]}

resultArray=() for method in ${array1[*]}; do

length=${#method} #方法名长
methodRamdom=`ramdomMethodString $length` #根据方法名长度获取随机字符串长度
parmName1=`ramdomParmString` #获取参数名1
parmName2=`ramdomParmString` #获取参数名2
parmType=`getParmType`	#参数类型
echo $method--$methodRamdom--$parmName1--$parmType--$parmName2 >>$ObfuscatedCodeName

done