首页
社区
课程
招聘
[原创]x64dbg入门系列(六)- 实战硬件断点
发表于: 2020-6-22 16:37 12492

[原创]x64dbg入门系列(六)- 实战硬件断点

2020-6-22 16:37
12492

这应该是该系列的最后一节了,感谢大家的关注。

下图的红框位置就是调试寄存器组Dr0~Dr7,Dr0,Dr1,Dr2,Dr3是用于设置硬件断点的,由于只有4个硬件断点寄存器,所以同时最多只能设置4个硬件断点。它产生的异常是单步异常。
这里不对原理做过多介绍,详细知识请参考《加密与解密》第二章2.1.4节
图片描述

这方面的知识可以看我以前的帖子,这里给上链接https://bbs.pediy.com/thread-252468.htm。
一般客户端的通讯协议常用的是tcp或者udp,他们对应的API:
协议 函数
tcp send
udp sendto

版本信息
图片描述

1.寻找给send函数下断点,根据我以前的帖子可以知道send函数是在ws2_32.dll这个模块。

图片描述

所以我们在符号——>选中ws2_32.dll模块——>搜索send——>下断点。
图片描述

打开微信随意给一个人发信息,这个时候程序断下,由于这个属于系统模块,我们不做分析,直接Ctrl+F9运行到程序模块。
图片描述

接下来我们看下send函数,对我们有用的是第二个,所以这个参数我们需要着重关注。

通过分析后发现buf中是一个数值,这个数值是随着消息的不同而改变的。这里给该地址处下一个硬件写入断点。

图片描述

运行程序后会在下图的位置断下。这个时候分析了好久的汇编,感觉收获不大,所以这个时候试着在堆栈中寻找信息。

图片描述

在堆栈中得到一个可疑信息,但是并没有发现发送的文本信息,所以我们试着分析该字符出现的函数处。
图片描述

我们在wechatwin.dll中进行字符串搜索寻找”newsendmsg“字符串,运气不错,这里只发现了一处代码。
图片描述

在断点标签栏处,取消其他断点,然后重新发送信息,程序在下图处断下,通过分析后发现收益不大,继续通过观察堆栈查找信息。
图片描述

在堆栈中发现了下图的关键信息。”1234“这个就是我们发送的信息。在该地址处下一个硬件写入断点。
图片描述

重新发送信息后,程序在下图位置断下。这里的函数看着很难受,直接运行到返回处查看上一层代码。
图片描述

下图就是上一层代码的调用处,这个函数也就是发送消息的函数了。
图片描述

进去查看函数代码,这里我们发现代码似乎是加了混淆。
图片描述

查看区段果然有一个区段加了VMP。
图片描述

#小节
找到此位置我们可以做很多操作,比如自己做个发送消息的程序等等,因为本节的知识是硬件断点,所以就不带着大家写代码了。

知乎:https://www.zhihu.com/people/yi-gu-mi-li-47
公众号:一谷米粒


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

收藏
免费 3
支持
分享
最新回复 (7)
雪    币: 7121
活跃值: (125793)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
非常感谢楼主分享
2020-6-22 16:39
0
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
666
2020-6-22 17:42
0
雪    币: 1250
活跃值: (3560)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2020-6-22 17:46
0
雪    币: 6172
活跃值: (4947)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
5
mark
2020-6-24 14:04
0
雪    币: 181
活跃值: (621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
野鸡:send不是加密的吗,为什么你不用CE本地 ,狗头保命
2020-6-24 14:26
0
雪    币: 101
活跃值: (743)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
感谢分享~
2020-7-23 17:39
0
雪    币: 217
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢提供,好好学习,天天向上
2020-10-26 22:52
0
游客
登录 | 注册 方可回帖
返回
//