使用Hopper修改aria2的线程限制

2018/5/1 posted in  随笔 记录

最近要在百度盘上下载很多东西,在Mac下我一般是用BaiduExporter加上Aria2。最近发现速度越来越慢了,看到别人说要改aria2源码中的线程限制能快上很多。

参看链接:
10240 线程暴力膜改版 Aria2c
Mac编译安装Aria2 – 突破百度网盘下载限速
不过我不知道为何一直编译不过,而且我的辣鸡Macbook Air编译一次要好久。。。可能是姿势不对还是怎样。。。。
反正要改的地方就1、2处,于是直接操起Hopper就是修改。

1. 获取二进制版的Aria2

可以从github的release页面下载.

或者(推荐)使用homebrew下载:

brew install aria2

2. 利用Hopper修改

根据参考链接中的修改源码方案,要修改的地方有两处。如下。

vi aria2/src/OptionHandlerFactory.cc
#定位到441行
#将服务器最大连接数16修改为256
    OptionHandler* op(new NumberOptionHandler(PREF_MAX_CONNECTION_PER_SERVER,
                                              TEXT_MAX_CONNECTION_PER_SERVER,
                                           // "1", 1, 16, 'x'));
                                              "1", 1, 256, 'x'));
#定位到第503行
#将最文件分片大小设置为256_k
#到此源代码需要修改的地方改完了
  OptionHandler* op(new UnitNumberOptionHandler(
//PREF_MIN_SPLIT_SIZE, TEXT_MIN_SPLIT_SIZE, "1M", 1_m, 1_g, 'k'));
 PREF_MIN_SPLIT_SIZE, TEXT_MIN_SPLIT_SIZE, "1M", 256_k, 1_g, 'k'));

把Aira2c二进制拖到Hopper 中,然后搜索第一处地方的PREF_MAX_CONNECTION_PER_SERVER

定位到:

右键查看引用,可以看到熟悉的OptionHandlerFactory

由于默认的最大线程是16,对应的16进制就是0x10,通过简单的分析,选中的地方就是需要修改的地方.

选中菜单栏中的Modify--Assemble Instruction或者快捷键option + A修改成:

mov r9d, 0x200

其中0x200是512的16进制,当然可以修改成其他的。

第二处修改的地方是PREF_MIN_SPLIT_SIZE (最小分块大小,通过改得更小使得小文件也能通过多线程下载),利用同样的方法定位到OptionHandlerFactory中。

因为默认的是1M1048576Bytes,对应的16进制就是0x100000
所以应该把图中选中的地方修改成0x40000(256K).
最后选中菜单栏中的File —— Product New Executable生成新的可执行文件。接着赋予权限并移到/usr/local/bin最后修改配置文件中的两项(没有则添加)

#同服务器连接数
max-connection-per-server=512
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=256k

修改后的Aria2下载百度盘能把我家的宽带跑满。美滋滋~~
#EOF#