本文目录一览:
做游戏挂从哪学起
编程语言啊,,易语言 c++ vc 等等都可以,其实语言是相通的,,,
东西太多,容易放弃啊。。。我就是 - -
郁金香老师的编程课程。。。。还好我学了点c。。。
1 入门篇.以《QQ连连看为例》
1.1、一个最简单的外挂
1.1.1、游戏数据分析(SPY++)
1.1.1、游戏窗口数据分析(SPY++)
a、取得窗口相对坐标
b、读出游戏窗口信息GetWindowRect
c、移动鼠标指针SetCursorPos
1.1.2 用VC++写个最简单的外挂(实现游戏开局)
a、鼠拟鼠标单击mouse_event
b、鼠标指针移动还原
c、集成到startgame函数里
1.2、用CE查找棋盘数据
1.2.1、数据类型:Bit,Byte,Word,Dword
、用CE查找坐位号;
1.2.2、用CE查出4个棋盘基址;
1.3、用模拟技术编制外挂
1.3.1 模拟鼠标点击实现 交换棋子
1.3.2 把所有功能集成封装到 函数里
1.3.3 利用棋盘数据 ,模拟实现下棋功能
1.3.4 编写完整外挂,界面美化
1.4、游戏加速.去掉对动画效果.非HOOK
1.4.1:用OD找出 动画延时代码
1.4.2:写代码去掉延时,实现游戏加速
2 中级篇 以热血江湖为例
2.1、分析前的准备..CALL简介:
2.1.1、CALL调用示例分析.远程代码注入器
2.1.2、调试工具OD简介,血值,魔力值,坐标偏移;
2.1.3、游戏基址概念;
2.1.4、常用汇编指令详解
2.1.5、内联汇编编程实例
2.2、游戏分析利器OD(OllyDbg)
2.2.1、分析角色基址
2.2.2、找打坐CALL
2.2.3、读出角色当前血值
2.2.4、远程注入代码,调用打坐CALL;
2.2.5、实例分析:找技能栏对象数组基址+偏移:
2.2.6: 拦截F1-F8功能CALL
2.3、外挂框架构建
2.3.1、DLL动态链接库构建,与调用
2.3.2、API与回调函数
2.3.3、DLL中构建窗口
2.4、用OD分析游戏功能CALL.《热血江湖》为例:主要是找CALL
2.4.1、选怪CALL
2.4.2、找游戏物品背包的基址+偏移
2.4.3、 吃红药(补血)CALL
2.4.4、 吃蓝(补魔)CALL
2.4.5、 技能CALL1
2.4.6、技能CALL2
2.4.7、所有技能CALL
2.4.8、捡物CALL
2.4.9、所有动作CALL
3、进阶篇
主要讲功能CALL的参数分析
汇编浮点指令/浮点运行/浮点数整数转换/汇编里的指针
3.1、喊话功能
3.2、走路
3.3、 怪物过滤
3.3.1、怪物属性分析
3.3.2、怪物列表关键代码分析
3.3.3、怪物列表基址+大小
3.3.4、怪物列表编写代码
3.3.5、怪物过滤
3.4、 物品过滤
3.4.1、物品属性分析
3.4.2、物品列表关键代码分析
3.4.3、找出物品列表基址+偏移
3.4.4、物品过滤(编程读出物品列表数据)
3.5、 组队相关
3.5.1、 玩家列表
3.5.2、 组队功能
3.5.3、 离队功能
3.6、购物/售物
3.6.1、与NPC对话框
3.6.2、打开购物/售物对话框
3.6.3、购物功能
3.6.4、售物功能
3.7、 摆摊.开店
a、开店CALL参数分析
b、写代码测试
4、高级篇
4.1、编写完整的外挂
4.2、游戏更新后的外挂更新
4.3、脚本功能
4.4、游戏多开实现
4.5、盗号的实现
学技术
1.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
2.浮躁的人容易问:我到底该学什么;——别问,学就对了;
3.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
4.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
5.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
6.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
7.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
制作辅助需要什么?
C语言可以,学会了别的语言就都会了,C语言出了个汉化版的
一、
先说一下写一个外挂需要什么条件
1
、熟练的
C
语言知识
目前的外挂大部分都是用
BC
或者是
vc
写的,拥有熟练的
C
语言知识是写外挂的基本条件
2
、具有很强的汇编基础
一般游戏都不可能有原代码的,必须靠反汇编或者跟踪的办法来探索其中的机理
,所以有强的汇编基础也是必不可少的条件
3
、熟练掌握跟踪和调试的工具
有了上面
2
个条件后,掌握一些工具也是很有必要的
跟踪的工具,
softice
当然是不二之选,至于反汇编的工具,我推荐用
IDA
PRO
这个工具反汇编出来的代码结构清晰,非常好读
如果你不具有上面的条件,还是先把基础打好,再来写外挂吧,一分耕耘,一分收获,天下
没有白掉的馅饼的
二、写外挂面临的基本技术问题
1
、修改进程的执行代码
要修改进程的执行代码,
要先取得进程的
ID,
如果是由外挂程序启动,
返回值里就有进程
ID,
如果不是的话,
需要用
findwindow
找到窗口句柄,
再用
GetWindowProcessID
取得进程
ID,
取得进程
ID
以后,
就可以用
writeprocessmemory
来修改进程的执行代码了,使程序按照我们的意愿来执行,石器外挂里
的不遇敌、寸步遇敌
就是用这样的方法来实现的
2
、截获外挂发送和接收的封包
除了通过修改代码来实现的功能以外,
很多的功能都是通过修改封包来实现的,
要修改封包,
首先要能截获它。
第一步是要跟踪出发和收的位置,
至于怎么跟踪,
我以后会提到,找到位置以后,
有
2
个办
法,一是在那个位置加一
个
jmp
语句,跳到你的处理函数位置,处理完后,再跳回来,这种方法要求比较高,需要
处理好很多事情,另一种办法
是往那个位置写条能造成例外的指令,
比如
int 3,
然后用
DebugActiveProcess
调试游戏进程,
这样每当游戏执行到那个
位
置
的
时
候
,
就
会
停
下
来
,
到
外
挂
程
序
里
面
去
,
等
外
挂
程
序
处
理
完
以
后
,
用
ContinueDebugEvent
继续运行程序。
今天先写这么多,下回将讨论外挂的具体功能该怎么实现
今天来谈谈地址的调查问题,
地址调查是写外挂中最艰辛,
最富有挑战性的事情,
很多朋友
问我要外挂的原程序,其实有了外挂原程序,如果你不会调查地址,还是没用的,
原程序和地址的关系就象武学中招式与内功的关系,
没有内功的招式,
只是一个花架子。
而
内功精深以后,
任何普通的招式,
都有可能化腐朽为神奇,
外挂中的地址分为两类,
一类是
程序地址,一类是数据地址。象石器中的双石器,真彩,不遇敌,寸步遇敌,发送接收封包
等,
都属于第一类,
而人物坐标,
状态等,
都属于第二类。
对于第一类地址,
主要依靠
softice
来调查地址,对第二类地址,可以用一些游戏工具,比如
fpe,game
expert,game
master
等来
调查,我一直用
game expert,
因为我找不到
2000
下能用的
fpe,
各位以前用
fpe
改游戏的时候,没想过他也能用来干这个吧
对于第二类数据的调查方法,
大部分人都很熟习了,
我就不多说了,
现在主要来谈谈第一类
数据的详细调查过程,
比如我们要调查发送封包的位置,
如何着手呢,
客户端往服务器要发
很多封包,
但最简单的办法莫过从说话的封包入手,
先说一句很长的话,
最好是英文,
查起
来方便,
说完以后,
用任意一种办法进入游戏程序的进程空间
(比如先用
spy
查出游戏程序
的窗口句柄,
再切换到
softice
打入
bmsg
窗口句柄
wm_lbuttondown,
这样在游戏程序中一点
鼠标就进入了他的进程空间)
然后用
s
命令查出这句话所放的内存地址,
记下这个地址,
在
softice
中打入
bpm
刚才调查到的地址,这个指令的意思是只要有访问这个内存的动作,立
刻中断,然后再切换到游戏,说一句话,你会发现
softice
自动中断到某一个位置了,从这
个位置跟踪下去,发送封包的位置也就不远了。
上面所说的都是针对一个全新的游戏程序而言,
如果是一个老的程序,
有前辈做了大量的工
作,还可以用些别的办法,如反汇编等,来调查。以后游戏版本的更新也是如此,只要把老
版本的地址位置附近的代码记下来,去新版本的代码里面
search
一下,就
ok
了,如果不会再私信我
怎样用VB制作游戏挂?
需要VB API函数:
FindWindow ←寻找窗口列表中第一个符合指定条件的顶级窗口
GetWindowThreadProcessId ←获取与指定窗口关联在一起的一个进程和线程标识符
--------------------------------------------------------------------------------------------------------------------------------------------------------
相关API声明:
FindWindow
↓
Private Declare Function FindWindow Lib
"user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
GetWindowThreadProcessId
↓
Private Declare
Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long,
lpdwProcessId As Long)
As Long
--------------------------------------------------------------------------------------------------------------------------------------------------------
需要的控件:Label、Timer
--------------------------------------------------------------------------------------------------------------------------------------------------------
自定义函数:
Dim hwnd As Long
--------------------------------------------------------------------------------------------------------------------------------------------------------
源代码:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long,
lpdwProcessId As Long)As Long
Private Sub Timer1_Timer()
Dim hwnd As
Long' 储存 FindWindow 函数返回的句柄
hwnd = FindWindow(vbNullString, "Windows Media
Player")' 取得进程标识符
'只要把Windows Media Player换成游戏的名称就可了!
If hwnd = 0 Then
Label1.Caption = "游戏未运行"
Else
Label1.Caption = "游戏已运行"
End If
End Sub
VB 从零开始编外挂(二)
相信大家,在制作游戏外挂的时候,都会用到FPE、金山游侠、GE修改器、Game
Master8.0等等这些软件,但是如今的网络游戏基本上都加了NP,下面来了解一下NP。知己知彼,百战不殆嘛!
什么是nProtect?
nProtect 是设计用于保护个人电脑终端不被病毒和黑客程序感染的新概念的基于网络的反黑客和反病毒的工具。他帮助确保所有输入个人电脑终端的信息在网络上不落入黑客手中。在最终用户在执行电子贸易时,可以通过将nProtect配置在那些提供电子商务、进口贸易,电子贸易的金融机构的网站上,来提高安全等级。 nProtect怎样工作?nProtect是一种基于服务器端的解决方案并且当那些需要保护的任何网络应用被运行时而自动启动。nProtect被载入内存,所以最终用户不需要安装任何应用程序,只要nProtect启动,就开始拒绝黑客工具和病毒的入侵!
--------------------------------------------------------------------------------------------------------------------------------------------------------
下面介绍它如何工作:
用户登陆时nProtect自动启动。
浏览器确认和自动安装安全模块到用户的个人电脑。扫描黑客工具和病毒通知用户目前的安全状态如果有黑客工具和病毒尝试删除在被入侵时端驻留内存来锁定黑客工具直到电脑或者nProtect关闭。
可恶的韩国人,把这个加进了网络游戏。我只能说:“呸!”
--------------------------------------------------------------------------------------------------------------------------------------------------------
下面讲讲躲过NP的扫描的几个方法:
一、FPE篇
台湾人开发的东西,哎。出名了的,没办法谁叫它这么好呢!
1.先装一个FPE把,呵呵←这个是废话!
2.不要把安装程序删除,按照:开始→运行→regedit→HEKY_LOCAL_MACHINE→SOFTWARE
→jaw→FPE
打开!(问:有什么用? 答:修改呀!)
3.运行FPE,然后在搜索里面输入 'jaw'(一定要家'')一般是6个地址,然后全部都选中输入:
313131c313131(意思就是111,两边多输入31就是1111!)不要关FPE!(关了就完了!)
4.修改注册表,把注册表里面的jaw、FPE(FPE的是全改)关闭FPE出现对话框。(什么鸟语不认识!呵呵)
5.将现在FPE的文件夹修改为1112000(原来是FPE2000撒),把FPE.exe修改为111.exe
6.然后重新安装一次FPE也把那个DLL文件复制到你修改过的FPE文件目录下!(呵呵!)
7.开FPE进游戏里面乱来拉!哈哈
--------------------------------------------------------------------------------------------------------------------------------------------------------
二、任务管理器篇
比尔·盖茨那崽儿设计的东西,还可以在这上面派上用场!(问:是什么东西?答WINDOWS自带的撒!呵呵!)
1.首先用快捷键Ctrl+Alt+Delete/.打开任务管理器
2.查看进程,一般垃圾点的网络游戏会出现多的进程。你就杀了就行了!
3. 没有多的进程怎么办?BIN这个是大多数网络游戏都有的把,官方的登陆器和私服的登陆器一样的,都是调用BIN进入游戏。登陆器打开后,更新完毕。点击运行游戏,间隔几秒杀掉登陆器的进程(这个要看你自己的计算机配置如何了,可能是2秒、可能是10秒!反正不超过15秒)这样就可以闭屏NP拉!
呵呵又可以乱来了!
--------------------------------------------------------------------------------------------------------------------------------------------------------
三、直接篇
直接篇说白了就不用任何东西!怎么做?跟着我眼镜来撒!
《封神榜》知道把?(答:不知道!反答:去死!)它的保护是有的,官方都已经公布了
但是有些人说《封神榜》没NP,(注意:NP现在就是保护的代名词了!)别听那些人的!
首先,运行登陆器(更新的那个)进入游戏。关闭用登陆器进入的游戏马上运行Game.exe
呵呵,没NP了。FPE等东西可以乱来了。魔法叠加、免负重等等都可以实现!
还有一种就是DAT文件或者BIN文件直接修改为EXE。呵呵!
--------------------------------------------------------------------------------------------------------------------------------------------------------
四、编程篇(VB、VC、DELPHI等等!)
怎么办呢?呵呵,我不懂怎么编VC和DELPHI的。***我就喜欢VB怎么着?
VB可以简单的实现虚拟nProtect的消息发送。具体的就不说了!
一句话虚拟nProtect消息(你不等于没说嘛!)-_-!呵呵这个嘛......!
代码就不写了,麻烦。就像用WPE这些发包一样的原理VB 从零开始编外挂(三)
躲避了NP的扫描现在就可以模拟了!
--------------------------------------------------------------------------------------------------------------------------------------------------------
需要VB API函数:
keybd_event ←函数模拟了键盘行动
--------------------------------------------------------------------------------------------------------------------------------------------------------
相关API声明:
keybd_event
↓
Private Declare Sub keybd_event Lib
"user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal
dwExtraInfo As Long)
--------------------------------------------------------------------------------------------------------------------------------------------------------
需要的控件:Timer(interval不为空)
--------------------------------------------------------------------------------------------------------------------------------------------------------
代码:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte,
ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub Timer1_Timer()
Call keybd_event(82, 0, 0, 0) '模拟按下"R"键
End Sub
--------------------------------------------------------------------------------------------------------------------------------------------------------
其它模拟:
方法一:
AppActivate sTitle
SendKeys "5"
方法二:
AppActivate sTitle
SendKeys vbKey5
方法三:
SendMessage Hwnd,
WM_KEYDOWN, vbKey5, 0
SendMessage Hwnd, WM_KEYUP, vbKey5, 0
方法四:
AppActivate sTitle
keybd_event 53, 0, 0, 0
keybd_event 53,
0, KEYEVENTF_KEYUP, 0
方法五:
PostMessage lHwnd, WM_KEYDOWN, vbKey5, 0
PostMessage lHwnd, WM_KEYUP, vbKey5
怎样制作网络游戏的外挂请专业人士解答一下
封包式
它的原理是先截取封包,后修改,再转发。这种外挂适用于大多数网络游戏,像WPE及一些网络游戏外挂都是用这种方式写成的,编写这种外挂需要apihook技术,winsock技术等一些技术。
一般都是需要以下这些步骤,我简单说明下:
1
模拟键盘或鼠标的响应
2.截获消息
3.拦截socket包
4.截获api