1
0

inject_gbk.bat 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. :: ####### 作者声明 #########
  2. :: a copied script for windows.
  3. :: made by hazukie
  4. :: date: 2024.5.12
  5. :: JUST FOR LEARNING PURPOSES, DON'T USE THIS TO CRACK SOFTWARE.
  6. :: 只是出于学习目的,请勿将其用于破解软件,否则后果自负。用户行为均与本项目作者无关!
  7. @echo off
  8. call :warning 当前脚本仅适用于 windows 平台,且仅在 windows10 版本下通过测试
  9. call :warning 若在执行过程中出现问题,请及时在项目作者反馈
  10. call :infos 开始执行脚本
  11. :: ####### 作者声明 #########
  12. :: ####### 数据配置 #########
  13. :: 待注入数据文件路径
  14. set CUR_HOOK_JS_PATH=src\hooklog.js
  15. :: ####### 数据配置 #########
  16. :: Typora 安装路径
  17. set TYPORA_INSTALLED_PATH="C:\Program Files\Typora\resources"
  18. ::set INJECT_ASAR_PATH=%TYPORA_INSTALLED_PATH:"=%\node_modules.asar
  19. set CUR_INJECT_ASAR_PATH=build\node_modules.asar
  20. set CUR_PACKED_ASAR_PATH=build\node_modules.asar.pack
  21. set CUR_INJECT_JS_DIR_PATH=build\node_modules
  22. set CUR_HOOK_JS_WRITE_PATH=%CUR_INJECT_JS_DIR_PATH%\raven\hook.js
  23. set CUR_INJECT_JS_PATH=%CUR_INJECT_JS_DIR_PATH%\raven\index.js
  24. :: ####### 执行配置 #########
  25. :: Node 安装路径
  26. set NODE_INSTALLED_PATH=C:\Users\hazukie\AppData\Roaming\nvm\v20.10.0\node.exe
  27. :: ASAR 解压缩可执行程序代码存放处
  28. :: Yproject 项目下 asar_modules/node_modules/@electron/asar/bin/
  29. :: 此处使用相对地址,即相对于你执行的位置!
  30. :: asar 解压缩程序将会被 脚本函数 asar_zip 调用
  31. set ASAR_BIN=./asar_modules/node_modules/@electron/asar/bin/asar.js
  32. :: ####### 执行配置 #########
  33. :: ####### 执行开始 #########
  34. call :warning "该脚本包含 sudo 指令,请您确保知悉高危命令执行的后果且承担相关代价"
  35. call :warning "在执行過程中,请您仔细确认相关提示,当提示「即将执行高危命令」时,那么此种情形将考验您的判断力"
  36. call :infos "Typora 安装路径: " %TYPORA_INSTALLED_PATH%
  37. call :askif "Typora 安装路径是否正确?"
  38. if %ret% equ "0" (
  39. echo 程序继续执行 ) else (
  40. call :ask "不正确的话你可以尝试输入新的路径" )
  41. if %ret% neq "0" (
  42. set TYPORA_INSTALLED_PATH=
  43. set TYPORA_INSTALLED_PATH=%ret: =%)
  44. call :infos "已确认当前安装路径为: " %TYPORA_INSTALLED_PATH%
  45. set INJECT_ASAR_PATH=
  46. set INJECT_ASAR_PATH=%TYPORA_INSTALLED_PATH:"=%\node_modules.asar
  47. call :infos %INJECT_ASAR_PATH%
  48. :: 检测 node 是否存在
  49. call :ask "请输入 Node 安装路径"
  50. call :infos "你为避免反复确认,可以直接改 NODE_INSTALLED_PATH 的值!!"
  51. set NODE_INSTALLED_PATH=
  52. set NODE_INSTALLED_PATH=%ret: =%
  53. call :infos "Node 安装路径为: " %NODE_INSTALLED_PATH%
  54. call :checkf %NODE_INSTALLED_PATH%
  55. :: 正在测试 node 是否可用...
  56. call :checkf %NODE_INSTALLED_PATH%
  57. %NODE_INSTALLED_PATH% -v
  58. :: 检测 Typora 安装路径是否存在
  59. call :checkf %TYPORA_INSTALLED_PATH%
  60. :: 前置条件已经准备完毕
  61. :: 正式开始初始化
  62. call :mkinit "%INJECT_ASAR_PATH%"
  63. :: 开始解压缩
  64. call :asar_zip "%INJECT_ASAR_PATH%"
  65. goto :eof
  66. :: ####### 执行结束 #########
  67. :: ####### 函数配置 #########
  68. @rem 打印警告日志
  69. @echo off
  70. :warning
  71. echo ## 警告: %~1%~2
  72. goto :eof
  73. @rem 打印日志
  74. @echo off
  75. :infos
  76. echo 提示: %~1%~2
  77. goto :eof
  78. @rem 询问输入函数
  79. @echo off
  80. :ask
  81. set ret=
  82. set /p ret=%~1:
  83. if "%ret%" equ "" (
  84. call :warning "您输入为空...请重试!"
  85. goto :ask )
  86. goto :eof
  87. @rem 询问是否函数
  88. @rem 参数1: 问题,参数2: 比较条件(可选)
  89. @echo off
  90. :askif
  91. set /p ret=%~1 (y/n):
  92. if "%ret:~0,1%" neq "y" (
  93. call :infos "您的回复: %ret%"
  94. set ret=
  95. set ret="1" ) else (
  96. call :infos "您的回复: %ret%"
  97. set ret=
  98. set ret="0" )
  99. goto :eof
  100. @rem 文件初始化函数
  101. @echo off
  102. :mkinit
  103. call :infos "正在初始化..."
  104. if exist build (
  105. call :infos "build 文件夹已经存在"
  106. call :warning "正在删除 build 文件夹"
  107. rd /s /q build ) else (
  108. call :infos "未发现 build 文件夹"
  109. )
  110. call :infos "正在创建 build 文件夹"
  111. mkdir build
  112. call :infos "build 文件夹创建完成"
  113. if exist build\node_modules (
  114. call :infos "build/node_modules 文件夹已经存在"
  115. call :warning "正在删除 build 文件夹"
  116. rd /s /q build\node_modules ) else (
  117. call :infos "未发现 build/node_modules 文件夹"
  118. )
  119. call :infos "正在创建 build/node_modules 文件夹"
  120. mkdir build\node_modules
  121. call :infos "build/node_modules 文件夹创建完成"
  122. call :infos "正在复制 node_modules.asar 至 build 文件夹中..."
  123. copy %1 "%CUR_INJECT_ASAR_PATH%"
  124. goto :eof
  125. @rem 文件存在函数
  126. @echo off
  127. :checkf
  128. call :infos "正在检测 %1 是否存在或可用..."
  129. if exist %1 (
  130. call :infos %1 "文件存在" ) else (
  131. call :warning %1 "文件不存在!"
  132. call :infos "脚本已正常退出..."
  133. exit 0)
  134. goto :eof
  135. @rem 添加 hook.js
  136. :write_js2file
  137. :: 复制内容至 hook.js 文件
  138. type "%CUR_HOOK_JS_PATH%" > "%CUR_HOOK_JS_WRITE_PATH%"
  139. goto :eof
  140. @rem 添加 hook.js 依赖至 index.js
  141. :append_require2file
  142. :: 添加内容至 index.js 文件
  143. echo /* append hook!*/ >> "%CUR_INJECT_JS_PATH%"
  144. echo require('./hook') >> "%CUR_INJECT_JS_PATH%"
  145. goto :eof
  146. @rem 解压缩执行函数
  147. @rem 参数0:unpack/pack
  148. @rem 参数1:源
  149. @rem 参数2:目的地
  150. @echo off
  151. :asar_zip
  152. ::call :checkf %ASAR_BIN%
  153. :: 解压 node_modules 到 当前 build 文件夹下
  154. echo %NODE_INSTALLED_PATH% %ASAR_BIN% extract "%CUR_INJECT_ASAR_PATH%" "%CUR_INJECT_JS_DIR_PATH%"
  155. %NODE_INSTALLED_PATH% %ASAR_BIN% extract "%CUR_INJECT_ASAR_PATH%" "%CUR_INJECT_JS_DIR_PATH%"
  156. :: 添加 hook.js
  157. call :write_js2file
  158. :: 添加 index.js
  159. call :append_require2file
  160. :: 重新打包 node_modules 为 node_modules.asar.pack
  161. echo %NODE_INSTALLED_PATH% %ASAR_BIN% pack %CUR_INJECT_JS_DIR_PATH% %CUR_PACKED_ASAR_PATH%
  162. %NODE_INSTALLED_PATH% %ASAR_BIN% pack %CUR_INJECT_JS_DIR_PATH% %CUR_PACKED_ASAR_PATH%
  163. :: 复制到 typora 安装程序
  164. call :infos "正在复制 node_modules.asar.pack 至 Typora 文件夹中..."
  165. copy "%CUR_PACKED_ASAR_PATH%" %1
  166. goto :eof