相关文章:
找个外挂制作编辑高手
学制作外挂就那么难嘛.....
大家不要应用外挂,由于DNF外挂是腾讯制造的
大家不要使用外挂,因为DNF外挂是腾讯制作的
猴岛手刺制作
重要目标是为了本人学习方便 别拿砖砸我哦
首先让我们来看一下网络游戏的工作原理:
网络游戏是这样工作的:
1.由服务器记载保留所有用户材料,所有信息的修改都是服务器实现的
2.服务器接收客户机的恳求发送必要的信息给客户机,以使玩家畸形游戏
3.服务器接受客户机的信息反馈,并依据反馈信息,对游戏帐号作相应修改
从以上简单的介绍,咱们可以看出,网络游戏可以以为是这样工作的:
由客户机电脑操作服务器器电脑,对游戏帐号信息进行修改!
要把持本地的电脑是很容易的,因而,要显示所有已经从服务器得到的信息是完全可能的,这就可以做到 以下功能:
1、游戏没有黑夜,因为舆图在本地,全部显示是完全可以做到的!
2.自动加血是不问题的,因为血的多少也已经发到本地电脑,完整可以用外挂检测到,并在必要时加血,加血本 身只是一个鼠标动作,
red wing beckman,完全可以交给外挂去做。相似的,自动加魔法,自动加气,自动回城、自动打怪、自动采矿卖钱然后再自动回去 采、自动练级等等都可以做到!
3.卖东西的进程很经典:你卖东西时,实际就是告知服务器电脑,你已经将一个东西卖了,实在过程是 :你向服务器发送了一个详细物品的封包,如果这个封包正确,服务器就向你的游戏帐号加一定数目的钱,然后再 反馈给你一些信息,如果封包不准确,天然就卖不到钱,因此,我们可以利用外挂一直向服务器发送封包,只要正 确,那么服务器就认为我们再卖东西,即便我们什么都没有卖,服务器也不断给我们钱,这就是所谓的刷钱。如果 封包没有加密,那么这个功能长短常容易实现的,如果封包加密,其实同样可以做到,只是要解密而已,略微庞杂 些罢了!类似的,就可以实现买东西用假钱(不用钱)。攻打、防备增添,原理都是类似的!
以上的讲授,大家应当清楚,实在外挂是每个游戏都可能涌现的,只要有人想做,那么就没有做不出外挂 的游戏!除非这个游戏不能玩!!
--------------------------------------------------------------------
WPE介绍
WPE(Winsock Packet Editor)
它的中文名称是:网络封包编纂器
在大多数的变成工具中winsock已经封装成一个控件,成为网络变成的控件,是无比便利的,应用这个 控件,变成工具就可以编写外挂工具,例如使用VB就可以异常轻易地编写出很精彩的外挂。(顺便打个广告:本 教材也有使用VB编写外挂教材,注册后就可以学习,利用VB编写外挂比WPE编写的外挂多出良多长处,例如 ,可以编写注册功能,使你做的外挂让别人使用时必需注册才干使用,WPE做出来的外挂是任何人得到了外挂就 可以使用,不能实现限度使用,并且VB对键盘鼠标的节制,对体系的把持都很杰出,VB是vis ial basic 的意思,就是可视化根据basic语言的编程工具,Basic自身就是基础的的意思,是很简单的语言,然而 功效却是十分强盛,
nike air max 90,倡议大家学习)
现在,WPE有两个版本,分辨是:WPE1.3和WPE pro0.7 前者是使用与win98操作平台,后者实用与win200和winXP操作系统。都有中文版。
----------------------------------------------------------------
VB 篇
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被载入内存,所以终极用户不需要安装任何应用程序,只要nPro tect启动,就开始谢绝黑客工具和病毒的入侵!
----------------------------------------------------------------------------------------------
下面先容它如何工作:
用户登陆时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修改为1 11.exe
6.然后从新装置一次FPE也把那个DLL文件复制到你修改过的FPE文件目录下!(呵呵 !)
7.开FPE进游戏里面乱来拉!哈哈
----------------------------------------------------------------------------------------------
二、义务治理器篇
比尔·盖茨那崽儿设计的东西,还可以在这上面派上用处!(问:是什么东西?答WINDOWS自带的撒! 呵呵!)
1.首先用快捷键Ctrl+Alt+Delete/.打开任务管理器
2.查看进程,普通垃圾点的网络游戏会呈现多的进程。你就杀了就行了!
3.没有多的进程怎么办?BIN这个是大多数网络游戏都有的把,官方的登陆器和私服的登陆器一样的,都 是调用BIN进入游戏。登陆器打开后,更新结束。点击运行游戏,距离几秒杀掉登陆器的进程(这个要看你自己 的盘算机配置如何了,可能是2秒、可能是10秒!反正不超过15秒)这样就可以闭屏NP拉!
呵呵又可以乱来了!
----------------------------------------------------------------------------------------------
三、直接篇
直接篇说白了就不必任何东西,
nylonsandgarterbelts!怎么做?随着我眼镜来撒!
《封神榜》知道把?(答:不晓得!反答:去逝世!)它的维护是有的,官方都已经颁布了
但是有些人说《封神榜》没NP,(留神:NP现在就是掩护的代名词了!)别听那些人的!
首先,运行登陆器(更新的那个)进入游戏。关闭用登陆器进入的游戏立刻运行Game.ex e
呵呵,没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,
paul smith t shirt, WM_KEYDOWN, vbKey5, 0&
PostMessage lHwnd, WM_KEYUP, vbKey5, 0&
----------------------------------------------------------------------------------------------
VB 从零开始编外挂(四)
----------------------------------------------------------------------------------------------
增添快捷键
须要VB API函数:
GetAsyncKeyState ←断定函数调用时指定虚构键的状态
----------------------------------------------------------------------------------------------
相关API声明:
GetAsyncKeyState
↓
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer
Private Function MyHotKey(vKeyCode) As Boolean
----------------------------------------------------------------------------------------------
需要的控件:Timer(interval不为空)
----------------------------------------------------------------------------------------------
代码:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer
Private Function MyHotKey(vKeyCode) As Boolean
MyHotKey = (GetAsyncKeyState(vKeyCode) < 0)
End Function
'然后在轮回中或Timer的Timer事件中检测:
Private Sub Timer1_Timer()
If MyHotKey(vbKeyA) And vbKeyControl Then 'ctrl+A
End '关闭
End If
'其中vbkeyA是键盘〃A〃的常数,其余键可按F1查得。
End Sub
----------------------------------------------------------------------------------------------
其它办法:
比方按下"ctrl+A"就退出!
'可以设置Form的KeyPreview属性为True,而后在Form_KeyDown事件中增加 代码:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = Asc("A") And Shift = vbCtrlMask Then unload me '如果ctrl+A键被按下就退出
End Sub
----------------------------------------------------------------------------------------------
VB 从零开端编外挂(五)
--------------------------------------------------------------------------------------------------------------------------------------------------------
前边谈了模拟键盘,下面说说模拟鼠标。
----------------------------------------------------------------------------------------------
需要VB API函数:
mouse_event ←模拟一次鼠标事件
----------------------------------------------------------------------------------------------
相关API声明:
mouse_event
↓
Private Declare Sub mouse_event Lib "user32" ( ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long )
----------------------------------------------------------------------------------------------
定义变量:
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
----------------------------------------------------------------------------------------------
MOUSEEVENTF_LEFTDOWN'鼠标左键按下
MOUSEEVENTF_LEFTUP'鼠标松开
MOUSEEVENTF_RIGHTDOWN '鼠标右键按下
MOUSEEVENTF_RIGHTUP'鼠标右键松开
----------------------------------------------------------------------------------------------
代码:
Private Declare Sub mouse_event Lib "user32" ( ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long )
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
'这里是 鼠标左键按下 和松开两个事件的组合即一次单击
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
'模拟鼠标右键单击事件
mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
'两次持续的鼠标左键单击事件 形成一次鼠标双击事件
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
----------------------------------------------------------------------------------------------
VB 从零开始编外挂(六)
----------------------------------------------------------------------------------------------
利用实战
----------------------------------------------------------------------------------------------
需要VB API函数:
FindWindow
GetWindowThreadProcessId
OpenProcess
ReadProcessMemory
CloseHandle
----------------------------------------------------------------------------------------------
相关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
OpenProcess
↓
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
ReadProcessMemory
↓
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
CloseHandle
↓
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
GetCurrentProcess
↓
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
----------------------------------------------------------------------------------------------
需要的控件:Label、Timer(interval不为空)、Text
----------------------------------------------------------------------------------------------
定义函数:
Dim SetHp As Integer ' 定义设定的体力值
Dim SetMp As Integer ' 定义设定的魔法值
Dim NowHp As Long ' 定义目前的体力值
Dim NowMp As Long ' 定义目前的魔法值
Dim MaxHp As Long ' 定义角色的最高体力值
Dim MaxMp As Long ' 定义角色的最高魔法值
Dim DiZhi As Long '定义内存地址函数
Dim hwnd As Long ' 储存 FindWindow 函数返回的句柄
----------------------------------------------------------------------------------------------
代码:
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 Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Dim SetHp As Integer ' 定义设定的体力值
Dim SetMp As Integer ' 定义设定的魔法值
Dim NowHp As Long ' 定义目前的体力值
Dim NowMp As Long ' 定义目前的魔法值
Dim MaxHp As Long ' 定义角色的最高体力值
Dim MaxMp As Long ' 定义角色的最高魔法值
Dim DiZhi As Long '定义内存地址函数
Private Function ncnr(lpADDress As Long) As Integer
' 声明一些需要的变量
Dim hwnd As Long ' 储存 FindWindow 函数返回的句柄
Dim pid As Long ' 储存进程标识符( Process Id )
Dim pHandle As Long ' 贮存过程句柄
hwnd = FindWindow(vbNullString, "封神榜·网络版")
' 取得进程标识符
GetWindowThreadProcessId hwnd, pid
' 使用进程标识符获得进程句柄
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
' 在内存地址中读取数据
ReadProcessMemory pHandle, lpADDress, ByVal VarPtr(ncnr), 4, 0&
' 关闭进程句柄
CloseHandle hProcess
End Function
Const STANDARD_RIGHTS_REQUIRED = &HF0000
Const SYNCHRONIZE = &H100000
Const SPECIFIC_RIGHTS_ALL = &HFFFF
Const STANDARD_RIGHTS_ALL = &H1F0000
Const PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF
Const PROCESS_VM_OPERATION = &H8&
Const PROCESS_VM_READ = &H10&
Const PROCESS_VM_WRITE = &H20&
Private Sub Form_Load()
' 体力:07F68F3 这里调换你所搜索到的地址 魔法:07F6860 同前
DiZhi = &H07F68F3
Timer1.Enabled = True
Timer2.Enabled = False
Timer3.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "封神榜·网络版")
If hwnd = 0 Then
Label12.Caption = "游戏未加载"
Timer1.Enabled = True
Timer2.Enabled = False
Timer3.Enabled = False
Exit Sub
End If
Label12.Caption = "游戏已加载"
SetHp = Text1.Text ' 获取设定的体力值
SetMp = Text2.Text ' 获取设定的魔法值
NowHp = ncnr(DiZhi) ' 获取当前的体力值
NowMp = ncnr(DiZhi + 12) ' 获取当前的魔法值
MaxHp = ncnr(DiZhi + 4) ' 获取角色的最高膂力值
MaxMp = ncnr(DiZhi + 16) ' 获取角色的最高魔法值
Label3.Caption = Str(NowHp) + "/" + Str(MaxHp) ' 显示角色体力值状态
Label4.Caption = Str(NowMp) + "/" + Str(MaxMp) ' 显示角色魔法值状况
If Check1.Value Then
Timer2.Enabled = True
Else
Timer2.Enabled = False
End If
If Check2.Value Then
Timer3.Enabled = True
Else
Timer3.Enabled = False
End If
End Sub
Private Sub Timer2_Timer()
' 体力值小于设定值按下数字键1
If (NowHp) < SetHp Then
SendKeys "1"
End If
End Sub
Private Sub Timer3_Timer()
' 魔法值小于设定值按下数字键2
If (NowMp) < SetMp Then
SendKeys "2"
End If
End Sub
本文来自猴岛论坛 :http://bbs.houdao.com/r2635740_u9494535/