外挂是怎么写的?

 

我个人对外挂是非常感兴趣的,学习编程也有一段时间了,所以更加好奇外挂是怎么写的?

外挂的基本概念:

一般是指在电脑运行中,一个程序通过某种事件触发而得以挂接到另外一个程序的空间里(常用的触发事件有键盘触发,鼠标触发,消息触发等),挂接的目的通常是想改变被挂接程序的运行方式

我们都知道游戏分为单机游戏网络游戏。单机游戏的外挂只是修改一些游戏数值,而网络游戏的外挂则涉及到网络数据的拆包与封包。

 

一、先说一下写一个外挂需要什么条件

1、熟练的C语言知识,目前的外挂大部分都是用BC或者是vc写的,拥有熟练的C语言知识是写外挂的基本条件。

2、具有很强的汇编基础。一般游戏都不可能有原代码的,必须靠反汇编或者跟踪的办法来探索其中的机理 ,所以有强的汇编基础也是必不可少的条件。

3、熟练掌握跟踪和调试的工具。有了上面2个条件后,掌握一些工具也是很有必要的跟踪的工具,softice当然是不二之选,至于反汇编的工具,我推荐用IDA PRO这个工具反汇编出来的代码结构清晰,非常好读如果你不具有上面的条件,还是先把基础打好,再来写外挂吧,一分耕耘,一分收获,天下没有白掉的馅饼的。


二、写外挂面临的基本技术问题

1、修改进程的执行代码。要修改进程的执行代码,要先取得进程的ID,如果是由外挂程序启动,返回值里就有进程ID,如果不是的话,需要用findwindow找到窗口句柄,再用GetWindowProcessID取得进程ID,取得进程ID以后,就可以用writeprocessmemory来修改进程的执行代码了,使程序按照我们的意愿来执行,石器外挂里的不遇敌、寸步遇敌就是用这样的方法来实现的。

2、截获外挂发送和接收的封包。除了通过修改代码来实现的功能以外,很多的功能都是通过修改封包来实现的,要修改封包,首先要能截获它。 第一步是要跟踪出发和收的位置,至于怎么跟踪,我以后会提到,找到位置以后,有2个办法,一是在那个位置加一个jmp语句,跳到你的处理函数位置,处理完后,再跳回来,这种方法要求比较高,需要处理好很多事情,另一种办法是往那个位置写条能造成例外的指令,比如int 3,然后用DebugActiveProcess调试游戏进程,这样每当游戏执行到那个位置的时候,就会停下来,到外挂程序里面去,等外挂程序处理完以后,用ContinueDebugEvent 继续运行程序。

posted @ 2018-04-08 16:45  哦摩西罗伊  阅读(2469)  评论(0编辑  收藏  举报