设为首页 - 加入收藏 - 网站地图 SecYe安全 Www.SecYe.Com - 国内网络信息安全IT技术门户网
当前位置:SecYe > 网络安全 > 应用安全 > 正文

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

时间:2017-03-17 11:26 来源:本站整理 作者:SecYe安全 阅读:

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

0x02 正文

         当时也是比较随意,想着每次都CE修改300秒这么麻烦,而超过300秒可能又存在暗桩检查导致提速效果不明显,于是想着能否将点击“试用提速”按钮时调用的函数找出来,最简单的当然是直接CE查找修改该地址的指令然后看有无可疑函数了,但是CE附加后发现管家无提示退出,自然是存在调试检测了,于是开始检查云管家目录下的EXE/DLL的导入表,发现basement.dll中有IsDebuggerPresent十分可疑,
 
于是简单写了一个hook Isdebuggerpresent使其始终返回false的dll(文章最后提供源码下载),注入后实测可正常附加调试了;同时发现目录下有个kernel.dll名字如此的闪亮,让我们来看看有什么吧
 

SetTrySpeedup,多么闪亮的名字,果断OD跟进去看看这个函数(当时的图片已经找不到了,这里用新版云管家放OD看下,就该函数来说似乎与去年的版本差别不大)
 

?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
10043EF0 >/$  83EC 08       sub esp,0x8
10043EF3  |.  56            push esi
10043EF4  |.  8D7424 04     lea esi,dword ptr ss:[esp+0x4]
10043EF8  |.  E8 43C1FEFF   call kernel.10030040
10043EFD  |.  8B30          mov esi,dword ptr ds:[eax]
10043EFF  |.  807E 0C 00    cmp byte ptr ds:[esi+0xC],0x0
10043F03  |.  74 24         je short kernel.10043F29
10043F05  |.  8B86 C4000000 mov eax,dword ptr ds:[esi+0xC4]
10043F0B  |.  83F8 FF       cmp eax,-0x1
10043F0E  |.  53            push ebx                                ;  LoadDl_1.<ModuleEntryPoint>
10043F0F  |.  8B5C24 14     mov ebx,dword ptr ss:[esp+0x14]
10043F13  |.  74 0D         je short kernel.10043F22
10043F15  |.  6BC0 4C       imul eax,eax,0x4C                       ;  kernel.10000000
10043F18  |.  8B4430 54     mov eax,dword ptr ds:[eax+esi+0x54]
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:[esi+0x198],bl
10043F28  |.  5B            pop ebx                                 ;  LoadDl_1.60001057
10043F29  |>  8B7424 08     mov esi,dword ptr ss:[esp+0x8]
10043F2D  |.  85F6          test esi,esi
10043F2F  |.  74 2A         je short kernel.10043F5B
10043F31  |.  8D4E 04       lea ecx,dword ptr ds:[esi+0x4]
10043F34  |.  83CA FF       or edx,-0x1
10043F37  |.  f0:0fc111     lock xadd dword ptr ds:[ecx],edx
10043F3B  |.  75 1E         jnz short kernel.10043F5B
10043F3D  |.  8B06          mov eax,dword ptr ds:[esi]
10043F3F  |.  8B50 04       mov edx,dword ptr ds:[eax+0x4]
10043F42  |.  8BCE          mov ecx,esi
10043F44  |.  FFD2          call edx
10043F46  |.  8D46 08       lea eax,dword ptr ds:[esi+0x8]
10043F49  |.  83C9 FF       or ecx,-0x1
10043F4C  |.  f0:0fc108     lock xadd dword ptr ds:[eax],ecx
10043F50  |.  75 09         jnz short kernel.10043F5B
10043F52  |.  8B16          mov edx,dword ptr ds:[esi]
10043F54  |.  8B42 08       mov eax,dword ptr ds:[edx+0x8]
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写了一段
 

?
01
02
03
04
05
06
07
08
09
10
11
[ENABLE]
globalalloc(mt,1024)
mt:
mov ebx,00000001
push ebx
call MMMMAAAA        ;这里MMMMAAAA是SetTrySpeedup的RVA地址
add esp,0x4              ;cdecl call当然要自己动手
ret
  
[DISABLE]
createthread(mt)


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

0x03 文中的源码下载

         HOOK isdebuggerpresent (这个东西比较通用把,不只是用在这里)和 获取settryspeedup的 动态衔接库是用VC 6 写的,界面和注入的aa脚本用的易语言。

本文来源:SecYe安全网[http://www.secye.com] (责任编辑:SecYe安全)

点击复制链接 与好友分享!

顶一下
(0)
0%
踩一下
(0)
0%