当前位置:编程学习 > VB >>

用vb做一个cs修改器

作者:suphack

和同学一起玩CS,被他菜了N盘。心有不甘,想想自己是学这个的不如做一个修改器来满足一下自己的虚荣心。
    要做工具,菜鸟首选vb,打开vb,新建一个标准EXE工程,添加一个标签,一个文本框和一个按钮,清除文本框的text属性,将标签和按钮的caption属性分别设为“生命”和“确定”(如图1)

    这个修改器中需要用到5个API函数:
1. FindWindow(ClassName, WindowTitle) - FindWindow 返回符合指定的类
名( ClassName )和窗口名( WindowTitle )的窗口句柄。对我们来说,可以让
ClassName 为空( Null ),只给出游戏的 WindowTitle。
2. GetWindowThreadProcessId(WindowHandle, ProcessId) - 在这里我们把
FindWindow 函数中得到的句柄作为参数,来获得进程标识符(ProcessId )。
3. OpenProcess(DesiredAccess, Inherit, ProcessId) - 这个函数将返回一个我们目标进程的句柄,可以用来对目标进行读写操作。DesiredAccess 参 数的值决定了句柄对进程的存取权利,对我们来说,要使用 PROCESS_ALL_ACCESS (完全存取权限)。Inherit 应该总是 False。 ProcessId 是从 GetWindowThreadProcessId 函数中取得的。
4. WriteProcessMemory(ProcessHandle, Address, value, Sizeofvalue,
BytesWritten)把指定的值value写入由Address指定的目标地址。
5. CloseHandle(ProcessHandle) 每一个打开的句柄必须呼叫这个函数来关闭 。
    现在我们来把这些函数声明一下,。新建一个标准模块,把函数声明添加进去,限于篇幅,声明我就打包放在光盘里了(如图2,图3)


    双击按钮组件,输入如下代码:
Dim a As Long ,b As Long,c As Long
定义三个函数a ,b ,c
a = FindWindow(vbNullString, "counter-strike")
首先取得目标窗口的句柄,并赋值给a
If (a = 0) Then
MsgBox "游戏未运行!"
Exit Sub
End If
判断FindWindow返回的值是否为0
GetWindowThreadProcessId a, b
取得进程标识符
c = OpenProcess(PROCESS_ALL_ACCESS, False, b)
使用进程标识符取得进程句柄,并赋值给c
If (c = 0) Then
MsgBox "无法打开进程!"
Exit Sub
End If
判断OpenProcess返回的值是否为0
WriteProcessMemory c, &H19C08B0, text1.Text, 4, 0&
msgbox"修改成功"
把内存地址H19C08B0中的数据改为text1.text内的数据,H19C08B0是我用金山游侠搜出来的CS中生命的内存地址,这不是本文的重点,我就不介绍了
CloseHandle hProcess
关闭进程句柄
    这样,修改器就基本完成了,现在我们来给它加上一个好看的皮肤,在工具栏上点右键选择“部件”,在弹出的窗口内选择“浏览”,把皮肤控件添加进去(如图4,图5)

,然后把它添加到窗体上(如图6)

,找到它的Skinpicture属性,设置一个好看点的皮肤(如图7)
,生成EXE文件就完成了,使用一下,呵呵,999的生命,效果不错吧。(如图8)

大家多支持一下!

 

补充:软件开发 , Vb ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,