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


#42

可以 这很迅雷


#43

把验证签名的函数给干掉


#44

按照介绍的方法修改那四个函数后,迅雷无法启动了,难道按照贴主说的需要把验证签名的函数干掉?何如干掉呢?能不能告知一下,或者有学习的帖子吗?


#45

亲测可用~赞


#46

新版应该是加校验了,升级log里写明了


#47

迅雷的研发也真是醉了 Mac客户端各种难用不说 源码也不知道稍微混淆下 暴露的这么彻底!


#49

按照你的方法,我Produce New Executable...出Thunder文件以后,重启迅雷,又自动退出了!!!


#50

您是如何干掉验证签名函数的?


#51

没升级吧,最新版可用


#52

搞定自我校验

#!/usr/bin/env python3
# requires XCode

import subprocess, sys, os, hashlib, plistlib


package = '/Applications/Thunder.app/Contents'
executable = os.path.join(package, 'MacOS/Thunder')
plugins_dir = os.path.join(package, 'BrowserPlugins')


def backup():
    from shutil import copyfile
    backup = executable + '.bak'

    if os.path.isfile(backup):
        print('Backup found, maybe the file has already been patched.')
        sys.exit(-1)

    copyfile(executable, backup)


def patch_exec():
    ret_1 = b'\xb8\x01\x00\x00\x00\xc3'

    try:
        output = subprocess.check_output(['nm', executable])
    except:
        print('Failed to execute nm, please install XCode.')
        sys.exit(-1)

    patch_list = ['-[LocalTask isValidLixianTask]', '-[UserController isVip]',
                  '-[UserController isPlatinum]', '-[UserController isDiamond]']
    base = None
    output = output.decode('utf8')

    with open(executable, 'r+b') as f:
        for line in output.splitlines():
            if '__mh_execute_header' in line:
                base, *_ = line.split()
                base = int(base, 16)

        if not base:
            print('Failed to retrive base address')
            sys.exit(-1)

        for line in output.splitlines():
            if not len(patch_list):
                break

            for func in patch_list:
                if func in line:
                    addr, *_ = line.split()
                    addr = int(addr, 16)

                    offset = addr - base
                    f.seek(offset, 0)
                    f.write(ret_1)  # patch function

                    print(func)
                    patch_list.remove(func)

                    break

    print('Successfully patched %s' % executable)


def patch_self_check():
    m = hashlib.md5()
    with open(executable, 'rb+') as f:
        while True:
            buf = f.read(1)
            if not buf:
                break
            m.update(buf)
            f.seek(1023, 1)
    digest = m.digest()
    lookup = (15, 4, 6, 3, 1, 0, 7, 8, 2, 11, 10, 13, 12, 14, 9, 5)
    hexdigest = ''.join(['%0.2X' % digest[index] for index in lookup])
    dirname = os.path.join(plugins_dir, hexdigest)

    if not os.path.isdir(dirname):
        os.mkdir(dirname)


def clear_quit_flag():
    plist_path = os.path.join(os.environ.get(
        'HOME'), 'Library/Preferences/com.xunlei.Thunder.plist')

    with open(plist_path, 'rb+') as f:
        pref = plistlib.load(f)

        force_quit = pref.get('ForceQuit')
        if force_quit:
            pref.update({'ForceQuit': True})
            plistlib.dump(pref, f)
            print('Clear quit flag')


if __name__ == '__main__':
    backup()
    patch_exec()
    patch_self_check()
    clear_quit_flag()

#53

调试了一下,脚本有地方不过,我用的python 2.7的:

修改三个地方:
1.

# base, *_ = line.split()
base = line.split()[0];

2.

# addr, *_ = line.split()
addr = line.split()[0]

3.

# hexdigest = ''.join(['%0.2X' % digest[index] for index in lookup])
hexdigest = ''.join(['%0.2X' % ord(digest[index]) for index in lookup])

:palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree:

再加一个 -[UserController isLogined]:效果更佳

:palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree::palm_tree:


#54

那段代码的第一句就是
#!/usr/bin/env python3

在OSX上的话,要安装Python 3才行


#55

我说呢,thanks,感觉python3是返回值多参数的样子,

另外入口爆一下就不需要去修改配置plist文件了,版本v2.7 beta的:

效果图:

PS: 最不喜欢的就是迅雷绑定一堆没用的东西,浏览器插件、应用商店,


#56

第一行就指明了要用 python3


#58

已成功,谢谢,迅雷2.6.4可用:imp:


#59

good~


#60

能在分享一下吗 ,过期了:joy:


#62

更新最新破解版地址:http://liuyunclouder.github.io/2016/09/18/%E6%9C%80%E6%96%B0Hopper%E7%A0%B4%E8%A7%A3%E7%89%88/


#63

按照流程走了一遍之后 生成新的可执行文件 无法启动


#64

检测方式换了。看我另一贴