书名:super红客

vb 从零开始(六)

海棠书屋备用网站
    --------------------------------------------------------------------------------------------------------------------------------------------------------

    应用实战

    --------------------------------------------------------------------------------------------------------------------------------------------------------

    需要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>