用Hopper搞定Mac迅雷的会员以及离线下载功能

定位Mac迅雷的可执行文件

snakeninnys-iMac:~ snakeninny$ ls /Applications/Thunder.app/Contents/MacOS
Thunder            libetm.dylib       libiniparser.dylib

如果你的迅雷也是放在了/Applications下,那么可执行文件的位置应该跟上面一样?

用Hopper分析可执行文件

定位要修改的函数

可执行文件尺寸不大,Hopper很快就可以完成对它的分析。在Label搜索栏中输入“ is”(注意,是“空格is”),在搜索结果中,找到如图所示的4个方法:

它们分别是

1. -[LocalTask isValidLixianTask]
2. -[UserController isVip]
3. -[UserController isPlatinum]
4. -[UserController isDiamond]

用Hopper静态patch这4个方法

首先patch-[LocalTask isValidLixianTask]
把鼠标焦点放在-[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,告诉迅雷这是一个有效的离线任务 wink
同理,用完全相同的输入来patch掉另外的3个方法,即把它们的前2条汇编指令都改成mov eax, 0x1ret,修改结果如图所示:

用Hopper生成一个patch过的新可执行文件

在Hopper的菜单里选择File -> Produce New Executable...,然后在弹框中选择YES,即可生成一个新的Thunder文件。用这个新的Thunder替换掉原来的/Applications/Thunder.app/Contents/MacOS/Thunder,然后重启迅雷,看看效果:

打完收工

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回主页看更多
狠狠的抽打博主 支付宝 扫一扫