• 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语言的强大之处:指针。

  • 相关阅读:
    解决 idea 项目中Error:java: 无效的标记: XX:MaxPermSize=512M
    vant预览图片
    react路由
    computed和watch
    仓库系统面单常用的打印插件
    04.简单了解一下Redis企业级数据备份方案
    CRMEB 源码 login页 获取信息 缓存修改
    frp 搭建远程桌面
    ABP asp.net core 项目发布 IIS部署
    MYSQL 监控数据库SQL语句 查看数据库执行语句
  • 原文地址:https://www.cnblogs.com/cj5785/p/10664814.html
Copyright © 2020-2023  润新知