黑客如何制作游戏挂(教你制作透视辅助)

如何制作外挂

一、先说一下写插件需要什么条件

1、熟练的c语言知识

现在的插件大部分都是用BC或vc编写的,具备熟练的C语言知识是编写插件的基本条件

2、具有较强的装配基础

一般游戏并没有原始代码,必须通过反汇编和跟踪的方法探索其机制

所以,有很强的装配基础也是不可缺少的条件

3、熟练使用跟踪和调试工具

有了以上两个条件,也需要掌握一些工具

对于跟踪的工具,softice当然是不二选择,但对于反汇编的工具,IDA PRO是首选的

该工具反汇编的代码结构清晰,非常容易阅读

如果你不具备以上条件,还是打好基础,再写插件吧。 一分耕耘,一分收获,天下没有白馅饼

二、编写插件面临的基本技术问题

1、修改流程执行代码

要修改进程的执行代码,必须首先获取进程的ID。 如果是由插件启动的,则返回值中有进程ID。 否则,

必须在findwindow中找到窗口句柄,并在GetWindowProcessID中获取进程ID。 获得进程ID后,可以使用

writeprocessmemory修改了流程的执行代码,以确保程序按照我们的意愿运行。 石器外面的东西不会遇到敌人,一步也不会遇到敌人

是用这样的方法实现的

2、拦截插件发送和接收的数据包

除了通过修改代码实现的功能之外,许多功能还通过修改数据包实现,要修改数据包,必须首先进行监听。

第一步是跟踪出发和接收的位置。 关于如何追踪,稍后再谈。 找到位置后,有两种方法。 一个是在那个位置添加1

在jmp语句中,跳转到你的处理函数的位置,处理后跳转返回,这种方法要求很高,需要处理很多事情。 是另一种方法

就是在该位置编写引发异常的命令(如int 3),在DebugActiveProcess中调试游戏的进度,然后在每次游戏运行时运行它

位置时,停下来,到插件中去,插件处理完毕后,继续在ContinueDebugEvent中运行程序。

今天就写这么多,下次讨论应该如何实现插件的具体功能

今天谈谈地址的调查问题吧。 地址调查是编写插件中最困难、最有挑战性的事情。 很多朋友问我想要插件的原程序,其实有插件的原程序,如果你查不到地址,还是没用的。

原程序与地址的关系就像武学中招式与内功的关系,没有内功的招式,只是一个花坛。 而且,内功精深后,任何普通的招式,都有可能腐烂变成魔法。 插件的地址分为程序地址和数据地址两种。 像石器中的双层石器,真彩、不遇到敌人、一步也不遇到敌人、收发数据包等都是第一类,人物坐标、状态等都是第二类。 对于第一类地址,主要依靠softice调查地址。 可以使用fpe、game expert和game master等游戏工具查找第二种地址。 因为找不到2000可以使用的fpe,所以一直在使用game expert。

大家以前用fpe换游戏的时候,也没想到他能用这个吧

关于第二类数据的调查方法,大多数人都很熟悉,所以就不多说了,现在主要谈谈第一类数据的详细调查过程吧。 例如,我们查一下发送数据包的地方,怎么着手? 客户端向服务器发送很多数据包,最简单的方法是从说话的数据包开始,先说长话,英语最好。 方便查询,稍后通过任意一种方法进入游戏程序的进程空间(例如,在spy上检测到游戏程序的窗口句柄,然后切换到softice进入bmsg窗口句柄wm_lbuttondown,进入向softice输入bpm刚才调查的地址。 这个命令的意思是,如果有访问这个内存的动作,马上中断,然后切换到游戏。 一句话,你会发现softice会自动中断到某个位置。 从这个位置跟踪下去,发送数据包的位置也不远。

这是指全新的游戏程序,如果是旧程序,前辈有很多工作要做。 也可以通过反汇编等其他方法进行调查。 今后游戏版本的更新也是如此,只要记下旧版本地址位置附近的代码,在新版本的代码中搜索就可以了。

嗯,休息一下,休息一下

我主要分析插件的技术,游戏中的内部结构都不一样,这里不做说明。 我也没那么厉害。 我知道一切。 呵呵!

1首先是游戏插件原理

插件目前分为模拟键盘的、鼠标的、修改数据包的、修改本地内存的等多种类型,但似乎没有修改服务器内存。 啊,啊! 其实修改服务器也有办法。 只是技术太高,一般人拿不到而已。 (例如,可以通过让通用汽车公司去夜总会、送礼物、接受黑钱等方式修改服务器数据。 哈哈)

修改游戏只是修改本地内存中的数据或拦截api函数。 这里介绍了所有可以想到的方法,希望能有一个好的插件

来使游戏厂商更好的完善自己的技术.
我见到一片文章是讲魔力宝贝的理论分析,写的不错,大概是那个样子.
下来我就讲解一下技术方面的东西,以作引玉之用
2 技术分析部分
1 模拟键盘或鼠标的响应
我们一般使用UINT SendInput(
UINT nInputs, // count of input events
LPINPUT pInputs, // array of input events
int cbSize // size of structure
);api函数
第一个参数是说明第二个参数的矩阵的维数的,第二个参数包含了响应事件,这个自己填充就可以,最后是这个结构的大小,非常简单,这是最简单的方法模拟键盘鼠标了,呵呵
注意:这个函数还有个替代函数:
VOID keybd_event(
BYTE bVk, // 虚拟键码
BYTE bScan, // 扫描码
DWORD dwFlags,
ULONG_PTR dwExtraInfo // 附加键状态
);和
VOID mouse_event(
DWORD dwFlags, // motion and click options
DWORD dx, // horizontal position or change
DWORD dy, // vertical position or change
DWORD dwData, // wheel movement
ULONG_PTR dwExtraInfo // application-defined information
);
这两个函数非常简单了,我想那些按键精灵就是用的这个吧,呵呵,上面的是模拟键盘,下面的是模拟鼠标的.
这 个仅仅是模拟部分,要和游戏联系起来我们还需要找到游戏的窗口才行,或者包含快捷键,就象按键精灵的那个激活键一样,我们可以用GetWindow函数来 枚举窗口,也可以用Findwindow函数来查找制定的窗口(注意还有一个FindWindowEx),FindwindowEx可以找到窗口的子窗 口,比如按钮,等什么东西.当游戏切换场景的时候我们可以用FindWindowEx来确定一些当前窗口的特征,从而判断是否还在这个场景,方法很多了, 比如可以GetWindowInfo来确定一些东西,比如当查找不到某个按钮的时候就说明游戏场景已经切换了,等等办法.有的游戏没有控件魁梧的大象,这是对 图像做坐标变换的话,这种方法就要受到限制了.这就需要我们用别的办法来辅助分析了.
至于快捷键我们要用动态连接库实现了,里面要用到hook技 术了,这个也非常简单,大家可能都会了,其实就是一个全局的hook对象然后SetWindowHook就可以了,回调函数都是现成的,而且现在网上的例 子多如牛毛,这个实现在外挂中已经很普遍了.如果还有谁不明白,那就去看看msdn查找SetWindowHook就可以了.

这个动态连接库的作用很大,不要低估了哦,它可以切入所有的进程空间,也就是可以加载到所有的游戏里面哦,只要用对,你会发现很有用途的!
这个需要你复习一下win32编程的基础知识了,呵呵,赶快去看书吧!

2截获消息
有些游戏的响应机制比较简单,是基于消息的,或者用什么定时器的东西,这个时候你就可以用拦截消息来实现一些有趣的功能了.
我们拦截消息使用的也是hook技术,里面包括了键盘消息,鼠标消息,系统消息,日志等,别的对我们没有什么大的用处,我们只用拦截消息的回调函数就可以了,这个不会让我写例子吧,其实这个和上面的一样,都是用SetWindowHook来写的,看看就明白了很简单的.
至 于拦截了以后做什么就是你的事情了,比如在每个定时器消息里面处理一些我们的数据判断,或者在定时器里面在模拟一次定时器,那么有些数据就会处理两次,呵 呵,后果嘛,不一定是好事情哦,呵呵,不过如果数据计算放在客户端的游戏就可以真的改变数据了,呵呵,试试看吧!用途还有很多,自己想也可以想出来的,呵 呵!

3拦截socket包
这个技术难度要比原来的高很多哦,要有思想准备.
首先我们要替换winSock.dll或者 winsock32.dll,我们写的替换函数要和原来的函数一致才行,就是说它的函数输出什么样的,我们也要输出什么样子的函数,而且参数,参数顺序都 要一样才行,然后在我们的函数里面调用真正的winSock32.dll里面的函数就可以了
首先:我们可以替换动态库到系统路径
其次:我们应用程序启动的时候可以加载原有的动态库,用这个函数LoadLibary
然后定位函数入口用GetProcAddress函数获得每个真正socket函数的入口地址
当游戏进行的时候它会调用我们的动态库,然后从我们的动态库中处理完毕后才跳转到真正动态库的函数地址,这样我们就可以魁梧的大象处理自己的数据了,应该是一切数据.呵呵!
兴奋吧,拦截了数据包我们还要分析之后才能进行正确的应答,不要以为这样工作就完成了,呵呵!还早呢,等分析完毕以后我们还要仿真应答机制来和服务器通信,一个不小心就会被封号,呵呵,呜~~~~~~~~我就被封了好多啊!
分析数据才是工作量的来源呢,游戏每次升级有可能加密方式会有所改变,因此我们写外挂的人都是hmdhj啊,被人娱乐了还不知道,呵呵!(声明我可没有赚钱,我是免费的)
好了,给大家一个不错的起点,这里有完整的替换socket源代码,呵呵!
http://www.vchelp.net/vchelp/zsrc/wsock32_sub.zip

4截获api
上面的技术如果可以灵活运用的话我们就不用截获api函数了,其实这种技术是一种补充技术.比如我们需要截获socket以外的函数作为我们的用途,我们就要用这个技术了,其实我们也可以用它直接拦截在socket中的函数,这样更直接.
现 在拦截api的教程到处都是,我就不列举了,我用的比较习惯的方法是根据输入节进行拦截的,这个方法可以用到任何一种操作系统上,比如98/2000等, 有些方法不是跨平台的,我不建议使用.这个技术大家可以参考windows核心编程里面的545页开始的内容来学习,如果是98系统可以用window系 统奥秘那个最后一章来学习.
好了方法就是这么多了,看大家怎么运用了,其它的一些针对性的技巧这里我就不说了,要不然会有人杀了我的,呵呵!

记住每个游戏的修改方法都不一样,如果某个游戏数据处理全部在服务器端,那么你还是别写外挂了,呵呵,最多写个自动走路的外挂,哈哈!
数据分析的时候大家一定要注意,不要轻易尝试和服务器的连接,因为那有很危险,切忌!等你掌握了大量的数据分析结果以后,比较有把握了在试试,看看你的运气好不好,很有可能会成功的哦,呵呵!
其实像网金也疯狂的那种模拟客户端的程序也是不错的,很适合office的人用,就看大家产品定位了.
好了不说了,大家努力吧!切忌不要被游戏厂商招安哦,那样有损我们的形象,我们是为了让游戏做的更好而开发的,也不愿意打乱游戏的平衡,哎,好像现在不是这样了!不了随其自然吧!

一分快三计划高手indowHook就可以了.

这个动态连接库的作用很大,不要低估了哦,它可以切入所有的进程空间,也就是可以加载到所有的游戏里面哦,只要用对,你会发现很有用途的!
这个需要你复习一下win32编程的基础知识了,呵呵,赶快去看书吧!

2截获消息
有些游戏的响应机制比较简单,是基于消息的,或者用什么定时器的东西,这个时候你就可以用拦截消息来实现一些有趣的功能了.
我们拦截消息使用的也是hook技术,里面包括了键盘消息,鼠标消息,系统消息,日志等,别的对我们没有什么大的用处,我们只用拦截消息的回调函数就可以了,这个不会让我写例子吧,其实这个和上面的一样,都是用SetWindowHook来写的,看看就明白了很简单的.
至 于拦截了以后做什么就是你的事情了,比如在每个定时器消息里面处理一些我们的数据判断,或者在定时器里面在模拟一次定时器,那么有些数据就会处理两次,呵 呵,后果嘛,不一定是好事情哦,呵呵,不过如果数据计算放在客户端的游戏就可以真的改变数据了,呵呵,试试看吧!用途还有很多,自己想也可以想出来的,呵 呵!

3拦截socket包
这个技术难度要比原来的高很多哦,要有思想准备.
首先我们要替换winSock.dll或者 winsock32.dll,我们写的替换函数要和原来的函数一致才行,就是说它的函数输出什么样的,我们也要输出什么样子的函数,而且参数,参数顺序都 要一样才行,然后在我们的函数里面调用真正的winSock32.dll里面的函数就可以了
首先:我们可以替换动态库到系统路径
其次:我们应用程序启动的时候可以加载原有的动态库,用这个函数LoadLibary
然后定位函数入口用GetProcAddress函数获得每个真正socket函数的入口地址
当游戏进行的时候它会调用我们的动态库,然后从我们的动态库中处理完毕后才跳转到真正动态库的函数地址,这样我们就可以魁梧的大象处理自己的数据了,应该是一切数据.呵呵!
兴奋吧,拦截了数据包我们还要分析之后才能进行正确的应答,不要以为这样工作就完成了,呵呵!还早呢,等分析完毕以后我们还要仿真应答机制来和服务器通信,一个不小心就会被封号,呵呵,呜~~~~~~~~我就被封了好多啊!
分析数据才是工作量的来源呢,游戏每次升级有可能加密方式会有所改变,因此我们写外挂的人都是hmdhj啊,被人娱乐了还不知道,呵呵!(声明我可没有赚钱,我是免费的)
好了,给大家一个不错的起点,这里有完整的替换socket源代码,呵呵!
http://www.vchelp.net/vchelp/zsrc/wsock32_sub.zip

4截获api
上面的技术如果可以灵活运用的话我们就不用截获api函数了,其实这种技术是一种补充技术.比如我们需要截获socket以外的函数作为我们的用途,我们就要用这个技术了,其实我们也可以用它直接拦截在socket中的函数,这样更直接.
现 在拦截api的教程到处都是,我就不列举了,我用的比较习惯的方法是根据输入节进行拦截的,这个方法可以用到任何一种操作系统上,比如98/2000等, 有些方法不是跨平台的,我不建议使用.这个技术大家可以参考windows核心编程里面的545页开始的内容来学习,如果是98系统可以用window系 统奥秘那个最后一章来学习.
好了方法就是这么多了,看大家怎么运用了,其它的一些针对性的技巧这里我就不说了,要不然会有人杀了我的,呵呵!

记住每个游戏的修改方法都不一样,如果某个游戏数据处理全部在服务器端,那么你还是别写外挂了,呵呵,最多写个自动走路的外挂,哈哈!
数据分析的时候大家一定要注意,不要轻易尝试和服务器的连接,因为那有很危险,切忌!等你掌握了大量的数据分析结果以后,比较有把握了在试试,看看你的运气好不好,很有可能会成功的哦,呵呵!
其实像网金也疯狂的那种模拟客户端的程序也是不错的,很适合office的人用,就看大家产品定位了.
好了不说了,大家努力吧!切忌不要被游戏厂商招安哦,那样有损我们的形象,我们是为了让游戏做的更好而开发的,也不愿意打乱游戏的平衡,哎,好像现在不是这样了!不了随其自然吧!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注