首页 > 科幻灵异 > 网游之百科全书 > VisualBasic做外挂示例 转

VisualBasic做外挂示例 转(2/2)

目录
好书推荐: 春华赋免费阅读 重生之征战三国免费阅读 我的异能能穿越免费阅读 鲁班传人在美国免费阅读 折尽芳华又一春免费阅读 明末之奴隶的咆哮免费阅读 三国之第四帝国免费阅读 冒险都市免费阅读 星际黑客之智战风云免费阅读 校园藏娇免费阅读

现在使用得到的窗口句柄来取得进程标识符ProcessId。注意pid是作为参数传递给函数的,而不是被赋以函数返回值。

DimpidAsLong

GetWindowThreadProcessIdhwnd,pid

再利用变量pid得到计算器程序的进程句柄。再次检查函数的返回值,如果是非法数据则退出程序。

DimpHandeAsLong

pHandeOpenProcessPROCESSALLACCESS,Fase,pid

IfpHande0Then

MsgBoxCoudntgetaprocesshande!

ExitSub

EndIf

在我们的修改器中WriteProcessMemory函数是最重要的部分,而且非常容易出错。不妨让我们再仔细讨论一下它的参数。

WriteProcessMemoryByVahProcessAsLong,ByVapBaseAddressAsAny,

ByVapBufferAsAny,ByVanSizeAsLong,pNumberOfBytesWrittenAs

hProcess是目标进程的句柄,从上面的OpenProcess函数中取得的。

pBaseAddress是在计算器程序的虚拟内存中将要被修改的地址,也就是使用内存搜索程序找到的那个地址。在我的程序里是&H40B181pBuffer是将要写如上述地址的数据,可以是一个数值、数组、字符串或其他任何数据类型。

nSize是希望写入pBaseAddress的字节数。这个位置应该与你的数据类型相符。如果写入的是一个长整数ong,这里应该是4。如果写入的是一个字符串,那么这里应该是字符串的长度。

pNumberOfBytesWritten是函数执行返回后,写入目标地址的实际字节数。它能被用来确认函数实际的执行情况。

把我们的数据放到函数中,得到WriteProcessMemorypHande,&H40B181,Beans,5,0&。我把0传递到pNumberOfBytesWritten位置是因为不需要检查两次实际写入的字节数。

最后通过传递进程句柄给CoseHande函数来关闭由OpenProcess打开的句柄。

CoseHandehProcess

现在将所有的代码输入我们的编辑器中。双击按钮,显示它的代码编辑窗口。代码应该加到名为btnPasteName的Cick事件中。不必输入注释

PrivateSubbtnPasteNameCick

声明一些需要的变量

DimhwndAsLong储存FindWindow函数返回的句柄

DimpidAsLong储存进程标识符ProcessId

DimpHandeAsLong储存进程句柄

首先取得目标窗口的句柄

hwndFindWindowvbNuString,Cacuator

Ifhwnd0Then

MsgBoxWindownotfound!

ExitSub

EndIf

取得进程标识符

GetWindowThreadProcessIdhwnd,pid

使用进程标识符取得进程句柄

pHandeOpenProcessPROCESSALLACCESS,Fase,pid

IfpHande0Then

MsgBoxCoudntgetaprocesshande!

ExitSub

EndIf

在内存地址中写入名字

WriteProcessMemorypHande,&H40B181,Beans,5,0&

关闭进程句柄

CoseHandehProcess

EndSub

完毕。现在单击按钮将使计算器窗口本变为我们键如的名字。可能需要最小化计算器程序,再还原,以便程序更新显示

下面将给我们的修改器增加一个新功能。我们将检测计算器程序的窗口显示数据,并在修改器中显示。双击计时器,显示它的代码编辑窗口,然后输入以下代码:

PrivateSubReadTimerTimer

声明变量

DimhwndAsLong储存FindWindow函数返回的句柄

DimpidAsLong储存进程标识符

DimpHandeAsLong储存进程句柄

DimstrAsString20存储显示本

取得目标窗口的句柄

hwndFindWindowvbNuString,Cacuator

Ifhwnd0ThenExitSub

取得进程标识符

GetWindowThreadProcessIdhwnd,pid

取得进程句柄

pHandeOpenProcessPROCESSALLACCESS,Fase,pid

IfpHande0ThenExitSub

读取内存数据

ReadProcessMemorypHande,&H40B181,str,20,0&

在本框显示

txtDispaystr

关闭进程句柄

CoseHandehProcess

EndSub

在这里出现的新东西是ReadProcessMemory函数。从&H40B181地址中读出的数据被存入变量str中,然后显示在名为txtDispay的本框中。

本教程中所讲的是非常简单的东西,主要是想起抛砖引玉的目的。最重要的是不断学习,不断实践,了解其他的API并在修改器中使用。练习越多,就会觉得越容易。

;

目录
新书推荐: 逍遥小郎君免费阅读 大明首辅:从办科举辅导班开始免费阅读 四岁魔丸来认亲,反派爹地请稳住免费阅读 大明:朕躺平了,你们自己看着办免费阅读 重生换嫁疯太子,全家跪地悔疯了免费阅读 穿成三日后必死的废妃?我直接开摆免费阅读 成婚不圆房,睡遍你兄弟不过分吧免费阅读 穿灾年,我带三儿一女吃香喝辣!免费阅读 抢什么太子,皇帝怀里不香吗?免费阅读 剑武巅峰,从获得混沌神鼎开始免费阅读
返回顶部