博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dll注入
阅读量:4980 次
发布时间:2019-06-12

本文共 819 字,大约阅读时间需要 2 分钟。

注入工具

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

转载于:https://www.cnblogs.com/cj5785/p/10664814.html

你可能感兴趣的文章
C 编译程序步骤
查看>>
[Git] 005 初识 Git 与 GitHub 之分支
查看>>
【自定义异常】
查看>>
pip install 后 importError no module named "*"
查看>>
springmvc跳转方式
查看>>
IOS 第三方管理库管理 CocoaPods
查看>>
背景色渐变(兼容各浏览器)
查看>>
iOS 电话在后台运行时,我的启动图片被压缩
查看>>
运用PCA进行降维的好处
查看>>
matlab
查看>>
《构建之法》阅读笔记02
查看>>
如何利用python将.doc文件转换为.docx文件
查看>>
Ubuntu 14.04 定时任务
查看>>
切片对象
查看>>
[置顶] Android入门教程------导入现有Android工程
查看>>
《Entity Framework 6 Recipes》中文翻译系列 (40) ------ 第七章 使用对象服务之从跟踪器中获取实体与从命令行生成模型(想解决EF第一次查询慢的,请阅读)...
查看>>
Intro to Filtering with Network Monitor 3.0
查看>>
问卷调查
查看>>
Contest Record
查看>>
51Nod 1066 - Bash游戏
查看>>