对于修改迅雷9的经验之谈

侵删。

此文章仅针对迅雷9(不包括9.5预览版)的修改,对于其他版本的迅雷也许不适用。

前几天闲着无聊,整了个迅雷9的极限精简版。由于网络上有关修改迅雷的资料不多,修改过程中遇到了很多麻烦。所以在这,我想记录一下有关这几天折腾历程的经验。

这其实都是些没啥技术含量的奇技淫巧,看看就好,嗯,看看就好。

Environment

首先是环境配置。磨刀不误砍柴工,配置一个顺手的环境能省下大把时间。

  1. 无论修改什么软件,如果你足够理智的话,一定要用Git或Svn进行版本控制,并且及时Commit。这样一来,如果不小心把软件改出了问题,才能快速地定位出错位置。如果之前没用过类似软件,可以尝试GitHub Desktop或其他类似的GUI。

  2. 修改迅雷时需要用到一些工具,本人使用的有:

NameWebsite
ExeinfoPehttp://www.exeinfo.xn.pl
ResourceHackerhttp://www.angusj.com/resourcehacker
DllExphttp://www.nirsoft.net/utils/dll_export_viewer.html
js-beautifyhttps://github.com/beautify-web/js-beautify
7ziphttps://www.7-zip.org
pngquanthttps://pngquant.org
leanifyhttps://github.com/JayXon/Leanify
lua kithttps://sourceforge.net/projects/luabinaries
luadechttps://github.com/sztupy/luadec51
JXarhttps://www.jayxon.com/jxar-2-1
ThunderLuahttps://www.jayxon.com/thunderlua-0-2
EmEditorhttps://www.emeditor.com
SublimeTexthttps://www.sublimetext.com
IcoFXhttps://icofx.ro
PeExplorerhttp://www.heaventools.com/overview.htm
WinHexhttp://www.winhex.net
  1. 使用批处理或其他方式进行自动化打包、重启应用等操作。可以给批处理建立快捷方式,固定到任务栏或桌面上,再绑定一个快捷键。
    • 通常批处理文件无法直接固定到任务栏。这时可以在任意目录右键>新建>快捷方式,输入cmd /c <BatchFilePath>,然后将新建的快捷方式右键固定即可。

本人使用的部分批处理文件(仅供参考):

:: 打包资源并重启迅雷
@echo off
taskkill /f /im thunder.exe
jxar.exe -s -p 8 -v 7.9 "D:\Temp\ThunderProject\working\Thunder9\Thunder\Xar\ThunderCore"
start "" "D:\Temp\ThunderProject\working\Thunder9\Program\Thunder.exe"
:: Xml格式化
@echo off
ren "%~dpnx1" "%~n1.html"
call js-beautify -r "%~dpn1.html"
ren "%~dpn1.html" "%~n1%~x1"
:: 自动反编译Lua(不稳定)
copy "%~dpnx1" "%~dpnx1.bak"
ThunderLua.exe -d %~dpnx1
Luadec51.exe %1 > %~dpn1.dec.lua

Select Version And Fusion

对于UI组件,建议尽量使用早期版本,能得到更小的体积和更快速度。

对于ThunderDownloadSDK(以下简称TDSDK),应尽量使用新版。从迅雷9开始,TDSDK采用了可插拔模块化设计,通常只需对桥接UI和TDSDK的/Program/DownloadKernel.dll进行微量修改(甚至无需修改),就能组合任意版本TDSDK和UI。

由于公网IP的短缺和各国运营商对各P2P协议限制屏蔽方式不同,某些在其他国家可正常使用的软件/方法在天朝往往不好使。迅雷近年一直在与国内运营商互博,新版迅雷通常能得到更快的下载速度。使用新版TDSDK与旧版UI组合,就能在使用更轻量旧版UI的同时,享受新版迅雷带来的速度。

处于过渡版本的DownloadKernel.dll通常自带对前后不同TDSDK版本API的兼容,此时无需修改。若版本差别较大,可能需要手动处理兼容。通用做法是:用DllExp分别获得原始的和需要融合的/Program/SDK/DownloadSDK.dll函数导出表,对比导出函数。对于功能相同但被更名的函数,可直接在DownloadKernel.dll中修改调用语句。对于功能有差别的,也许可以自己写个转发(未尝试)。

20200112:从迅雷9的某个测试版开始直至今日,TDSDK的各个基本API都没有变化。这给制作融合版带来了极大便利。

Modify UI

Study Knowledge

Unpack And Repack

Modify Methods

Modifiy Points

Pack And Compress

未完待续。

最近似乎有点忙,没啥时间来写这些玩意,可能要拖很久,长期鸽置也不是没有可能。