--------------------------------------------------------------------------------------------------------------------------------------------------------
应用实战
--------------------------------------------------------------------------------------------------------------------------------------------------------
需要vbapi函数:
findindo
getindothreadprocessid
openprocess
readprocessmemory
closehandle
--------------------------------------------------------------------------------------------------------------------------------------------------------
相关api声明:
findindo
privatedeclarefunfindindolib“user32“alias“findindoa“(byvallpclassring,byvallpind)long
getindothreadprocessid
privatedeclarefuindothreadprocessidlib“user32“(byvalhndlong,lpdprocessidlong)
long
openprocess
privatedeclarefunopenprocesslib“kernel32“(byvalddesiredaccesslong,byvalbihandlelong,byvaldprocessidlong)long
readprocessmemory
privatedeclarefunreadprocessmemorylib“kernel32“(byvalhprocesslong,byvallpbaseaddressany,byvallpbufferany,byvalnsizelong,lpnumberofbytesrittenlong)long
closehandle
privatedeclarefunclosehandlelib“kernel32“(byvalhobjeg)long
getcurrentprocess
privatedeclarefucurrentprocesslib“kernel32“long
--------------------------------------------------------------------------------------------------------------------------------------------------------
需要的控件:label、timer(interval不为空)、text
--------------------------------------------------------------------------------------------------------------------------------------------------------
定义函数:
dimsethpinteger定义设定的体力值
dimsetmpinteger定义设定的魔法值
dimnohplong定义目前的体力值
dimnomplong定义目前的魔法值
dimmaxhplong定义角色的最高体力值
dimmaxmplong定义角色的最高魔法值
dimdizhilong定义内存地址函数
dimhndlong储存findindo函数返回的句柄
--------------------------------------------------------------------------------------------------------------------------------------------------------
代码:
privatedeclarefunfindindolib“user32“alias“findindoa“(byvallpclassring,byvallpind)long
privatedeclarefuindothreadprocessidlib“user32“(byvalhndlong,lpdprocessidlong)
long
privatedeclarefunopenprocesslib“kernel32“(byvalddesiredaccesslong,byvalbihandlelong,byvaldprocessidlong)long
privatedeclarefunreadprocessmemorylib“kernel32“(byvalhprocesslong,byvallpbaseaddressany,byvallpbufferany,byvalnsizelong,lpnumberofbytesrittenlong)long
privatedeclarefunclosehandlelib“kernel32“(byvalhobjeg)long
privatedeclarefucurrentprocesslib“kernel32“long
dimsethpinteger定义设定的体力值
dimsetmpinteger定义设定的魔法值
dimnohplong定义目前的体力值
dimnomplong定义目前的魔法值
dimmaxhplong定义角色的最高体力值
dimmaxmplong定义角色的最高魔法值
dimdizhilong定义内存地址函数
privatefunnr(lpaddresslong)integer
声明一些需要的变量
dimhndlong储存findindo函数返回的句柄
dimpidlong储存进程标识符(process)
dimphandlelong储存进程句柄
hnd=findindo(vbnullstring,“封神榜·网络版“)
取得进程标识符
getindothreadprocessidhnd,pid
使用进程标识符取得进程句柄
phandle=openprocess(process_all_access,false,pid)
在内存地址中读取数据
readprocessmemoryphandle,lpaddress,byvalvarptr(nr),4,0&
关闭进程句柄
closehandlehprocess
endfun
ststandard_rights_required=&hf0000
stsynize=&h100000
stspecific_rights_all=&hffff
ststandard_rights_all=&h1f0000
stprocess_all_access=standard_rights_requiredsynize&hfff
stprocess_vm_operation=&h8&
stprocess_vm_read=&h10&
stprocess_vm_rite=&h20&
privatesubform_load
体力:07f68f3这里替换你所搜索到的地址魔法:07f6860同前
dizhi=07f68f=tru=fals=false
endsub
privatesubtimer1_timer
dimhndlong
hnd=findindo(vbnullstring,“封神榜·网络版“)
hnd=0the=“游戏未加载“
=tru=fals=false
exitsub
endi=“游戏已加载“
sethp=获取设定的体力值
setmp=获取设定的魔法值
nohp=nr(dizhi)获取当前的体力值
nomp=nr(dizhi+12)获取当前的魔法值
maxhp=nr(dizhi+4)获取角色的最高体力值
maxmp=nr(dizhi+16)获取角色的最高魔法值
=str(nohp)+“/“+str(maxhp)显示角色体力值状态
=str(nomp)+“/“+str(maxmp)显示角色魔法值状态
the=true
els=false
erue
els=false
end
endsub
privatesubtimer2_timer
体力值小于设定值按下数字键1
(nohp)<sethpthen
sendkeys“1“
end
endsub
privatesubtimer3_timer
魔法值小于设定值按下数字键2
(nomp)<setmpthen
sendkeys“2“
end
endsub
--------------------------------------------------------------------------------------------------------------------------------------------------------
</p>