再过几天期末考试了,还有好多要复习。。蛋都快碎了。最近在看老狼的gh0st内核编程,想了很久要不要写文章,最后还是觉得很有必要,原因过一会讲。

先送上老狼的gh0st无加密(lxe格式)视频下载地址:

http://phith0n.400gb.com/u/29415/3193732

其中包含的gh0st源码(乱七八糟的被我的卡巴斯基杀过一遍,仅仅是源码):http://www.400gb.com/file/23820009

在写东西前我要说一下,我虽然说研究远控的源码,但我告诉你我以前包括以后从未也从不想使用远控来控制中国人的电脑。我希望你们大家也一样,仅仅只是对编程感兴趣,而不是为了违法的目的去使用代码。


好了,进入主题。老狼的gh0st内核编程教程,我认为是国内绝无仅有的一套比较全的远控编写的教程,它很详细,基本上就是教你重新打造一款远控,使用gh0st内核。

但是为什么我还要写这一套文章,既然教程都有了。我认为这套教程有一些很致命的问题:

1.不想吐槽老狼英语口语水平

2.老狼在教程伊始没有系统地给大家介绍远控的概念。什么是服务端,什么是客户端之类的问题。(好像老狼在他之前其他教程里讲过,但在网上传的最多的只有这个教程,所以很多朋友看教程的时候还是一知半解)

3.主控端代码在vs2010中编写,但被控端代码却在古老的VC6下创建。不知道老狼为什么这么做,使用VC6还得下载sdk。所以我在编写的时候,是将主控端、被控端这些工程放在VS2010下同一个解决方案中,方便代码的管理。

4.老狼的代码与教程有一些错误,而且他遇到问题、解决问题的方法不太符合面向对象的思想,还有些问题的解决只是解决了表面的问题,并没有真正找到问题的根源。这也是很多软件漏洞多发的关键,一个漏洞如果不从根源上修复,可能在其他代码中存在一个新的漏洞。

5.教程中很多地方(可以说大部分地方)只是复制的gh0st代码,并没有详细的讲解。

当然这只是我的见解,不是说我可以做的更好,只是我在学习过程中发现的问题。我的能力不可能做出这样一套完善的教程,我写文章的目的只是像一个批注,在大家观看教程的过程中给大家一点帮助。我的文章不能替代老狼的教程。

在这里,先给大家一个大局观:gh0st是什么,大概原理是什么。

gh0st是一款基于C/S架构的远程管理软件(我只是就事论事,不想讨论C/S架构过时或不过时)。所谓远程管理,就是我在我的电脑上通过一些手段,可以操作其他电脑。什么是C/S架构,C表示Client,S表示Server,也就是客户端和服务端的意思。可以这样理解C/S,现在有两台电脑,一台是Server,一台是Client,server电脑就会开启一个端口,并一直监听这个端口中的信息。client来连接这个端口,连接成功后,两台机器就能互相发送信息了。(具体的原理建议大家去看socket通信)

gh0st用的是C/S架构中的反向连接。我用主控端和被控端来称呼黑客的电脑和肉鸡的电脑。反向连接的意思就是我主控端作为server,被控端作为client,主控端监听一个固定的端口,并有一个固定的IP。然后被控端来连接这个IP的该端口,这就是所谓的上线。

在实际情况中,黑客的电脑并不是都有固定的IP,我在我们寝室使用的是一个路由器,于是我的IP只是内网IP,192.168.x.x。而且,如果我换一个地方上网,IP也会变。这样我的被控端是找不到我的IP的。所以很多远控对待该问题,有两个解决方案:

1.DNS上线

花生壳、3322提供了免费的动态域名服务,其实就是提供了DNS服务。我们把自己的IP绑定到DNS服务器上,被控端通过对DNS的解析,找到主控端的IP,再连接。下次换地方上网了,只需要更改自己绑定到DNS上的IP即可。

2.FTP(HTTP)上线

我们把自己的IP写入一个文本文件1.txt,放在ftp(http)服务器上,比如ftp://leavesongs.com/1.txt。被控端去下载该txt,在其中找到主控端的IP。再连接。

当然gh0st对他们都是支持的。

再讲讲gh0st这个软件的组成。老狼给的gh0st最终编译好就是一个exe文件,点击打开后是一个主控端的样子:

在build选项卡中,填好相关信息,可以生成一个exe文件,这就是所谓的被控端。

但是我们打开源码看,其实它是主要由三个部分组成,一是带界面的主控端,一个是动态链接库dll,一个是加载dll的exe。我们被控端的所有功能都是写在dll当中的。而并不是写在exe文件中。

大局观大概就是这些。再说一下gh0st核心内容。

在传输数据方面,主控端使用IOCP模型,关于该模型请google。在主控端中,由CIOCPServer类实现。在被控端中,数据传输使用CClientSocket类实现。数据传输是远控的核心,所以这两个类也就成了gh0st的核心类。当然,在传输过程中,gh0st使用zlib进行压缩,减小数据包的大小。

在被控端管理方面,gh0st使用了一个很好的方案。先做了一个CManager类,作为所有管理功能的基类,其他的比如系统管理类CSystenManager就继承了CManager。大大地增加了代码的重用性。

在主控端方面,有这样一个回调函数NotifyProc,所有被控端发来的消息,都会经过此函数,在该函数中使用switch语句,处理各个消息。使得代码看起来井井有条。

在稳定性方面,被控端宿主为svchost以系统服务启动,并有守护线程,用心跳包机制防止以外掉线。

说了半天了……西安这又是一个炎热的下午。希望你能看懂我的文章,并对远控有一个更深的理解。下次我会开始写一些gh0st的源码,和老狼视频里一些难以理解的地方。再次强调,本文不能替代老狼的视频,想学习的同学务必认真地看老狼的教程,你会受益良多。

gh0st源码分析与远控的编写(一)相关推荐

  1. gh0st源码分析与远控的编写(三)

    好久不见.距离上次写gh0st来有好久了,一是期末考试,忙不开,二是后来电脑坏了,几天没能上网. 昨天总算是把电脑修好了,虽说没到一切重头开始的地步,但是也重装各种东西花了很久.闲下来的时间,我就来继 ...

  2. gh0st源码分析与远控的编写(二)

    上次说了那么多,基本上就是一个叫"大局观"的东西,只有脑子里有了一个软件的设计.运行思路,才能把一个一个类写出来,组合在一起. Gh0st的作者是一个对代码有很好掌控的人,他对代码 ...

  3. gh0st源码分析与远控的编写(四)

    真的很久很久了,距离上一次写gh0st的文章(http://www.leavesongs.com/C/gh0st_3.html),过去有大半年了.总算有一个时间,我放下手里所有的活,能够继续把这份努力 ...

  4. gh0st源码分析:屏幕监控

    这两天一直看gh0st源码,看得也是一头雾水,下面就分析一下屏幕监控的通信过程,对屏幕扫描算法以及绘图方面就不分析了,因为我也不懂.写的有点乱,就当作个笔记了. 首先从控制端按下屏幕监控选项开始,这时 ...

  5. Robotium源码分析之Instrumentation进阶

    在分析Robotium的运行原理之前,我们有必要先搞清楚Instrumentation的一些相关知识点,因为Robotium就是基于Instrumentation而开发出来的一套自动化测试框架.鉴于之 ...

  6. Robotium源码分析之Instrumentation进阶-attach

    在分析Robotium的运行原理之前,我们有必要先搞清楚Instrumentation的一些相关知识点,因为Robotium就是基于Instrumentation而开发出来的一套自动化测试框架.鉴于之 ...

  7. 远哥Amoeba源码分析之:核心类说明

    同事喜欢叫我远哥,所以我把这个笔记称为远哥系列,今天有兴趣分析一下Amoeba的源码,并且在此记录一下,并且随时更新. Amoeba目前一共有三个项目产品,分别是: Amoeba for MySQL: ...

  8. duilib之源码分析

    Duilib入门教程 http://www.cnblogs.com/Alberl/p/3342030.html http://blog.csdn.net/wogel/article/details/9 ...

  9. Android 图片框架原理——Glide源码分析

    目录 前言 一.With() 二.load() 三.into() 1. buildImageViewTarget() 2.关注1 :buildRequest 构建 3.关注2:runRequest 执 ...

最新文章

  1. Nature子刊:干旱条件下土壤细菌网络的稳定性不如真菌网络
  2. MYSQL连接一段时间不操作后出现异常的解决方案
  3. Hibernate第一次课(1)
  4. 将html代码确析成json数据格式,JSON字符串解析成JSON数据格式
  5. click点击后鼠标移去就失效怎么实现_鼠标右键失灵怎么办,你知道原因吗?
  6. css 对话框阴影,科技常识:css实现不规则图形的阴影(如对话框)
  7. 苹果欺诈性营销?iPad mini 6因“果冻屏”遭用户集体诉讼
  8. 【转】QTableView 小结
  9. OCR+NLP 提取信息并分析,这个开源项目火了!
  10. ruby环境变量的文件读取形式
  11. Java+MySQL 基于ssm的宠物商店领养管理系统#毕业设计
  12. 如何修复金蝶专用版服务器,金蝶KIS专业版常见问题及解决方法
  13. 学习asp.netcore入门视频
  14. notepad++的JSONviewer插件
  15. cmd窗口太炫酷了,电脑编码软件太多?手把手教你搭建Java环境,利用dos命令实现运行操作
  16. 计算机一级如何启动ie浏览器,ie,详细教您怎么解决ie浏览器打不开的问题
  17. 为何Excel表格部分选项是灰色的,无法选择?
  18. 免费字体下载,在线设计,不怕找不到好字体
  19. Nature:一份全球综合报告显示生物多样性的丧失是生态系统变化的一个主要驱动因素
  20. 【往届期末试卷】毛概期末试卷

热门文章

  1. mysql命令导出表结构文件夹_mysql,命令导入\导出表结构或数据
  2. ncbi查找目的基因序列_教你如何利用NCBI寻找目的基因
  3. python输出星期名缩写_在Python中解析带有时区缩写名称的日期/时间字符串?
  4. dbeaver导出建表语句_细致入微:如何使用数据泵导出表的部分列数据
  5. Android端发送字符到Wed端,Android面试-socket和websocket
  6. github上面图片不显示
  7. Node.js模块之Buffer
  8. Android后台保活实践总结:即时通讯应用无法根治的“顽疾”
  9. nagios nrpe
  10. public medical image database