lua代碼暴力混淆--shell腳本

#! /usr/local/bin/bash

####################################### skip define ##########################################

skipFolderArr=("src/cocos" "src/packages")

skipFileArr=("src/main.lua" "src/gm.lua" "src/config.lua" "src/app/MyApp.lua" "src/app/Utils.lua" "src/app/dataModel/name.lua" "src/app/views/Huodong/TwoTip.lua" "src/app/views/activity/Activity01.lua" "src/app/views/activity/Activity02.lua" "src/app/views/activity/Activity03.lua")

####################################### skip define ##########################################

# define rootPath

rootPath=$1

rootPathLength=${#rootPath}

newProffix="new/"

newProffixLength=${#newProffix}

newRootPath=${newProffix}${rootPath}

newRootPathLength=${#newRootPath}

folderReflactFile="folder-reflact.txt"

fileReflactFile="file-reflact.txt"

####################################### some handler ##########################################

# clear old files

#rm -rf src

rm -rf ${newRootPath} ${folderReflactFile} ${fileReflactFile}

mkdir -p ${newRootPath}

#tar -zxvf src.tar.gz

####################################### some handler ##########################################

# mv map

# origin file path name -> target file path name

declare -A fileNameMap

declare -A filePathNameMap

####################################### utils function ##########################################

# upper string's first letter

function first_letter_upper(){

? ? temp=`echo ${1:0:1} | tr '[a-z]' '[A-Z]'`${1:1}

? ? echo $temp

}

# random switch 0 orn 1

function random_switch(){

? ? temp=$(($RANDOM%2))[圖片]

? ? echo $temp

}

# random string with length

name_string_arr=(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)

function random_string(){

? ? str=""

? ? for ((i=0; i < $1; i++));do str="$str${name_string_arr[$RANDOM%26]}";done

? ? echo $str

}

####################################### utils function ##########################################

# random folder name, length=5.

function randomFolderName(){

? ? echo $(random_string 5)

}

# random file name, length=10.

function randomFileName(){

? ? str=$(random_string 10)

? ? str=$(first_letter_upper $str)

? ? echo $str

}

# check if string in array

# $1 string

function checkFolderIn(){

? ? exist=false

? ? for str in ${skipFolderArr[@]}

? ? do

? ? ? ? if [ $1 == $str ]; then

? ? ? ? ? ? exist=true

? ? ? ? ? ? break

? ? ? ? fi

? ? done

? ? echo $exist

}

# check if string in array

# $1 string

function checkFileIn(){

? ? exist=false

? ? for str in ${skipFileArr[@]}

? ? do

? ? ? ? if [ $1 == $str ]; then

? ? ? ? ? ? exist=true

? ? ? ? ? ? break

? ? ? ? fi

? ? done

? ? echo $exist

}

# handle file path name map save

function handleMapSave(){

? ? # key reduce length

? ? krl=${rootPathLength}+1

? ? # value reduce length

? ? vrl=${newRootPathLength}+1

? ? saveKey=${1:${krl}}

? ? saveKey2=${saveKey//'/'/'.'}

? ? saveValue=${2:${vrl}}

? ? filePathNameMap[${saveKey}]=${saveValue}

? ? filePathNameMap[${saveKey2}]=${saveValue}

}

function writeFolderReflactToFile(){

? ? echo -e ${1}"-----------mkdir----------"${2} >> ${folderReflactFile}

}

function writeFileReflactToFile(){

? ? echo -e ${1}"-----------file path name----------"${2} >> ${fileReflactFile}

}

# traverse folders to collect folders and files

function skipFolderTraverse(){

? ? for file in `ls $1`

? ? do

? ? ? ? if [ -d $1"/"$file ]; then

? ? ? ? ? ? # traverse folder

? ? ? ? ? ? oldPath=$1"/"${file}

? ? ? ? ? ? mkdirPath=${newRootPath}${1:${rootPathLength}}"/"${file}

? ? ? ? ? ? echo ${oldPath}"-----------mkdir----------"${mkdirPath}

? ? ? ? ? ? writeFolderReflactToFile ${oldPath} ${mkdirPath}

? ? ? ? ? ? mkdir -p ${mkdirPath}

? ? ? ? ? ? skipFolderTraverse ${oldPath}

? ? ? ? else

? ? ? ? ? ? # define copy filePathName -> newFilePathName

? ? ? ? ? ? filePathName=${1}"/"${file}

? ? ? ? ? ? newFilePathName=${newRootPath}${1:${rootPathLength}}"/"${file}

? ? ? ? ? ? echo ${filePathName}"-----------file path name----------"${newFilePathName}

? ? ? ? ? ? writeFileReflactToFile ${filePathName} ${newFilePathName}

? ? ? ? ? ? cp ${filePathName} ${newFilePathName}

? ? ? ? fi

? ? done

}

# traverse folders to confuse folders and files

function confuseFolderTraverse(){

? ? for file in `ls $1`

? ? do

? ? ? ? if [ -d $1"/"$file ]

? ? ? ? then

? ? ? ? ? ? oldPath=$1"/"${file}

? ? ? ? ? ? newFolder=$(randomFolderName)

? ? ? ? ? ? newPath=$2"/"${newFolder}

? ? ? ? ? ? mkdirPath=${newRootPath}${1:${rootPathLength}}"/"${file}

? ? ? ? ? ? # folder "cocos" and "package" are con't fixed.

? ? ? ? ? ? if [ $(checkFolderIn ${oldPath}) == true ]; then

? ? ? ? ? ? ? ? echo ${oldPath}"-----------mkdir----------"${mkdirPath}

? ? ? ? ? ? ? ? writeFolderReflactToFile ${oldPath} ${mkdirPath}

? ? ? ? ? ? ? ? mkdir -p ${mkdirPath}

? ? ? ? ? ? ? ? skipFolderTraverse ${oldPath}

? ? ? ? ? ? ? ? continue

? ? ? ? ? ? fi

? ? ? ? ? ? mkdirPath=${newRootPath}${2}"/"${newFolder}

? ? ? ? ? ? echo ${oldPath}"-----------mkdir----------"${mkdirPath}

? ? ? ? ? ? writeFolderReflactToFile ${oldPath} ${mkdirPath}

? ? ? ? ? ? mkdir -p ${mkdirPath}

? ? ? ? ? ? # traverse folder

? ? ? ? ? ? confuseFolderTraverse ${oldPath} ${newPath}

? ? ? ? else

? ? ? ? ? ? # get file suffix

? ? ? ? ? ? fileSuffix="."${file##*.}

#? ? ? ? ? ? echo "-----------file suffix-----------"${fileSuffix}

? ? ? ? ? ? # define fileName -> newFileName

? ? ? ? ? ? fileName=$(basename ${file} ${fileSuffix})

? ? ? ? ? ? newFileName=$(randomFileName)

#? ? ? ? ? ? echo ${fileName}"-----------file name----------"${newFileName}

? ? ? ? ? ? # define file -> newFile

? ? ? ? ? ? newFile=$newFileName$fileSuffix

#? ? ? ? ? ? echo $file"-----------file----------"$newFile

? ? ? ? ? ? # define copy filePathName -> newFilePathName

? ? ? ? ? ? filePathName=${1}"/"${file}

? ? ? ? ? ? newFilePathName=${newRootPath}${2}"/"${newFile}

? ? ? ? ? ? if [ $(checkFileIn ${filePathName}) == true ]; then

? ? ? ? ? ? ? ? newFilePathName=${newRootPath}${2}"/"${file}

? ? ? ? ? ? ? ? echo ${filePathName}"-----------file path name----------"${newFilePathName}

? ? ? ? ? ? ? ? writeFileReflactToFile ${filePathName} ${newFilePathName}

? ? ? ? ? ? ? ? handleMapSave ${filePathName//${fileSuffix}/''} ${newFilePathName//${fileSuffix}/''}

? ? ? ? ? ? ? ? cp ${filePathName} ${newFilePathName}

? ? ? ? ? ? ? ? continue

? ? ? ? ? ? fi

? ? ? ? ? ? echo ${filePathName}"-----------file path name----------"${newFilePathName}

? ? ? ? ? ? writeFileReflactToFile ${filePathName} ${newFilePathName}

? ? ? ? ? ? handleMapSave ${filePathName//${fileSuffix}/''} ${newFilePathName//${fileSuffix}/''}

? ? ? ? ? ? cp ${filePathName} ${newFilePathName}

? ? ? ? ? ? sed -i "s|${fileName}|${newFileName}|g" $newFilePathName

? ? ? ? ? ? fileNameMap[${fileName}]=${newFileName}

? ? ? ? fi

? ? done

}

function replace(){

? ? for file in `ls $1`

? ? do

? ? ? ? if [ -d ${1}"/"$file ]

? ? ? ? then

? ? ? ? ? ? oldPath=${1}"/"${file}

? ? ? ? ? ? #echo ${oldPath}

? ? ? ? ? ? echo ${oldPath:${newProffixLength}}

? ? ? ? ? ? if [ $(checkFolderIn ${oldPath:${newProffixLength}}) == true ]; then

? ? ? ? ? ? ? ? continue

? ? ? ? ? ? fi

? ? ? ? ? ? replace ${oldPath}

? ? ? ? else

? ? ? ? ? ? filePathName=${1}"/"$file

? ? ? ? ? ? for key in ${!filePathNameMap[@]};do

? ? ? ? ? ? ? ? value=${filePathNameMap[${key}]}

? ? ? ? ? ? ? ? echo "sed -i 's|${key}|${value}|g' $filePathName"

? ? ? ? ? ? ? ? sed -i "s|${key}|${value}|g" $filePathName

? ? ? ? ? ? done

? ? ? ? ? ? for key in ${!fileNameMap[@]};do

? ? ? ? ? ? ? ? value=${fileNameMap[${key}]}

? ? ? ? ? ? ? ? echo "sed -i 's|${key}|${value}|g' $filePathName"

? ? ? ? ? ? ? ? sed -i "s|${key}|${value}|g" $filePathName

? ? ? ? ? ? done

? ? ? ? fi

? ? done

}

function handler(){

? ? # traverse folder to handle files

? ? confuseFolderTraverse ${rootPath}

echo "-----------------------------------------------------------------------------------------------------------------"

echo "-----------------------------------------------------------------------------------------------------------------"

echo "----------------------------------------------------traverse-----------------------------------------------------"

echo "-----------------------------------------------------------------------------------------------------------------"

echo "-----------------------------------------------------------------------------------------------------------------"

? ? replace ${newRootPath}

}

handler

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容