-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy pathinject_utf.bat
More file actions
213 lines (166 loc) · 5.86 KB
/
inject_utf.bat
File metadata and controls
213 lines (166 loc) · 5.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
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