arryboom 发表于 2017-3-15 22:00

百度云管家提速自适应多版本持久化的一种思路

本帖最后由 mouse31rat 于 2017-3-21 18:31 编辑

0x01 前言
         今天翻硬盘清理文件时发现了去年写的一个百度云管家提速工具,鉴于公开的程序容易被处理当时手头又有大把的文件需要下载所以最终没有发布在坛子里,时至今日程序已经不能使用,但是其中的思路完全可以借鉴并且在新版本重现,所以发来给想要做个使用时间长且自适应版本的比较一劳永逸的提速补丁的童鞋参考。

0x02 正文

         当时也是比较随意,想着每次都CE修改300秒这么麻烦,而超过300秒可能又存在暗桩检查导致提速效果不明显,于是想着能否将点击“试用提速”按钮时调用的函数找出来,最简单的当然是直接CE查找修改该地址的指令然后看有无可疑函数了,但是CE附加后发现管家无提示退出,自然是存在调试检测了,于是开始检查云管家目录下的EXE/DLL的导入表,发现basement.dll中有IsDebuggerPresent十分可疑,

于是简单写了一个hook Isdebuggerpresent使其始终返回false的dll(文章最后提供源码下载),注入后实测可正常附加调试了;同时发现目录下有个kernel.dll名字如此的闪亮,让我们来看看有什么吧


SetTrySpeedup,多么闪亮的名字,果断OD跟进去看看这个函数(当时的图片已经找不到了,这里用新版云管家放OD看下,就该函数来说似乎与去年的版本差别不大)
10043EF0 >/$83EC 08       sub esp,0x8
10043EF3|.56            push esi
10043EF4|.8D7424 04   lea esi,dword ptr ss:
10043EF8|.E8 43C1FEFF   call kernel.10030040
10043EFD|.8B30          mov esi,dword ptr ds:
10043EFF|.807E 0C 00    cmp byte ptr ds:,0x0
10043F03|.74 24         je short kernel.10043F29
10043F05|.8B86 C4000000 mov eax,dword ptr ds:
10043F0B|.83F8 FF       cmp eax,-0x1
10043F0E|.53            push ebx                                 ;LoadDl_1.<ModuleEntryPoint>
10043F0F|.8B5C24 14   mov ebx,dword ptr ss:
10043F13|.74 0D         je short kernel.10043F22
10043F15|.6BC0 4C       imul eax,eax,0x4C                        ;kernel.10000000
10043F18|.8B4430 54   mov eax,dword ptr ds:
10043F1C|.53            push ebx                                 ;LoadDl_1.<ModuleEntryPoint>
10043F1D|.FFD0          call eax                                 ;kernel.10000000
10043F1F|.83C4 04       add esp,0x4
10043F22|>889E 98010000 mov byte ptr ds:,bl
10043F28|.5B            pop ebx                                  ;LoadDl_1.60001057
10043F29|>8B7424 08   mov esi,dword ptr ss:
10043F2D|.85F6          test esi,esi
10043F2F|.74 2A         je short kernel.10043F5B
10043F31|.8D4E 04       lea ecx,dword ptr ds:
10043F34|.83CA FF       or edx,-0x1
10043F37|.f0:0fc111   lock xadd dword ptr ds:,edx
10043F3B|.75 1E         jnz short kernel.10043F5B
10043F3D|.8B06          mov eax,dword ptr ds:
10043F3F|.8B50 04       mov edx,dword ptr ds:
10043F42|.8BCE          mov ecx,esi
10043F44|.FFD2          call edx
10043F46|.8D46 08       lea eax,dword ptr ds:
10043F49|.83C9 FF       or ecx,-0x1
10043F4C|.f0:0fc108   lock xadd dword ptr ds:,ecx
10043F50|.75 09         jnz short kernel.10043F5B
10043F52|.8B16          mov edx,dword ptr ds:
10043F54|.8B42 08       mov eax,dword ptr ds:
10043F57|.8BCE          mov ecx,esi
10043F59|.FFD0          call eax                                 ;kernel.10000000
10043F5B|>5E            pop esi                                  ;LoadDl_1.60001057
10043F5C|.83C4 08       add esp,0x8
10043F5F\.C3            retn


看到这里我想大部分童鞋都知道怎么回事了,当时为了简单快速我直接用AA写了一段

globalalloc(mt,1024)
mt:
mov ebx,00000001
push ebx
call MMMMAAAA         ;这里MMMMAAAA是SetTrySpeedup的VA地址
add esp,0x4               ;cdecl call当然要自己动手
ret


createthread(mt)

现在的版本当然不能直接使用这段脚本,思路就是这样,最近比较忙,有需要的童鞋自己动手研究下吧{:301_997:}

0x03 文中的源码下载

         HOOK isdebuggerpresent (这个东西比较通用把,不只是用在这里)和 获取settryspeedup的 动态衔接库是用VC 6 写的,界面和注入的aa脚本用的易语言。
IsDebuggerPresent hook dll:
GetbaiduyunSetTrySpeedUp:
当时的成品加速器截图:
成品提速器源码打包(已不能直接使用):

arryboom 发表于 2017-3-15 22:25

本帖最后由 mouse31rat 于 2017-3-15 22:33 编辑

统一回复一下为什么不能用了:
1.新版本进程名改了,以前叫baiduyunguanjia.exe,现在不是了,所以注入进程的时候进程名当然要改一下
2.仔细看一下该函数,使用了几个参数?现在你最好手动跟一下看参数是否一致,入栈顺序是否有变化(主帖里的AA脚本很简单,因为以前的版本只有一个参数)
这两个地方修改了基本上可以了,新版跟老版没有太大区别,这个补丁当时用了半年左右,百度云正常更新无任何影响。

说百度云被限速1kb/s的,是破解补丁不完善,导致服务端发现,在服务端限速账号的。本帖里的方法目前还没有相关反馈导致账号限速的,不过既然公开了也难说。

kevin_cctv 发表于 2017-3-15 22:07

第一个沙发!!!!!!

svcy 发表于 2017-3-15 22:09

可用不?

chuge 发表于 2017-3-15 22:17

听说百度云 不是直接限速到账号了啊,只要不开会员,都是1kb/s啊

张穴友 发表于 2017-3-15 22:17

感谢分享思路。

Bohui1269987019 发表于 2017-3-15 22:19

现在啊,封杀的厉害

小辉e佰 发表于 2017-3-15 22:19

谢谢分享,学习了

luzmin 发表于 2017-3-15 22:21

感谢分享思路 拒绝流氓收费行为

Happy小翼 发表于 2017-3-15 22:21

看不懂!路过支持{:301_1008:}

907 发表于 2017-3-15 22:22

这些创造性的冯绍峰
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 百度云管家提速自适应多版本持久化的一种思路