商业dwm绘制取巧分析

[复制链接]
ad***官方认证 发表于 2021-2-22 13:41:14 | 显示全部楼层 |阅读模式
ad*** 2021-2-22 13:41:14 1722 0 显示全部楼层

注册账号-全站资源免费下载

您需要 登录 才可以下载或查看,没有账号?注册账号

x
一、PY得到样本And测试码 DRIU2XcNtJmfaoB.png
得到一个绘制的例子和一个易语言模块,首先把模块拖进某软件XXYY,于是得到了模块源码。
二、分析模块源码
观察下图
LvB4yb9OxTpSWQe.png
不难发现这里加载了一个dll到自身。然后把导出函数地址给全局变量。

重点:仔细观察第一个红框。他对一个资源文件进行了解密。所以我们只要在他解密后将他的dll文件取出来。那么只需要一行代码。
dJyw8CbLf2seMgq.png
编译运行,这样我们就取到了dll
三、分析DLL
用工具查看dll的导出函数
FCQzn5s4cx6yeYa.png
将dll拖进od,跳转到InstallDWM函数。
t3X8mBECWkL1MbJ.png
看到这个我想丢进回收站!!!!

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

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

但是里面全是vm,我又不想去分析他们怎么py的。所以我盲猜跨进程大概可能应该用了WriteProcessMemory.
四、动手干
我直接一个驱动起步,把NtWriteVirtualMemory给他hook了
  1. NTSTATUS __stdcall MyWriteVirtualMemory(HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, SIZE_T NumberOfBytesToWrite, PSIZE_T NumberOfBytesWritten)
  2. {
  3.     MyNtWriteVirtualMemory a = Ori_NtWriteVirtualMemory;
  4.     PEPROCESS eprocess = IoGetCurrentProcess();



  5.     KdPrint(("[xxx]Name:%s   BaseAddress:%llX  Buffer:%llX  NumberOfBytesToWrite:%d  NumberOfBytesWritten:%d\n", (const char*)PsGetProcessImageFileName(eprocess), BaseAddress, Buffer, NumberOfBytesToWrite, NumberOfBytesWritten));
  6.     return a(ProcessHandle, BaseAddress, Buffer, NumberOfBytesToWrite, NumberOfBytesWritten);
  7. }
复制代码
然后dbgview一开,驱动一加载,然后再绘制例子里填上Py来的测试码。

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

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

而我的dbgview也不断输出信息

xIDgkBfG6FYuTyR.png
被写的进程肯定就是dwm.exe了。从上面的信息可以观察出,主要就两个内容。一个是写好多好多东西,我猜测是绘制的内容。另一个地址是不会变的,所以我们可以用ce打开dwm.exe观察一下。
IkmvdW5ahp3NUSr.png
通过观察他的值在0 1 2三个值不停变动。所以我判断这是一个标志位,判断这个标志位做对应的操作(我猜的)。

所以只要找出访问他的地方就能得知他的绘制位置。
wmftArzC7sS1cFT.png
到了一个无模块的地址,这里就是绘制的位置了。然后我们再来看看他是怎么hook的。找到首地址,想办法返回到上一层。

KPtILjh4sywdS3G.png
通过红色箭头调用到无模块地址的。但是这个call会进入一个ntdll模块里的LdrpDispatchUserCallTarget函数里。我百度了一圈,不思其解。后来看了一眼汇编。搜嘎。他里面会jmp rax。所以他应该是改了rax。追一下,rax来源[rax+0x148],后面的操作我就不说了
gqTI65ZPf192bHB.png
从上图可以看到某个对象里的函数指针被改成了他的绘制地址,从而达到hook的目的。







上一篇:(逆向入门)OD与IDA结合分析的经验总结
下一篇:迷之操作-去水印
这个家伙很赖,还没有设置签名
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则 返回列表 发新帖

快速回复 返回顶部 返回列表