定位Mac迅雷的可执行文件
建议先备份Thunder
文件,这个可执行文件就是我们解决的目标。
Hopper分析可执行文件
定位要修改的函数
Hopper很快就可以完成对Thunder
可执行文件的分析。在Label搜索栏中输入is
(注意,是空格is
)
在搜索结果中,找到如图所示的4个方法:
他们分别是:
Hopper静态patch这4个方法
把鼠标焦点放在-[LocalTask isValidLixianTask]
的第一行汇编代码上,然后选择Hopper
菜单栏的Modify -> Assemble Instruction
,
并在弹出的文本框里输入mov eax, 0x1
,如图所示:
然后点击Assemble and Go Next
,再在文本框里输入ret
,patch之后的-[LocalTask isValidLixianTask]
长这样:
为什么要这么patch呢?
在x86汇编里,函数的返回值存放在eax寄存器里,1
对应BOOL类型
的YES
,
因此我们的patch
让-[LocalTask isValidLixianTask]
永远返回YES
,告诉迅雷这是一个有效的离线任务。
同理,用完全相同的输入来patch掉另外的3个方法,即把它们的前2条汇编指令都改成mov eax, 0x1
和ret
。修改结果如图所示:
用Hopper生成一个patch过的新可执行文件
在Hopper的菜单里选择File -> Produce New Executable
,然后在弹框中选择YES,即可生成一个新的Thunder
文件。
用这个新的Thunder替换掉原来的/Applications/Thunder.app/Contents/MacOS/Thunder,然后重启迅雷。