Browse Source

重新整理了 inject.sh

hazukieq 1 năm trước cách đây
mục cha
commit
3130d1aa9e
1 tập tin đã thay đổi với 107 bổ sung71 xóa
  1. 107 71
      inject.sh

+ 107 - 71
inject.sh

@@ -4,6 +4,9 @@
 # JUST FOR LEARNING PURPOSES, DON'T USE THIS TO CRACK SOFTWARE.
 # 只是出于学习目的,请勿将其用于破解软件,否则后果自负。用户行为均与本项目作者无关!
 
+#####################################
+####	    函数配置部分	####
+####################################
 # 打印警告日志
 warning() {
     printf "\033[31m-> $*\n\033[0m"
@@ -22,54 +25,11 @@ function onCtrlC() {
 	exit 0
 }
 
-# 待注入数据文件路径
-CUR_HOOK_JS_PATH="./src/hooklog.js"
-
-# Typora 安装路径
-TYPORA_INSTALLED_PATH="/usr/share/typora"
-
-warning "该脚本包含 sudo 指令,请您确保知悉高危命令执行的后果且承担相关代价"
-warning "在执行過程中,请您仔细确认相关提示,当提示「即将执行高危命令」时,那么此种情形将考验您的判断力"
-infos "Typora 安装路径: $TYPORA_INSTALLED_PATH"
-warning "Typora 安装路径是否正确?(y/n)"
-read -r check
-if [[ "${check:0:1}" != "y" ]];then
-	infos "不正确的话你可以尝试输入新的路径:"
-	read -r reply
-	if [[ -z $reply ]];then
-		warning "您输入为空...脚本已正常退出,请稍候重试!"
-		exit 0
-	fi
-	TYPORA_INSTALLED_PATH="$reply"
-fi
-infos "已确认当前安装路径为: $TYPORA_INSTALLED_PATH\n"
-
-
-# 注入 JS 文件的待解压缩包路径
-INJECT_JS_DIR_ASAR_PATH="$TYPORA_INSTALLED_PATH/resources/node_modules.asar"
-
-# 为防止破坏原压缩包,特意复制至当前目录
-if [[ ! -d ./build ]];then
-	mkdir build
-fi
-# 当前压缩包副本路径
-CUR_INJECT_ASAR_PATH="./build/node_modules.asar"
-# 当前重新打包压缩包路径
-CUR_PACKED_ASAR_PATH="${CUR_INJECT_ASAR_PATH}_new"
-# 当前注入 JS 文件的文件夹路径
-CUR_INJECT_JS_DIR_PATH="./build/node"
-
-# 注入 JS 文件路径
-HOOK_JS_WRITE_PATH="$CUR_INJECT_JS_DIR_PATH/raven/hook.js"
-
-# 注入JS文件的目的文件路径
-CUR_INJECT_JS_PATH="$CUR_INJECT_JS_DIR_PATH/raven/index.js"
-
 # 提示高危命令执行
 check_dangerous_cmd(){
 	warning "即将执行 $*"
 	warning "是否确认执行高危命令? (y/n)"
-	read -r dcheck
+	read -p "-> " -r dcheck
 	if [[ "${dcheck:0:1}" != "y" ]];then
 		warning "已取消执行高危命令,程序中止退出..."
 		exit 1 
@@ -77,6 +37,36 @@ check_dangerous_cmd(){
 		infos "正在执行高危命令 $*"
 	fi
 }
+
+# 询问函数:
+#	调用函数后通过 ret 变量获取返回值,
+function ask(){
+	infos "$*"
+	read -p "-> " -r content
+	until [[ ! -z "$content" ]];
+	do
+		infos "$*"
+		read -p "-> " -r content
+	done
+	ret=""
+	ret="$content"
+}
+
+
+check_typora_installed_path(){
+	warning "该脚本包含 sudo 指令,请您确保知悉高危命令执行的后果且承担相关代价"
+	warning "在执行過程中,请您仔细确认相关提示,当提示「即将执行高危命令」时,那么此种情形将考验您的判断力"
+	infos "Typora 安装路径: $*"
+	warning "Typora 安装路径是否正确?(y/n)"
+	ret="$*"
+	read -p "-> " -r check
+	if [[ "${check:0:1}" != "y" ]];then
+		ask "不正确的话你可以尝试输入新的路径:"
+		infos "已确认当前安装路径为: $ret\n"
+	fi
+}
+
+
 # 判断 node 是否安装
 check_node(){
 	warning "检测是否存在 node..."
@@ -109,61 +99,106 @@ append_require2file() {
     echo -e "\nrequire('./hook')">> "$CUR_INJECT_JS_PATH"
 }
 
+#前置准备工作
+mkinit(){
+	# 检查相关文件夹是否存在
+	if file_exist "$CUR_INJECT_JS_DIR_PATH"; then
+		warning "您可能已经注入过 hook 文件了!\n警告:在当前目录下发现 node 文件夹"
+    		infos "您若不确定之前是否注入过该文件的话,请手动删除当前目录下的 node 文件夹($CUR_INJECT_JS_DIR_PATH)!\n"
+    		infos "您可以有以下选择:"
+    		infos "\t 1. 删除目录"
+    		warning "\t\trm $CUR_INJECT_JS_DIR_PATH -r\n"
+    		infos "\t2. 复制已注入压缩包(已确认)至 $INJECT_ASAR_PATH"
+    		warning "\t\tsudo cp $CUR_PACKED_ASAR_PATH $INJECT_JS_DIR_ASAR_PATH"
+    		exit 0
+	fi
+	if file_exists "$INJECT_JS_DIR_ASAR_PATH"; then
+    		warning "未找到 node_modules.asar!"
+    		warning "请确认 Typora 安装目录下是否正确,以及该安装目录下的 resources 中是否存在 node_modules.asar!"
+    		exit 0
+	fi
 
-################## 正式执行部分 ###############
+	# 检查 node 是否存在
+	check_node
 
-if file_exist "$CUR_INJECT_JS_DIR_PATH"; then
-    warning "您可能已经注入过 hook 文件了!\n警告:在当前目录下发现 node 文件夹"
-    infos "您若不确定之前是否注入过该文件的话,请手动删除当前目录下的 node 文件夹($CUR_INJECT_JS_DIR_PATH)!\n"
-    infos "您可以有以下选择:"
-    infos "\t 1. 删除目录"
-    warning "\t\trm $CUR_INJECT_JS_DIR_PATH -r\n"
-    infos "\t2. 复制已注入压缩包(已确认)至 $INJECT_ASAR_PATH"
-    warning "\t\tsudo cp $CUR_PACKED_ASAR_PATH $INJECT_JS_DIR_ASAR_PATH"
-    exit 0
-fi
+	# 复制 asar 文件至当前项目 build 下
+	infos "复制 node_modules 至 当前目录下($(pwd)/build)"
+	check_dangerous_cmd "sudo cp $INJECT_JS_DIR_ASAR_PATH $CUR_INJECT_ASAR_PATH"
+	sudo cp $INJECT_JS_DIR_ASAR_PATH $CUR_INJECT_ASAR_PATH
+}
+
+################## 函数配置部分 ###############
+
+
+
+
+################## 数据配置部分 ###############
+
+# 待注入数据文件路径
+CUR_HOOK_JS_PATH="./src/hooklog.js"
+
+# Typora 安装路径
+TYPORA_INSTALLED_PATH="/usr/share/typora"
+# 再次确认是否正确
+check_typora_installed_path "$TYPORA_INSTALLED_PATH"
+TYPORA_INSTALLED_PATH="$ret"
 
-if [ ! -e "$INJECT_JS_DIR_ASAR_PATH" ]; then
-    warning "未找到 node_modules.asar!"
-    warning "请确认 Typora 安装目录下是否正确,以及该安装目录下的 resources 中是否存在 node_modules.asar!"
-    exit 0
+# 注入 JS 文件的待解压缩包路径
+INJECT_JS_DIR_ASAR_PATH="$TYPORA_INSTALLED_PATH/resources/node_modules.asar"
+
+# 为防止破坏原压缩包,特意复制至当前目录
+if [[ ! -d ./build ]];then
+	mkdir build
 fi
+# 当前压缩包副本路径
+CUR_INJECT_ASAR_PATH="./build/node_modules.asar"
 
-# 检查 node 是否存在
-check_node
+# 当前重新打包压缩包路径
+CUR_PACKED_ASAR_PATH="${CUR_INJECT_ASAR_PATH}_new"
 
-infos "复制 node_modules 至 当前目录下($(pwd)/build)"
+# 当前注入 JS 文件的文件夹路径
+CUR_INJECT_JS_DIR_PATH="./build/node"
 
-check_dangerous_cmd "sudo cp $INJECT_JS_DIR_ASAR_PATH $CUR_INJECT_ASAR_PATH"
-sudo cp $INJECT_JS_DIR_ASAR_PATH $CUR_INJECT_ASAR_PATH
+# 注入 JS 文件路径
+HOOK_JS_WRITE_PATH="$CUR_INJECT_JS_DIR_PATH/raven/hook.js"
+
+# 注入JS文件的目的文件路径
+CUR_INJECT_JS_PATH="$CUR_INJECT_JS_DIR_PATH/raven/index.js"
+
+# 解压缩 Asar 包的程序路径
+ASAR_BIN="./asar_modules/node_modules/@electron/asar/bin/asar.js" 
+################## 数据配置部分 ###############
 
-#if [[ ! -d backup ]];then
-#	mkdir -p ./build/backup
-#fi
-#infos "备份 node_modules 至 ./build/backup 目录下\n"
-#cp $CUR_INJECT_ASAR_PATH ./build/backup
 
+
+################## 正式执行部分 ###############
+# 前置工作初始化
+mkinit
+
+# 解压 asar 文件
 infos "正在解压 node_modues.asar"
 node ./asar_modules/node_modules/@electron/asar/bin/asar.js extract $CUR_INJECT_ASAR_PATH $CUR_INJECT_JS_DIR_PATH
 infos "成功解压至 $(pwd)/node 文件夹中!\n"
 
+# 添加js文件和依赖
 infos "正在将 hook.js 添加至 $CUR_INJECT_JS_DIR_PATH 文件夹中..."
 write_js2file
 infos "正在将依赖添加到 $CUR_INJECT_JS_PATH...\n"
 append_require2file
-
 infos "添加 $CUR_HOOK_JS_PATH 成功!"
 infos "在 $CUR_INJECT_JS_PATH 添加依赖成功!\n"
 
+# 重新打包成 asar 文件
 infos "正在重新打包 node 文件夹至 $CUR_PACKED_ASAR_PATH..."
 node ./asar_modules/node_modules/@electron/asar/bin/asar.js pack $CUR_INJECT_JS_DIR_PATH $CUR_PACKED_ASAR_PATH
 infos "打包完成!\n"
 
+# 复制 asar 文件到软件处
 warning "###### 正在将 $CUR_INJECT_ASAR_PATH 移动至 $INJECT_JS_DIR_ASAR_PATH ######"
-
 check_dangerous_cmd "sudo cp $CUR_PACKED_ASAR_PATH $INJECT_JS_DIR_ASAR_PATH"
 sudo cp $CUR_PACKED_ASAR_PATH $INJECT_JS_DIR_ASAR_PATH
 
+# 善后工作
 warning "若执行当前脚本后不能正常打开软件的话,则请执行以下命令还原:"
 warning "\tcp $CUR_INJECT_ASAR_PATH $INJECT_JS_DIR_ASAR_PATH\n"
 
@@ -171,3 +206,4 @@ infos "您的序列号为:"
 infos "\tLSGDW2-6M43UN-KHKH2A-D6FDJF"
 infos "\tD9KYN9-MCCL2F-59LFPC-NK2CPX\n"
 warning "如果激活失败,恐怕您还得安装 rust 环境并使用 license-gen/target/debug/license-gen 生成新的序列号"
+################## 正式执行部分 ###############