关于dll补丁浅谈
我看前面的帖子有人问到DLL补丁怎么做首先WIn7以上就是动态加载dll了 每次加载dll的基址就会有所变化
第一次加载
第二次加载
可以看到两个dll基址是不同的
其实dll也可以称为程序的模块
win7以上是动态来定义模块的基址的
什么是基址呢?这里给出一个 06650000
这个是基址 那么可以理解为是基地址 dll里面的命令内存地址都是在这个地址上运算得来的
给个关键条的图
这里位关键跳066510E4|. /0F85 39000000 jnz Message.06651123
地址位:066510E4
基址为:06650000
那么这个关键跳的内存地址就是:06650000 + 10E4(十六进制)
所以我们的打补丁需要动态去获取程序加载的dll(模块)基址和需要修改的地址减去基址(也就是地址的后四位)
这里是06650000 和10E4
知道了原理我们来实际写出补丁,这里用易语言
首先要取到进程的进程id也就是进程标识符
可以通过进程名取ID
获取到进程ID之后
再获取进程加载的模块(前面有说DLL也可以称为模块)
这里是参数二来接受返回的模块信息
这里是获取到的模块是程序加载的所有模块还要找到指定模块也就是DLL名字
这里DLL的名字是Message.dll
那么我们继续编写补丁
**** Hidden Message ***** 谢谢楼主分享,学习学习
谢谢楼主分享,学习学习 学习一下大佬的教程 感谢楼主分享 谢谢楼主分享,学习学习 学习下感谢大神分享@@ 学习学习{:5_116:} 感谢楼主分享 学习了谢谢