首页
社区
课程
招聘
[原创]商业dwm绘制取巧分析
发表于: 2021-1-5 21:27 30909

[原创]商业dwm绘制取巧分析

2021-1-5 21:27
30909

1.png

得到一个绘制的例子和一个易语言模块,首先把模块拖进某软件XXYY,于是得到了模块源码。

观察下图
图片描述

不难发现这里加载了一个dll到自身。然后把导出函数地址给全局变量。

重点:仔细观察第一个红框。他对一个资源文件进行了解密。所以我们只要在他解密后将他的dll文件取出来。那么只需要一行代码。
3.png

编译运行,这样我们就取到了dll

用工具查看dll的导出函数

图片描述
将dll拖进od,跳转到InstallDWM函数。

图片描述
看到这个我想丢进回收站!!!!

这条路走不通,呜呜呜,我太菜了。

思考一手。突然灵机一动。众所周知dwm绘制,那么绘制流程一定是在dwm里的。但是绘制的逻辑在刚才的绘制例子.e里看到了。所以嘿嘿,他们之间一定存在某种py交易。
图片描述

但是里面全是vm,我又不想去分析他们怎么py的。所以我盲猜跨进程大概可能应该用了WriteProcessMemory.

我直接一个驱动起步,把NtWriteVirtualMemory给他hook了

然后dbgview一开,驱动一加载,然后再绘制例子里填上Py来的测试码。

驱动加载前,必备shark,感谢飞总,让我这彩笔也能在win10上玩hook。

当开启绘制后,可以从上面的e语言例子看到,是在线程里不断绘制。

而我的dbgview也不断输出信息

7.png

被写的进程肯定就是dwm.exe了。从上面的信息可以观察出,主要就两个内容。一个是写好多好多东西,我猜测是绘制的内容。另一个地址是不会变的,所以我们可以用ce打开dwm.exe观察一下。

8.png

通过观察他的值在0 1 2三个值不停变动。所以我判断这是一个标志位,判断这个标志位做对应的操作(我猜的)。

所以只要找出访问他的地方就能得知他的绘制位置。

图片描述
到了一个无模块的地址,这里就是绘制的位置了。然后我们再来看看他是怎么hook的。找到首地址,想办法返回到上一层。

https://i.loli.net/2021/01/05/KPtILjh4sywdS3G.png
通过红色箭头调用到无模块地址的。但是这个call会进入一个ntdll模块里的LdrpDispatchUserCallTarget函数里。我百度了一圈,不思其解。后来看了一眼汇编。搜嘎。他里面会jmp rax。所以他应该是改了rax。追一下,rax来源[rax+0x148],后面的操作我就不说了

11.png

从上图可以看到某个对象里的函数指针被改成了他的绘制地址,从而达到hook的目的。

PS:这个不算分析的分析,希望大家不要喷我,能力有限,不能硬怼vm,只能取巧了。

我是科锐110期学员,希望大家多多关照。

 
 
 
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-1-4 15:27 被kanxue编辑 ,原因:
收藏
免费 5
支持
分享
最新回复 (35)
雪    币: 1015
活跃值: (5232)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
2
龟哥无敌!呜呜呜!站楼
2021-1-5 21:46
0
雪    币: 4709
活跃值: (1575)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
3
好哥哥开始搞了
2021-1-5 21:49
0
雪    币: 6124
活跃值: (4646)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4

dwm绘制本身不涉及驱动,驱动主要是为了注入dll/shellcode用的。

绘制用的dll/shellcode大致做了下面的操作:

  1. 定位SwapChain

  2. hook Present

dwm.exe是所有窗口的顶级窗口,除了无法使用窗口消息,其余的和一般的d3d进程没有大区别。

下面附部分代码:


以上代码是我之前写的dwm绘制的部分代码。由于不支持窗口消息,导致我还要再起一个进程去做映射,中间还要通讯,我就放弃了,换了其他方案。


2021-1-5 23:49
1
雪    币: 1041
活跃值: (733)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主这些东西可以在哪儿学到
2021-1-6 08:05
0
雪    币: 4171
活跃值: (4232)
能力值: ( LV3,RANK:37 )
在线值:
发帖
回帖
粉丝
6
黑洛 dwm绘制本身不涉及驱动,驱动主要是为了注入dll/shellcode用的。绘制用的dll/shellcode大致做了下面的操作:定位SwapChainhook Presentdwm.exe是所有窗口 ...
tql。呜呜呜,带带我
2021-1-6 08:47
0
雪    币: 4171
活跃值: (4232)
能力值: ( LV3,RANK:37 )
在线值:
发帖
回帖
粉丝
7
鸭子咯咯哒 楼主这些东西可以在哪儿学到
看楼上,舔大佬
2021-1-6 08:47
0
雪    币: 355
活跃值: (425)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢分享,,,,,
2021-1-6 08:55
0
雪    币: 889
活跃值: (4118)
能力值: ( LV6,RANK:98 )
在线值:
发帖
回帖
粉丝
9
龟哥无敌
2021-1-6 10:59
0
雪    币: 211
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
想舔个下载地址,研究
2021-1-6 11:00
0
雪    币: 4171
活跃值: (4232)
能力值: ( LV3,RANK:37 )
在线值:
发帖
回帖
粉丝
11
冷风in 想舔个下载地址,研究

https://share.weiyun.com/M0r50dr3

2021-1-6 11:11
0
雪    币: 211
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
谢谢
2021-1-6 11:54
0
雪    币: 0
活跃值: (376)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不知道有没有开源项目
2021-1-6 13:23
0
雪    币: 183
活跃值: (2427)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
龟哥无敌!呜呜呜!站楼
2021-1-7 00:30
0
雪    币: 6124
活跃值: (4646)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
15
qqzxc tql。呜呜呜,带带我
我不是大佬,只是dwm我刚好弄过而已
2021-1-7 02:42
0
雪    币: 11111
活跃值: (3075)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
图好像挂了
2021-1-7 09:22
0
雪    币: 4171
活跃值: (4232)
能力值: ( LV3,RANK:37 )
在线值:
发帖
回帖
粉丝
17
tomtory 图好像挂了
奥,我清了下缓存,打开也看不到图片,多刷新几下就出来了
2021-1-7 09:28
0
雪    币: 168
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
有没有交流裙
2021-1-7 09:54
0
雪    币: 919
活跃值: (1340)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
19
貌似是 低版本的VM。 高版本都是 Push  和 Jmp 做入口特征???
2021-1-7 10:06
0
雪    币: 4171
活跃值: (4232)
能力值: ( LV3,RANK:37 )
在线值:
发帖
回帖
粉丝
20
丿一叶知秋 貌似是 低版本的VM。 高版本都是 Push 和 Jmp 做入口特征???
大佬说是vmp3.x
2021-1-7 11:16
0
雪    币: 2089
活跃值: (3933)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
这种东西表示可以随手做一个出来,但是楼主分析vmp是真的强。另看完讨论,提示一下那个驱动其实跟主要逻辑分离的,用处是绕过一些钩子实现内存注入。
2021-1-8 19:45
0
雪    币: 58
活跃值: (1130)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
LdrpDispatchUserCallTarget是开了CFG
2021-1-8 21:33
0
雪    币: 206
活跃值: (2579)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23

类似的方式很久以前就有了 https://www.unknowncheats.me/forum/general-programming-and-reversing/377179-using-dwm-realize-drawing-engine.html
dwm绘制其实没什么特殊的 无非是不需要创建窗口 只要能加载驱动 连进程都不需要了 给谁绘制都是自己说了算 关键是如何拒绝dwm融合或者说绕过dwm融合 这才是最难的地方 我最近挖了半个月 从r3一路快挖到硬件层也没挖出来什么东西

最后于 2021-1-11 05:47 被章鱼C编辑 ,原因:
2021-1-11 05:44
0
雪    币: 219
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
章鱼C 类似的方式很久以前就有了 https://www.unknowncheats.me/forum/general-programming-and-reversing/377179-us ...
拒绝dwm融合啥意思?
2021-1-12 14:52
0
雪    币: 665
活跃值: (1051)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
阿龟上道了
2021-1-13 02:45
0
游客
登录 | 注册 方可回帖
返回
//