zoukankan      html  css  js  c++  java
  • dll注入

    注入工具

    dllinject

    注入流程

    1. 编写可注入动态库dll
    __declspec(dllexport)
    int go()
    {
        //需要注入的程序代码
    }
    
    1. 打开dllinject,选择需要注入的宿主程序,选择注入的dll,选择要执行的函数。

    例子:植物大战僵尸修改阳光值

    准备软件

    • 植物大战僵尸
    • dllinject
    • Cheat Engine

    注入流程(以修改植物大战僵尸阳关值为例)

    1. 打开植物大战僵尸游戏
    2. 打开Cheat Engine软件,选择植物大战僵尸进程
      dll注入1
    3. 搜索内存中的值,这个值和阳光中的值相对应,点击首次扫描
      dll注入2
    4. 进入游戏,当阳关值改变的时候,再次扫描,点击Next Scan
      dll注入3
    5. 当再次扫描时候,出现唯一的数值,也就是唯一的内存地址,这个内存地址就是存储阳光值的内存地址
      dll注入4
    6. 编写注入程序(此处我将阳光值改为9000),生成dll动态库
    __declspec(dllexport)
    void go()
    {
    	//需要注入的程序代码
    	int *p = (int *)0x2AED1BF0;
    	*p = 9000;
    }
    
    1. 打开dllinject,选择植物大战僵尸,找到生成的dll动态库,点击注入
      dll注入5
    2. 然后就可看到阳光值变为9000,注入成功
      dll注入6

    从这个例子得出的启示

    任何程序的要运行,都存在变量,而这个变量可以通过C语言去修改。

    基本上的外挂都是C语言修的,其原理与上述例子相同。这个例子只是临时性的修改变量的值。长久的做法是利用反编译,找到此处的赋值语句,然后在汇编中修改。也就是破解中常说的内存定位,关于破解的知识,有时间的话再做整理。

    变量都是存储在内存区域的,如果想要修改某个变量的值,那么修改其所在位置的值便可。这是C语言的精华所在,可以肆无忌惮的修改内存的值。这也是其他语言办不到的。从此就引出了一个C语言的强大之处:指针。

  • 相关阅读:
    MongoDB 学习笔记之 MongoDB导入导出
    快学Scala 第十四课 (读取行,读取字符, 控制台读取)
    MongoDB 学习笔记之 权限管理基础
    MongoDB 学习笔记之 索引
    MongoDB 学习笔记之 游标
    MongoDB 学习笔记之 查询表达式
    MongoDB 学习笔记之 基本CRUD
    MongoDB 学习笔记之 入门安装和配置
    Eclipse设置JVM的内存参数
    cron表达式详解
  • 原文地址:https://www.cnblogs.com/cj5785/p/10664815.html
Copyright © 2011-2022 走看看