فهرست منبع

add a script for win platform

hazukieq 1 سال پیش
والد
کامیت
7fd9e3aa29
3فایلهای تغییر یافته به همراه435 افزوده شده و 1 حذف شده
  1. 21 1
      README.md
  2. 207 0
      inject.bat
  3. 207 0
      inject_bgk.bat

+ 21 - 1
README.md

@@ -30,8 +30,8 @@
 
 ---
 
-
 ## 最新方法
+**激活时请勾选国内服务器,否则会激活不成功**
 **特别提示:** 当前两个脚本可能有不完备的地方,使用时请格外注意
 #### 1. 使用 [`Python 脚本 inject.py`](./inject.py)
 ```bash
@@ -47,6 +47,26 @@ python inject.py
 
 
 
+### **Windows 平台**
+
+**当前仅在 win10 下 powershell(管理员运行模式) 测试通过,可能仍有不足之处**
+**使用前,请谨慎通读脚本,或备份 typora 安装包以便重新安装**
+[GBK 编码版批处理文件](./inject_bgk.bat)
+[UTF 编码版批处理文件](./inject.bat)
+```bash
+# 请 搜索 powershell,并以管理员权限运行
+
+## 以下均假定在 管理员模式 powershell 终端下运行!!
+# 移动至当前项目处
+# 比如 当前项目为 D:\Yproject
+
+d: #切换到 D 盘
+cd Yproject # 移动到相关目录
+.\inject_gbk.bat
+```
+
+
+
 **脚本依赖要求**: 以上脚本均依赖 node 运行库, 故请安装 node(亦可通过 nvm 管理器安装 node)
 
 ```bash

+ 207 - 0
inject.bat

@@ -0,0 +1,207 @@
+:: ####### 作者声明 #########
+:: 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 :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

+ 207 - 0
inject_bgk.bat

@@ -0,0 +1,207 @@
+:: ####### 作者声明 #########
+:: 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 :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