zoukankan      html  css  js  c++  java
  • 外挂原理之植物大战僵尸

      众所周知在windows或者Linux系统中,进程间的数据是相互独立的,譬如有两个进程A和B,A只能访问操作系统分配给A的内存空间,不能访问操作系统分配给B的内存空间。话句话说A不能修改B的数据,B也不能修改A的数据,想要修改数据只能通过.dll才行得通,外挂的目的只有一个,修改数据,可以通过两种方式,要么直接修改内存数据要么检索函数地址调用函数已达到外挂目的。

      以修改植物大战僵尸金币数量为例,简要说明下外挂原理。

    【第一步】打开植物大战僵尸

      

      初始金币是50

      

      【第二步】这里会用到一个工具叫做Cheat Engine。我用的是6.3的版本。他的主要作用是监视进程所用到的内存地址等,函数的地址、数据的地址...

      

      【第三步】打开需要监视的进程,我这里选择植物大战僵尸

      

      【第四步】初次扫描值为50的数据有哪些。输入50,点击新的扫描,这个时候会扫描到有很多数据为50的项,我们不能确定哪一项是金币的数据的内存地址。

      

       【第五步】打开游戏继续玩,当金币的数量发生变化的时候暂停游戏。比如说现在的75。

      

      【第六步】在Cheat Engine中输入75,点击再次扫描。如下图,只有一个数据的是75,现在可以确定0X0896D868这个地址就是金币的变量的首地址。

      

      【第六步】改变金币的值。选择change vakue of selected addresss。

      

      【第七步】改变值输入10000.

      金币的值就改变成了10000。

      这个就是比较简单的外挂。其原理三步走。

      【1】最重要的是找你想修改的数据的内存地址

      【2】编写修改数据的.dll程序

      【3】注入dll。

     下面我们详细的讲讲通过dll注入的方式修改金币的值

      【1】找到金币的内存地址,假设我们找到的是0x12E595F0。

      【第二步】编写改变金币的dll。打开VS2013新建工程。设置工程属性为dll。编写dll代码。生成dll。

      

      假设我们想要把金币的值修改成777。

      

    1 _declspec(dllexport) void go()
    2 {
    3     int*p = (int*)0x12E595F0;
    4     *p = 777;
    5 }

      【第三步】dll注入。使用工具dllinject找到需要注入的进程,选择植物大战僵尸

      

      选择之前生成的dll,执行时加载的函数为go。点击执行。

      金币的值被修改成777

     这就是外挂的原理。简单吧。O(∩_∩)O。

  • 相关阅读:
    elementui 修改合计行样式
    C# 导出Excel NPOI 修改指定单元格的样式 或者行样式
    向基于语义模型的操作集成的演变
    在制造业的工业2.0中应用MOM系统
    制造运营管理 (MOM) 的工作流驱动方法
    语义模型在智能工业运营中的作用
    定义运营系统架构
    在离散混合制造环境中应用制造运营模型
    面试官:如果存取IP地址,用什么数据类型比较好 (C#版本)
    使用WtmPlus低代码平台提高生产力
  • 原文地址:https://www.cnblogs.com/wuyouxiaocai/p/5797789.html
Copyright © 2011-2022 走看看