|
当前,大多数主流插件(包括按钮向导)可以自动执行某些操作和其他插件。所有人都通过HOOK进入游戏窗口,并使用不同的
例如,对于网络而言,HOOK类型通常是通过HOOK消息完成的,将DLL放入我们的游戏程序中,然后通过
GetProcAddress获取DLL中函数的地址和实际函数地址,然后使用writeProcessMemory将我们的函数地址更改为他
我们的API地址。
然后,当我们执行游戏时,他们将在收到消息时触发钩子,等待它们建立邪恶的陷阱,然后执行我们的
程序。那么,如何防止这种插件呢?
WINDOWS的钩子具有一个特征,它是钩子链,因为对于相同的过程,即使是相同类型的钩子,也可以同时存在多个,这就是说
对于同一游戏,也可以打开两个具有相同功能的插件。那么传奇外挂 原理,如何确定钩子的顺序呢?所谓的后来者先服务,
WINDOWS的方法是首先执行某个进程的最后一个钩子。而且令人振奋的消息是,您可以控制钩子中的下一个
是否执行了钩子。
此函数为CallNextHookEx,也就是说,如果此函数未在钩子中执行,则钩子链将在此处中断,然后
我们的想法很简单。当游戏运行时,启动一个进程,不时地钩住我们的主程序,然后在钩子中插入否,
执行CallNextHookEx,以便避免执行其他人的钩子。
对于不同类型的钩子,我们需要采用不同类型的方法,因为无论外部钩子做什么,它们仅用于两个目的传奇外挂 原理,一个是修复
更改数据,另一种是过滤数据。核心思想是在我们自己的游戏中注册两个钩子,一个总是在钩子链的底部,另一个
一个始终位于挂钩链的顶部。比较两个钩子收到的消息后,您将知道中间是否还有其他钩子。一旦找到另一个钩子
不用考虑,它必须是一个插件,至少它还使用了按钮向导,标题,杀死文件,可以做任何您想做的事。
当然,插件并不是那么脆弱。据说有些人使用原始套接字来拦截任何网络消息。这与钩子无关。这是一个较低的级别。
有些。
在这里,我们必须首先对敌人进行分类。对于最低级别的插件,该方法相对简单得多。插件最常用的方法是自己写一个
Wsock3 2. dll与游戏放置在同一目录中,以替换系统的wsock3 2. dll。这种愚蠢的方法有很多解决方案
,将wsock3 2. dll的加载时间更改为运行时加载,然后指定路径,就不会有问题。使其更简单
运行游戏时,检查当前目录中是否存在wsock3 2. dll。如果是这样,它必须是一个外部挂钩。
比最高级别高一点的插件将希望使用挂钩直接挂钩。通用方法是先通过GetProcAddress获取SOCKET API
地址,然后通过WriteProcessMemory方法修改条目地址,并将其更改为jmp自己的函数地址。这种方法实际上非常谦虚
劣等,即所谓的无毒而不是丈夫,我们可以通过修改通用的GetProcAddress代码来防止其他人拦截SOCKET,以便我们可以直接连接
防火墙已经能够突破。
这里的技术难题是我们无法使用类似于WriteProcessMemory的方法来写入内存,因为我们不知道哪个进程是插件
,因此我们需要修改WINDOWS代码段。从理论上讲这是不可能的。不幸的是,WINDOWS自己留下了后门。
在kernel.dll UINT AllocCsToDsAlias(UINT)中,通过将API代码段的选择器传递给他,它可以返回可写状态
数据段的选择器,然后将新的选择器和API的入口地址加在一起,以获得指向可以编写的代码段的指针。
中国许多单词检索软件和全屏翻译软件都使用此原理。具体示例如下:
例如,kernel.dll中的GetProcAddress API,我们应该按照以下步骤为他制作一个通用钩子:typedef
(责任编辑:admin)
|
||||||||
★★★★★★★ | ★★★★★★★ | ★★★★ | ★★★★ | ★★★★★★★★★★★★★★★★- ★★ | ★★★★★★ | ★★★★★★★★ |