这个问题是我在上一篇文章中提到了自动更新慢的原因以及稍微提高一点速度的方法,后来拂晓也更新过了这部分代码,之后更新速度大约在4MB/s左右,但最近7.2更新,我还是嫌太慢,于是打算修得更彻底一些
更新的逻辑在sqexPatch.dll中
在WinHttpReadData所在的get_http_data(sub_37f40)中,拂晓直接将读入的length强行扩大到0x14000(80KB),说实话不是很理解拂晓为什么这么改,而不是扩大传入的参数或者直接像我之前那样直接把buffer长度作为WinHttpReadData的最大读入长度。
借助windbg的Time Travel Debugging,在this+0xdc处下硬件断点,很容易可以找到这个buffer分配处在0x370FD处:
可以看到此处他分配了0xa00000(10MB)的内存
这次的Patch需要改两个地方,一个是改大分配的内存大小和相关指针的赋值,另一个还是像上次那样将buffer长度作为WinHttpReadData的最大读入长度:
此次修改过后更新速度大约在50MB/s左右,如图所示(8 bit = 1 Byte, 431 Mbit = 53.875 MByte)