|如何创建自己的Tracker( 三 )
本文插图
尽管我们的Quasar客户端代码是去混淆后的 , 但符号已经消失了 , 不用担心 , 因为我们拥有完整的源代码 , 所以接下来让我们开始调试 。 我只想验证我的流程图是否正确 , 所以让我们单击开始调试 , 然后在入口点设置一个断点(我强烈建议根据源代码重命名这些函数和类名 , 但是由于调试了许多次 , 我对此已经非常熟悉了) 。 请确保Quasar服务端正在运行中 。 我们将在Class0.smethod_3()遇到第一个问题 , 这是第二个初始化方法:
本文插图
它不会返回True , 从而导致客户端无法正确执行和退出 。 但是为什么会这样?让我们看一下源码:
本文插图
上图中标红的if语句 , 会在初始化后通过返回true来安装并将客户端连接到服务器 , 但由于此时客户端正在运行的current path不等于install path , 所以它不会执行 。 要理解上述说明 , 需要回到Builder:
本文插图
因此 , 此代码块会检查客户端当前是否正在AppdataRomaing目录下运行(于本文的情况下) , 如果没有 , 它将执行以下代码:
本文插图
此代码会处理两个问题:其一是客户端检测到另一个Quasar实例正在运行 , 通过检测互斥体;其二是客户端已安装到受害主机中 , 但实现了持久化 , 此时会终止进程并删除该文件 , 然后将其移至我们指定的install文件夹后重新启动 。 您可以查看Install方法自行研究 , 因为源码已经给出 。 它使得研究人员可以真正了解如何开发恶意软件 。 下面让我们做两件事:
- 更新我们的流程图
- 将客户端移动到指定的安装目录并启动
本文插图
让我们从预设的安装目录中调试客户端 , 看看会发生什么 , 请确保Quasar服务端正在运行 。 此外 , 我启动了Wireshark来监视流量(下图是我自己的设置 , IP地址及端口在您的计算机上将会有所不同):
本文插图
我将从AppdataRoaming目录重新启动客户端 , 然后直接跳到Client.Connect函数:
本文插图
这次我们恰好到达了想要的位置(专家提示:您可以右键单击dnspy对象并更改其名称)。
本文插图
这里有三处重点 , 首先是RemoteCertificationValidationCallBack——它将验证从服务器接收到的证书 , 数据流读取函数和OnClientState函数 。
本文插图
所以socket.Connect函数应该将客户端成功连接到服务器并进行第一次TCP握手:
本文插图
接下来 , 我想研究执行到第287行时发生了什么:
本文插图
这是一个SSL握手 , 但是发生的是服务器将X509证书传给了客户端 , 并且客户端认证了该证书 , 并且这是在RemoteCertificationValidationCallBack内部发生的 。 让我们查看一下它的源码:
推荐阅读
- 模型|REVIT技巧!如何创建能量模型,实现能量优化
- 技术编程|如何利用数据库进行世界史研究
- 区块链|欧科云链任煜男做客西安广电电台节目,解读区块链如何赋能实体产业
- 苹果笔记本|如何让macbook合上时工作?解决苹果电脑合盖自动休眠问题-macw
- |如何分析“会员数据”,强化门店的竞争力?
- 拍照摄影|如何拍出赞爆朋友圈的自拍照?网红小姐姐公开拍照神器
- 目标检测|数据民工也能移动办公了:目标检测标注App上线,分分钟创建私人数据集
- IOS系统|苹果免签封装如何实现?苹果免签封装会不会掉签?
- 帧数|帧数提升70% NV黑科技DLSS如何开启
- 拍照摄影|即将进入大学的新生想入手一台相机,该如何选?
