百度云管家提速自适应多版本持久化的一种思路
本帖最后由 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:
当时的成品加速器截图:
成品提速器源码打包(已不能直接使用):
本帖最后由 mouse31rat 于 2017-3-15 22:33 编辑
统一回复一下为什么不能用了:
1.新版本进程名改了,以前叫baiduyunguanjia.exe,现在不是了,所以注入进程的时候进程名当然要改一下
2.仔细看一下该函数,使用了几个参数?现在你最好手动跟一下看参数是否一致,入栈顺序是否有变化(主帖里的AA脚本很简单,因为以前的版本只有一个参数)
这两个地方修改了基本上可以了,新版跟老版没有太大区别,这个补丁当时用了半年左右,百度云正常更新无任何影响。
说百度云被限速1kb/s的,是破解补丁不完善,导致服务端发现,在服务端限速账号的。本帖里的方法目前还没有相关反馈导致账号限速的,不过既然公开了也难说。 第一个沙发!!!!!! 可用不? 听说百度云 不是直接限速到账号了啊,只要不开会员,都是1kb/s啊 感谢分享思路。 现在啊,封杀的厉害 谢谢分享,学习了 感谢分享思路 拒绝流氓收费行为 看不懂!路过支持{:301_1008:} 这些创造性的冯绍峰