|
@@ -0,0 +1,213 @@
|
|
|
|
|
+:: ####### 作者声明 #########
|
|
|
|
|
+:: a copied script for windows.
|
|
|
|
|
+:: made by hazukie
|
|
|
|
|
+:: date: 2024.5.12
|
|
|
|
|
+:: JUST FOR LEARNING PURPOSES, DON'T USE THIS TO CRACK SOFTWARE.
|
|
|
|
|
+:: 只是出于学习目的,请勿将其用于破解软件,否则后果自负。用户行为均与本项目作者无关!
|
|
|
|
|
+
|
|
|
|
|
+@echo off
|
|
|
|
|
+call :warning 当前脚本仅适用于 windows 平台,且仅在 windows10 版本下通过测试
|
|
|
|
|
+call :warning 若在执行过程中出现问题,请及时在项目作者反馈
|
|
|
|
|
+call :infos 开始执行脚本
|
|
|
|
|
+:: ####### 作者声明 #########
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+:: ####### 数据配置 #########
|
|
|
|
|
+:: 待注入数据文件路径
|
|
|
|
|
+set CUR_HOOK_JS_PATH=src\hooklog.js
|
|
|
|
|
+:: ####### 数据配置 #########
|
|
|
|
|
+:: Typora 安装路径
|
|
|
|
|
+set TYPORA_INSTALLED_PATH="C:\Program Files\Typora\resources"
|
|
|
|
|
+
|
|
|
|
|
+::set INJECT_ASAR_PATH=%TYPORA_INSTALLED_PATH:"=%\node_modules.asar
|
|
|
|
|
+
|
|
|
|
|
+set CUR_INJECT_ASAR_PATH=build\node_modules.asar
|
|
|
|
|
+set CUR_PACKED_ASAR_PATH=build\node_modules.asar.pack
|
|
|
|
|
+
|
|
|
|
|
+set CUR_INJECT_JS_DIR_PATH=build\node_modules
|
|
|
|
|
+set CUR_HOOK_JS_WRITE_PATH=%CUR_INJECT_JS_DIR_PATH%\raven\hook.js
|
|
|
|
|
+set CUR_INJECT_JS_PATH=%CUR_INJECT_JS_DIR_PATH%\raven\index.js
|
|
|
|
|
+
|
|
|
|
|
+:: ####### 执行配置 #########
|
|
|
|
|
+
|
|
|
|
|
+:: Node 安装路径
|
|
|
|
|
+set NODE_INSTALLED_PATH=C:\Users\hazukie\AppData\Roaming\nvm\v20.10.0\node.exe
|
|
|
|
|
+
|
|
|
|
|
+:: ASAR 解压缩可执行程序代码存放处
|
|
|
|
|
+:: Yproject 项目下 asar_modules/node_modules/@electron/asar/bin/
|
|
|
|
|
+:: 此处使用相对地址,即相对于你执行的位置!
|
|
|
|
|
+:: asar 解压缩程序将会被 脚本函数 asar_zip 调用
|
|
|
|
|
+set ASAR_BIN=./asar_modules/node_modules/@electron/asar/bin/asar.js
|
|
|
|
|
+:: ####### 执行配置 #########
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+:: ####### 执行开始 #########
|
|
|
|
|
+call :warning "该脚本包含 sudo 指令,请您确保知悉高危命令执行的后果且承担相关代价"
|
|
|
|
|
+call :warning "在执行過程中,请您仔细确认相关提示,当提示「即将执行高危命令」时,那么此种情形将考验您的判断力"
|
|
|
|
|
+call :infos "Typora 安装路径: " %TYPORA_INSTALLED_PATH%
|
|
|
|
|
+call :askif "Typora 安装路径是否正确?"
|
|
|
|
|
+if %ret% equ "0" (
|
|
|
|
|
+ echo 程序继续执行 ) else (
|
|
|
|
|
+ call :ask "不正确的话你可以尝试输入新的路径" )
|
|
|
|
|
+
|
|
|
|
|
+if %ret% neq "0" (
|
|
|
|
|
+ set TYPORA_INSTALLED_PATH=
|
|
|
|
|
+ set TYPORA_INSTALLED_PATH=%ret: =%)
|
|
|
|
|
+
|
|
|
|
|
+call :infos "已确认当前安装路径为: " %TYPORA_INSTALLED_PATH%
|
|
|
|
|
+set INJECT_ASAR_PATH=
|
|
|
|
|
+set INJECT_ASAR_PATH=%TYPORA_INSTALLED_PATH:"=%\node_modules.asar
|
|
|
|
|
+call :infos %INJECT_ASAR_PATH%
|
|
|
|
|
+
|
|
|
|
|
+:: 检测 node 是否存在
|
|
|
|
|
+call :ask "请输入 Node 安装路径"
|
|
|
|
|
+call :infos "你为避免反复确认,可以直接改 NODE_INSTALLED_PATH 的值!!"
|
|
|
|
|
+set NODE_INSTALLED_PATH=
|
|
|
|
|
+set NODE_INSTALLED_PATH=%ret: =%
|
|
|
|
|
+call :infos "Node 安装路径为: " %NODE_INSTALLED_PATH%
|
|
|
|
|
+
|
|
|
|
|
+call :checkf %NODE_INSTALLED_PATH%
|
|
|
|
|
+:: 正在测试 node 是否可用...
|
|
|
|
|
+call :checkf %NODE_INSTALLED_PATH%
|
|
|
|
|
+%NODE_INSTALLED_PATH% -v
|
|
|
|
|
+
|
|
|
|
|
+:: 检测 Typora 安装路径是否存在
|
|
|
|
|
+call :checkf %TYPORA_INSTALLED_PATH%
|
|
|
|
|
+
|
|
|
|
|
+:: 前置条件已经准备完毕
|
|
|
|
|
+:: 正式开始初始化
|
|
|
|
|
+call :mkinit "%INJECT_ASAR_PATH%"
|
|
|
|
|
+
|
|
|
|
|
+:: 开始解压缩
|
|
|
|
|
+call :asar_zip "%INJECT_ASAR_PATH%"
|
|
|
|
|
+goto :eof
|
|
|
|
|
+:: ####### 执行结束 #########
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+:: ####### 函数配置 #########
|
|
|
|
|
+
|
|
|
|
|
+@rem 打印警告日志
|
|
|
|
|
+@echo off
|
|
|
|
|
+:warning
|
|
|
|
|
+echo ## 警告: %~1%~2
|
|
|
|
|
+goto :eof
|
|
|
|
|
+
|
|
|
|
|
+@rem 打印日志
|
|
|
|
|
+@echo off
|
|
|
|
|
+:infos
|
|
|
|
|
+echo 提示: %~1%~2
|
|
|
|
|
+goto :eof
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@rem 询问输入函数
|
|
|
|
|
+@echo off
|
|
|
|
|
+:ask
|
|
|
|
|
+set ret=
|
|
|
|
|
+set /p ret=%~1:
|
|
|
|
|
+if "%ret%" equ "" (
|
|
|
|
|
+ call :warning "您输入为空...请重试!"
|
|
|
|
|
+ goto :ask )
|
|
|
|
|
+goto :eof
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@rem 询问是否函数
|
|
|
|
|
+@rem 参数1: 问题,参数2: 比较条件(可选)
|
|
|
|
|
+@echo off
|
|
|
|
|
+:askif
|
|
|
|
|
+set /p ret=%~1 (y/n):
|
|
|
|
|
+if "%ret:~0,1%" neq "y" (
|
|
|
|
|
+ call :infos "您的回复: %ret%"
|
|
|
|
|
+ set ret=
|
|
|
|
|
+ set ret="1" ) else (
|
|
|
|
|
+ call :infos "您的回复: %ret%"
|
|
|
|
|
+ set ret=
|
|
|
|
|
+ set ret="0" )
|
|
|
|
|
+goto :eof
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@rem 文件初始化函数
|
|
|
|
|
+@echo off
|
|
|
|
|
+:mkinit
|
|
|
|
|
+call :infos "正在初始化..."
|
|
|
|
|
+if exist build (
|
|
|
|
|
+ call :infos "build 文件夹已经存在"
|
|
|
|
|
+ call :warning "正在删除 build 文件夹"
|
|
|
|
|
+ rd /s /q build ) else (
|
|
|
|
|
+ call :infos "未发现 build 文件夹"
|
|
|
|
|
+ )
|
|
|
|
|
+call :infos "正在创建 build 文件夹"
|
|
|
|
|
+mkdir build
|
|
|
|
|
+call :infos "build 文件夹创建完成"
|
|
|
|
|
+
|
|
|
|
|
+if exist build\node_modules (
|
|
|
|
|
+ call :infos "build/node_modules 文件夹已经存在"
|
|
|
|
|
+ call :warning "正在删除 build 文件夹"
|
|
|
|
|
+ rd /s /q build\node_modules ) else (
|
|
|
|
|
+ call :infos "未发现 build/node_modules 文件夹"
|
|
|
|
|
+ )
|
|
|
|
|
+call :infos "正在创建 build/node_modules 文件夹"
|
|
|
|
|
+mkdir build\node_modules
|
|
|
|
|
+call :infos "build/node_modules 文件夹创建完成"
|
|
|
|
|
+
|
|
|
|
|
+call :infos "正在复制 node_modules.asar 至 build 文件夹中..."
|
|
|
|
|
+copy %1 "%CUR_INJECT_ASAR_PATH%"
|
|
|
|
|
+
|
|
|
|
|
+goto :eof
|
|
|
|
|
+
|
|
|
|
|
+@rem 文件存在函数
|
|
|
|
|
+@echo off
|
|
|
|
|
+:checkf
|
|
|
|
|
+call :infos "正在检测 %1 是否存在或可用..."
|
|
|
|
|
+if exist %1 (
|
|
|
|
|
+ call :infos %1 "文件存在" ) else (
|
|
|
|
|
+ call :warning %1 "文件不存在!"
|
|
|
|
|
+ call :infos "脚本已正常退出..."
|
|
|
|
|
+ exit 0)
|
|
|
|
|
+goto :eof
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@rem 添加 hook.js
|
|
|
|
|
+:write_js2file
|
|
|
|
|
+:: 复制内容至 hook.js 文件
|
|
|
|
|
+type "%CUR_HOOK_JS_PATH%" > "%CUR_HOOK_JS_WRITE_PATH%"
|
|
|
|
|
+goto :eof
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@rem 添加 hook.js 依赖至 index.js
|
|
|
|
|
+:append_require2file
|
|
|
|
|
+:: 添加内容至 index.js 文件
|
|
|
|
|
+echo /* append hook!*/ >> "%CUR_INJECT_JS_PATH%"
|
|
|
|
|
+echo require('./hook') >> "%CUR_INJECT_JS_PATH%"
|
|
|
|
|
+goto :eof
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@rem 解压缩执行函数
|
|
|
|
|
+@rem 参数0:unpack/pack
|
|
|
|
|
+@rem 参数1:源
|
|
|
|
|
+@rem 参数2:目的地
|
|
|
|
|
+@echo off
|
|
|
|
|
+:asar_zip
|
|
|
|
|
+::call :checkf %ASAR_BIN%
|
|
|
|
|
+:: 解压 node_modules 到 当前 build 文件夹下
|
|
|
|
|
+echo %NODE_INSTALLED_PATH% %ASAR_BIN% extract "%CUR_INJECT_ASAR_PATH%" "%CUR_INJECT_JS_DIR_PATH%"
|
|
|
|
|
+
|
|
|
|
|
+%NODE_INSTALLED_PATH% %ASAR_BIN% extract "%CUR_INJECT_ASAR_PATH%" "%CUR_INJECT_JS_DIR_PATH%"
|
|
|
|
|
+
|
|
|
|
|
+:: 添加 hook.js
|
|
|
|
|
+call :write_js2file
|
|
|
|
|
+:: 添加 index.js
|
|
|
|
|
+call :append_require2file
|
|
|
|
|
+
|
|
|
|
|
+:: 重新打包 node_modules 为 node_modules.asar.pack
|
|
|
|
|
+echo %NODE_INSTALLED_PATH% %ASAR_BIN% pack %CUR_INJECT_JS_DIR_PATH% %CUR_PACKED_ASAR_PATH%
|
|
|
|
|
+%NODE_INSTALLED_PATH% %ASAR_BIN% pack %CUR_INJECT_JS_DIR_PATH% %CUR_PACKED_ASAR_PATH%
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+:: 复制到 typora 安装程序
|
|
|
|
|
+call :infos "正在复制 node_modules.asar.pack 至 Typora 文件夹中..."
|
|
|
|
|
+copy "%CUR_PACKED_ASAR_PATH%" %1
|
|
|
|
|
+goto :eof
|