
- 您所在的用户组无法下载或查看附件
下面是纯按键精灵 源码,别错过了
直接用按键精灵制作,搜索和定位速度也很快的,当然也可以用内存API函数+搜索算法,我在其他的帖子也会发布的。 Tezhengma_Str = Trim(Replace(Form1.InputBox1.Text," ",""))//去掉空格,去掉两边的空格,按键特征码规定不能有空格的
TracePrint "特征码:"&Tezhengma_Str
Len_Tezhengma =int(Len(Tezhengma_Str)/2)
TracePrint "特征码长度:"& Len_Tezhengma
End_Addr=Form1.InputBox5.Text
Begin_Addr= Lib.字节集操作.十六进制转十进制(Form1.InputBox4.Text)
End_Addr = Lib.字节集操作.十六进制转十进制(Form1.InputBox5.Text)
TracePrint "开始的地址:"& Begin_Addr //开始的地址
TracePrint "结束的地址:"& End_Addr//结束地址 范围
Str_Array = split(Form1.inputbox7.text, " ")//这个是获取程序名
Pro_Hwnd=Str_Array(0)
Val_Address = Plugin.Memory.FindBinary(Pro_Hwnd, Tezhengma_Str, Len_Tezhengma, Begin_Addr, End_Addr, 2)//第三个参数是数值的长度
TracePrint "搜索到的最初地址:"& Hex(Val_Address)
If Val_Address = 0 Then
Form1.InputBox3.Text = "没找搜索到"//判断是否找到
EndScript
End If
Select Case 1
Case Form1.OptionBox1.Value //=============================选择搜索地址
Call 搜索地址
Val_Address_Add = Hex(Val_Address + int(Form1.InputBox6.Text))//加上偏移数值
If Val_Address <> 0 then
Form1.InputBox3.Text = Val_Address_Add
Else
Form1.InputBox3.Text = "获取失败"
End If
Case Form1.OptionBox2.Value //=============================选择搜索偏移
Call 搜索地址
Form1.InputBox3.Text = Hex(Val_Address + int(Form1.InputBox6.Text))//加上偏移数值
Val_Address= Val_Adress + int(Form1.InputBox6.Text)//加上偏移数值,这个是最后的数值
Pianyi_Val = Plugin.Memory.Read32Bit(Pro_Hwnd, Val_Adress)
TracePrint Hex(Pianyi_Val)
If Pianyi_Val <>0 then
Form1.InputBox3.text = Hex(Pianyi_Val)//打印出结果
Else
Form1.InputBox3.Text = "获取失败"
End If
Case Form1.OptionBox3.Value //=============================选择搜索call
Call 搜索地址
Form1.InputBox3.Text = Hex(Val_Address + int(Form1.InputBox6.Text))//加上偏移数值
Pianyi_Val = Plugin.Memory.Read32Bit(Pro_Hwnd, Val_Address + int(Form1.InputBox6.Text)+1)//找到call 的位置,+1的意思是除去call指令E8
TracePrint Pianyi_Val
call_value = int(Val_Address) + int(Pianyi_Val)
If call_value <> 0 then
Form1.InputBox3.Text = Hex(call_value)
Else
Form1.InputBox3.Text = "获取失败"
End If
Case Form1.OptionBox4.Value //
Call 搜索地址
Val_Address_Add = int(Val_Address) + int(Form1.InputBox6.Text)//加上偏移数值
TracePrint "基地址的地址" & Hex(Val_Address_Add)//注意这个值可能是负数
If Val_Address <> 0 then
Pianyi_Val = Plugin.Memory.Read32Bit(Pro_Hwnd, Val_Address_Add ) //
Form1.InputBox3.Text = Hex(Pianyi_Val)
Else
Form1.InputBox3.Text = "获取失败"
End If
End Select
以下是内存特征码定位插件源码:base_addr = leirenyuan.GetModuleBaseAddr(hwnd,模块名)
范围 = Hex(base_addr) & "-" & Hex(base_addr + 最大范围)
TracePrint 范围
result = leirenyuan.FindData(hwnd,范围,特征码)
result = split(result,"|")
count = ubound(result)+1
traceprint "找到"&count&"个地址"
TracePrint result(0)
ret1 = Lib.算法.十六进制转十进制(result(0))
ret2 = 偏移
定位地址值 = int(ret1) + int(ret2)
TracePrint "call的的地址是:" & Hex(定位地址值)
value = leirenyuan.ReadInt(hwnd, Hex(定位地址值), 0)
TracePrint "最终定位得到的数值:" & Hex(value)
特征码定位地址=Hex(value)
需要提高内存写辅助技术的朋友请加Q群526897608。本群只为进阶交流学习,谢谢!