定位Mac迅雷的可执行文件
snakeninnys-iMac:~ snakeninny$ ls /Applications/Thunder.app/Contents/MacOSThunder 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,如图所示:
Screen Shot 2015-07-06 at 3.18.07 PM.png[size=1em]870x177 65 KB
然后点击“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,修改结果如图所示:
Screen Shot 2015-07-06 at 3.29.28 PM.png[size=1em]447x634 110 KB
用Hopper生成一个patch过的新可执行文件在Hopper的菜单里选择File -> Produce New Executable...,然后在弹框中选择YES,即可生成一个新的Thunder文件。用这个新的Thunder替换掉原来的/Applications/Thunder.app/Contents/MacOS/Thunder,然后重启迅雷,看看效果:
Screen Shot 2015-07-06 at 3.59.29 PM.png[size=1em]946x161 89.8 KB
[url=//7xibfi.com1.z0.glb.clouddn.com/uploads/default/cf07f434607f78cf63eba20c16691521cd049e72][/url]
|