• 外挂是怎么写的?


     

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

    外挂的基本概念:

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

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

     

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

    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 继续运行程序。

  • 相关阅读:
    spring/spirng boot添加fluent日志-aop
    python添加fluent日志记录
    springboot添加fluent日志记录
    istio添加Fluentd
    linux通过speedtest-cli测试服务器网速
    linux 发送Post请求 json格式
    springboot添加fluent日志记录
    virtaulbox docker虚拟机使用主机代理shandowsocks
    istio-jaeger-python调用链配置
    计算机网络和因特网
  • 原文地址:https://www.cnblogs.com/mlgjb/p/8745916.html
Copyright © 2020-2023  润新知