写了一个自动搜索特征码来定位地址的DLL,附带VB调用源代码

不好意思,之前编写的时候,由于疏忽,竟然缩小了搜索的范围,所以现在重新上传了,需要的朋友可以重新下载一下,这次我做过充分的测试了,精确度和CE一样下面是XP下蜘蛛纸牌的范例,只是作一个功能演示,并没有其它作用Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As LongPrivate Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As LongPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPrivate Declare Function ScanTZ Lib "mem.dll" (ByVal hProcess As Long, ByVal s As String) As LongPrivate Const PROCESS_ALL_ACCESS = &H1F0FFFDim hwnd As Long, pid As Long, hProc As LongSub Main()hwnd = FindWindow(vbNullString, "蜘蛛")GetWindowThreadProcessId hwnd, pidhProc = OpenProcess(PROCESS_ALL_ACCESS, False, pid)MsgBox Hex(ScanTZ(hProc, "1C210300")) '查找特征码CloseHandle (hProc)End Sub得到了这个地址就很方便了,游戏内存是动态分配的,但是相对于一些地址的位移差是不变的比如第1次搜索特征码A1C4FC8B008B401C地址定位到400000,血的地址是410000,那么她们的位移差就是10000,第2次搜索特征码A1C4FC8B008B401C地址定位到500000,那么血的地址就是500000+10000就是了,举个VB例子dim i as long,u as long 'u表示血的地址i=ScanTZ(hProc, "A1C4FC8B008B401C") u=i+&H10000 '这样就得到准确血的地址了当然你要早到正确的特征码(不要问我怎么找特征码,这个去查论坛的相关贴)'关于应用,在举个例子'比如征途的体力什么的是按照人物的名称的Unicode来定位的'比如人物名称"广海游戏"他的UNicode是B9E3BAA3D3CECFB7dim i as long,u as long 'u表示血的地址,i表示内存人物名称地址i=ScanTZ(hProc, "B9E3BAA3D3CECFB7") '假设血的地址和人物名称相差&H10000u=i+&H10000 '这样就得到准确血的地址了mem.dll和VB调用源代码在附件里,dll很小的,支持其它语言调用的

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页