http://post.baidu.com/f?kz=261991447

1VB 武林加血 代码为什么不能执行? 检测通过
 
VB 武林加血 代码为什么不能执行? 检测通过
这些代码是在网上看的.但是不知道为什么不能执行加血的那块.
血的量已经显示出来了。

代码如下::
Private Sub Command1_Click()
If Command1.Caption = "开始" Then GoTo TimerAdd_Timer '按下标签为“开始”的按钮,激活TimerAdd并改变标签为“停止”
Timeradd.Enabled = True
Command1.Caption = "停止"
ElseIf Command1.Caption = "停止" Then '刚好和上面相反
Timeradd.Enabled = False
Command1.Caption = "开始"
End If
End Sub

Private Sub Form_Load()
hwd = FindWindow("QElementClient Window", "Element Client")
If hwd = 0 Then
MsgBox "未启动游戏", vbOKOnly, "提示"
Unload Form1
End If
GetWindowThreadProcessId hwd, pid '获取进程标识符
'将进程标识符做为参数,返回目标进程PID的句柄,得到此句柄后
'即可对目标进行读写操,PROCESS_ALL_ACCESS表示完全控制,权限最大
hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid)
If hProcess = 0 Then
MsgBox "不能打开进程", vbOKOnly, "提示"
Unload Form1
End If
CloseHandle hProcess
End Sub


Private Sub Timerlife_Timer()  '显示人物信息时钟
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
ReadProcessMemory hProcess, ByVal &H12F82C, base, 4, 0&
ReadProcessMemory hProcess, ByVal base + &H24, base, 4, 0& '得到为人物基地址,方便以后使用
ReadProcessMemory hProcess, ByVal base + &H25C, hp, 4, 0& '得到生命值
CloseHandle hProcess
End If
Label1.Caption = "生命值:" & hp   '显示生命值
End Sub

Private Sub TimerAdd_Timer() '加血判断时钟
If Val(Text1.Text) > hp Then '比较当前血量是否比预定值低,是则按下F1健
SendMessage hwd, &H100, &H70, 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, &H70, 0& '松开F1键,&H101代表松开,&H70代表F1
Sleep Val(Text2.Text) '延迟text2中的数值,用val()取数值
End If
End Sub
  
 作者: 123.4.114.*  2007-9-13 10:31   回复此发言  
 
2回复:VB 武林加血 代码为什么不能执行? 检测通过
 
ByVal base + &H25C,
这些都是怎么得到的啊
有别的软件吗
  
 作者: …烟花飘飘…   2007-9-13 11:39   回复此发言  
 
3回复:VB 武林加血 代码为什么不能执行? 检测通过
 
用ce得到的.
  
 作者: 123.4.114.*  2007-9-13 11:52   回复此发言  
 
4回复:VB 武林加血 代码为什么不能执行? 检测通过
 
ce?
什么意思,全称是什么呀
  
 作者: …烟花飘飘…   2007-9-13 12:09   回复此发言  
 
5回复:VB 武林加血 代码为什么不能执行? 检测通过
 
SendMessage 一般都不管用

直接call

或者用全局消息
  
 作者: gcyun   2007-9-13 12:36   回复此发言  
 
6回复:VB 武林加血 代码为什么不能执行? 检测通过
 
直接call?
什么钩子么?
怎么用啊?
能不能帮我写个详细的?
那个软件的全称是:Cheat Engine
  
 作者: 123.4.114.*  2007-9-13 13:44   回复此发言  
 
7回复:VB 武林加血 代码为什么不能执行? 检测通过
 
我只用1个键位.F1吧.
下边的代码中是不是添加到模块中?
我又需要怎么使用他们.我只需要使用多少代码就可以了?


'hook

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long

Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long

Private Const HC_ACTION = 0
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const WM_SYSKEYDOWN = &H104
Private Const WM_SYSKEYUP = &H105
Private Const LLKHF_ALTDOWN = &H20

Public Const WH_KEYBOARD_LL = 13

Private Type KBDLLHOOKSTRUCT '这个是低级键盘钩子的索引值

 vkCode As Long '虚拟按键码(1--254)
 scanCode As Long '硬件按键扫描码
 flags As Long '键按下:128 抬起:0
 time As Long '消息时间戳间
 dwExtraInfo As Long '额外信息

End Type

Public Enum VirtualKey

 VK_LBUTTON = &H1
 VK_RBUTTON = &H2
 VK_CTRLBREAK = &H3
 VK_MBUTTON = &H4
 VK_BACKSPACE = &H8
 VK_TAB = &H9
 VK_ENTER = &HD
 VK_SHIFT = &H10
 VK_CONTROL = &H11
 VK_ALT = &H12
 VK_PAUSE = &H13
 VK_CAPSLOCK = &H14
 VK_ESCAPE = &H1B
 VK_SPACE = &H20
 VK_PAGEUP = &H21
 VK_PAGEDOWN = &H22
 VK_END = &H23
 VK_HOME = &H24
 VK_LEFT = &H25
 VK_UP = &H26
 VK_RIGHT = &H27
 VK_DOWN = &H28
 VK_PRINTSCREEN = &H2C
 VK_INSERT = &H2D
 VK_DELETE = &H2E
 VK_0 = &H30
 VK_1 = &H31
 VK_2 = &H32
 VK_3 = &H33
 VK_4 = &H34
 VK_5 = &H35
 VK_6 = &H36
 VK_7 = &H37
 VK_8 = &H38
 VK_9 = &H39
 VK_A = &H41
 VK_B = &H42
 VK_C = &H43
 VK_D = &H44
 VK_E = &H45
 VK_F = &H46
 VK_G = &H47
 VK_H = &H48
 VK_I = &H49
 VK_J = &H4A
 VK_K = &H4B
 VK_L = &H4C
 VK_M = &H4D
 vk_n = &H4E
 VK_O = &H4F
 VK_P = &H50
 VK_Q = &H51
 VK_R = &H52
 VK_S = &H53
 VK_T = &H54
 VK_U = &H55
 VK_V = &H56
 VK_W = &H57
 VK_X = &H58
 VK_Y = &H59
 VK_Z = &H5A
 VK_LWINDOWS = &H5B
 VK_RWINDOWS = &H5C
 VK_APPSPOPUP = &H5D
 VK_NUMPAD_0 = &H60
 VK_NUMPAD_1 = &H61
 VK_NUMPAD_2 = &H62
 VK_NUMPAD_3 = &H63
 VK_NUMPAD_4 = &H64
 VK_NUMPAD_5 = &H65
 VK_NUMPAD_6 = &H66
 VK_NUMPAD_7 = &H67
 VK_NUMPAD_8 = &H68
 VK_NUMPAD_9 = &H69
 VK_NUMPAD_MULTIPLY = &H6A
 VK_NUMPAD_ADD = &H6B
 VK_NUMPAD_PLUS = &H6B
 VK_NUMPAD_SUBTRACT = &H6D
 VK_NUMPAD_MINUS = &H6D
 VK_NUMPAD_MOINS = &H6D
 VK_NUMPAD_DECIMAL = &H6E
 VK_NUMPAD_POINT = &H6E
 VK_NUMPAD_DIVIDE = &H6F
 VK_F1 = &H70
 VK_F2 = &H71
 VK_F3 = &H72
 VK_F4 = &H73
 VK_F5 = &H74
 VK_F6 = &H75
 VK_F7 = &H76
 VK_F8 = &H77
 VK_F9 = &H78
 VK_F10 = &H79
 VK_F11 = &H7A
 VK_F12 = &H7B
 VK_NUMLOCK = &H90
 VK_SCROLL = &H91
 VK_LSHIFT = &HA0
 VK_RSHIFT = &HA1
 VK_LCONTROL = &HA2
 VK_RCONTROL = &HA3
 VK_LALT = &HA4
 VK_RALT = &HA5
 VK_POINTVIRGULE = &HBA
  
 作者: 123.4.114.*  2007-9-13 13:50   回复此发言  
 
8回复:VB 武林加血 代码为什么不能执行? 检测通过
 
 VK_ADD = &HBB
 VK_PLUS = &HBB
 VK_EQUAL = &HBB
 VK_VIRGULE = &HBC
 VK_SUBTRACT = &HBD
 VK_MINUS = &HBD
 VK_MOINS = &HBD
 VK_UNDERLINE = &HBD
 VK_POINT = &HBE
 VK_SLASH = &HBF
 VK_TILDE = &HC0
 VK_LEFTBRACKET = &HDB
 VK_BACKSLASH = &HDC
 VK_RIGHTBRACKET = &HDD
 VK_QUOTE = &HDE
 VK_APOSTROPHE = &HDE

End Enum

Dim KBDLLHOOKSTRUCT As KBDLLHOOKSTRUCT

Public hhkLowLevelKybd As Long '安装的钩子句柄

Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

 Dim fEatKeystroke As Boolean

 If (nCode = HC_ACTION) Then 'nCode值为HC_ACTION时表示WParam和LParam参数包涵了按键消息

 '按下键会产生WM_KEYDOWN或WM_SYSKEYDOWN消息,然后会被放置在当前键盘聚焦的窗口所在线程的消息队列中。同样释放按键也会产生消息,这个消息将会是WM_KEYUP或者WM_SYSKEYUP。
 '系统中系统按键与非系统按键是截然不同的,系统按键产生系统按键消息:WM_SYSKEYDOWN、WM_SYSKEYUP,而非系统按键产生非系统按键消息:WM_KEYDOWN与WM_KEYUP。

 If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then

 'CopyMemory的历史非常特殊,它的真名并非叫CopyMemory。看看CopyMemory的声明,它是定义在Kernel32.dll中的RtlMoveMemory这个API,
 '32位C函数库中的memcpy就是这个API的封装,如MSDN文档中所言,它的功能是将从Source指针所指处开始的长度为Length的内存拷贝到Destination所指的内存处。
 '它不会管我们的程序有没有读写该内存所应有的权限,一但它想读写被系统所保护的内存时,

 'VOID CopyMemory(
 ' PVOID Destination, // pointer to address of copy destination
 ' CONST VOID *Source, // pointer to address of block to copy
 ' DWORD Length // size, in bytes, of block to copy
 ');

 'Parameters
 'Destination
 'Pointer to the starting address of the copied block's destination.
 'Source
 'Pointer to the starting address of the block of memory to copy.
 'Length
 'Specifies the size, in bytes, of the block of memory to copy.

 CopyMemory KBDLLHOOKSTRUCT, ByVal lParam, Len(KBDLLHOOKSTRUCT)

 fEatKeystroke = _
 (KBDLLHOOKSTRUCT.vkCode = VK_LWINDOWS) _
 Or (KBDLLHOOKSTRUCT.vkCode = VK_RWINDOWS) Or (KBDLLHOOKSTRUCT.vkCode = VK_APPSPOPUP)
 'TAB+ALT
 'Esc+ALT
 'Alt+Any(Alt+F4)
 'Esc+Ctrl
 '左右Win 和徽标键

 End If

 End If

 If fEatKeystroke Then

 LowLevelKeyboardProc = 1 '吃掉消息

 Else

 LowLevelKeyboardProc = CallNextHookEx(hhkLowLevelKybd, nCode, wParam, ByVal lParam) '如果消息要被处理,则传0或安装的钩子句柄

 End If

End Function
  
 作者: 123.4.114.*  2007-9-13 13:50   回复此发言  
 
9回复:VB 武林加血 代码为什么不能执行? 检测通过
 
怎么 又审核
  
 作者: gcyun   2007-9-13 13:54   回复此发言  
 
10回复:VB 武林加血 代码为什么不能执行? 检测通过
 
Public Sub ASMKEY(ASMID As String)
Dim DataBase As Long
Dim asm As New clsASM
 With asm
 .Pushad
DataBase = du_mem(&H9077CC)
DataBase = du_mem(DataBase + &H28)
If IsNumeric(ASMID) Then
 DataBase = du_mem(DataBase + &H8D8)
Else
 DataBase = du_mem(DataBase + &H8CC)
End If
DataBase = du_mem(DataBase + &HC)
DataBase = du_mem(DataBase + 4 * CLng(Right$(ASMID, 1) - 1))
If DataBase = 0 Then Exit Sub
 .Mov_EAX_DWORD_Ptr DataBase
 .Mov_ECX_EAX
 .Mov_EDX_DWORD_Ptr_ECX
 .Mov_EAX_DWORD_Ptr_EDX_Add 8 ' EAX, [EDX+8]
 .Call_EAX
 .Popad
 .ret
 End With
asm.Run_ASM pid
End Sub
  
 作者: gcyun   2007-9-13 13:54   回复此发言  
 
11回复:VB 武林加血 代码为什么不能执行? 检测通过
 
简单的说就是 
用od找到 快捷键的内部函数调用地址
附带参数传过去 上面是朱仙的
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值