|
由于游戏的二叉树构造的特殊性, 宝宝血量的偏移无法跟踪.无法使用OD进行调试.也可以说是本人技术还不够
我说了,游戏构造特殊,这个特殊的让人郁闷,有些首次得到的地址不会变动,所以可以拿其中一个作为伪基址,然后每次更新的时候只需要将这个伪基址做一个单纯的十六进制加法运算就行了.
即 伪基址+不变差值=真实地址.
人物基址是有的,每次更新在 初始化_() 下面代码处自己更新一下就可以了.
由于游戏的反调试没有什么突破口,目前这个脚本也暂时先搁浅到这里吧.发出来共享一下.
空间 镜界
//默认空间
大漠=com("dm.dmsoft")
罗子程序窗口句柄,罗子自动打怪,罗子系统毫秒1,罗子系统毫秒2,罗子怒气,罗子定时器1记次,罗子定时器2记次
罗子开始线程句柄,罗子类名窗口,x,y,基址,手动答题,内网答题,威锐答题,外挂答题,罗子自动打怪线程句柄
当前血值基址,血上限基址,当前蓝值基址,蓝上限基址, 历练值基址2,罗子答题扫描属性遍历线程句柄
宝宝血判定,珍兽血上限1,珍兽当前血1,珍兽当前血2,珍兽血上限2,珍兽当前血3,珍兽血上限3,佣兵当前血1,佣兵血上限1
佣兵当前血2,佣兵血上限2,佣兵当前血3,佣兵血上限3,佣兵当前血4,佣兵血上限4,尾巴血上限1,尾巴当前血1,尾巴当前血2,尾巴血上限2,
尾巴当前血3,尾巴当前血3
功能 罗子开始程序()
罗子程序窗口句柄=窗口.找到窗口("","LuDingJi WndClass")
罗子标题获取=窗口.得到标题(罗子程序窗口句柄)
罗子被绑定标题=字符串.连接(罗子标题获取,"(绑定中)")
窗口.设置标题(罗子程序窗口句柄,罗子被绑定标题)
窗口.设置位置(罗子程序窗口句柄,-5,0)
大漠.BindWindow(罗子程序窗口句柄,"dx2","dx2","dx",0)
辅助.等待(1000)
循环(真)
辅助.等待(30)
循环结束
返回 真
功能结束
功能 答题扫描属性遍历线程()
循环(真)
//如果(手动答题==1)
//如果结束
//如果(内网答题==1)
//如果结束
//如果(外挂答题==1)
//如果结束
//如果(内网答题==1)
//如果结束
//如果(威锐答题==1)
//如果结束
罗子窗口句柄=窗口.找到窗口("","LuDingJi WndClass")
罗子标题获取=窗口.得到标题(罗子窗口句柄)
罗子进程句柄=进程.获取进程句柄(罗子标题获取)
基址1=进程.读4byte(罗子进程句柄,基址)
/////////////////////////////////////////////////////////血量部分
人物偏移=#88
指向地址=基址1+人物偏移
人物基址=进程.读4byte(罗子进程句柄,指向地址)
////////////////////////////////////////////////////////////////
血值偏移=#1e38
指向血值地址=人物基址+血值偏移
当前血值基址=进程.读4byte(罗子进程句柄,指向血值地址)
当前血=字符串.连接("血:",当前血值基址)
血上限偏移=#1308
指向血上限地址=人物基址+血上限偏移
血上限基址=进程.读4byte(罗子进程句柄,指向血上限地址)
血上限=字符串.连接("/",血上限基址)
血值=字符串.连接(当前血,血上限)
标签.设置文本("血",血值)
////////////////////////////////////////////////////////蓝值部分
蓝值偏移=#1160
指向蓝值地址=人物基址+血值偏移
当前蓝值基址=进程.读4byte(罗子进程句柄,指向蓝值地址)
当前蓝=字符串.连接("蓝",当前蓝值基址)
蓝上限偏移=#130c
指向蓝上限地址=人物基址+蓝上限偏移
蓝上限基址=进程.读4byte(罗子进程句柄,指向蓝上限地址)
蓝上限=字符串.连接("/",蓝上限基址)
蓝值=字符串.连接(当前蓝,蓝上限)
标签.设置文本("法",蓝值)
////////////////////////////////////////////////////////////人名
人物名字偏移=#119a
指向人物名字地址=人物基址+人物名字偏移
当前人物名字基址=进程.读string(罗子进程句柄,指向人物名字地址,20)
当前人物名字=字符串.连接("人物名:",当前人物名字基址)
标签.设置文本("名",当前人物名字)
///////////////////////////////////////////////////////////历练值显示
历练值偏移1=#1F18
历练值偏移2=#1778
指向历练值地址1=人物基址+历练值偏移1
历练值基址1=进程.读4byte(罗子进程句柄,指向历练值地址1)
指向历练值地址2=历练值基址1+历练值偏移2
历练值基址2=进程.读4byte(罗子进程句柄,指向历练值地址2)
当前历练值=字符串.连接("历练值:",历练值基址2)
标签.设置文本("历练",当前历练值)
//////////////////////////////////////////////////////////
珍兽血1=宝宝血判定
珍兽当前血1=进程.读4byte(罗子进程句柄,珍兽血1)
血上限1=宝宝血判定+#1a4
珍兽血上限1=进程.读4byte(罗子进程句柄,血上限1)
珍兽血2=宝宝血判定+#968
珍兽当前血2=进程.读4byte(罗子进程句柄,珍兽血2)
血上限2=宝宝血判定+#b0c
珍兽血上限2=进程.读4byte(罗子进程句柄,血上限2)
珍兽血3=宝宝血判定+#12d0
珍兽当前血3=进程.读4byte(罗子进程句柄,珍兽血3)
血上限3=宝宝血判定+#1474
珍兽血上限3=进程.读4byte(罗子进程句柄,血上限3)
佣兵血1=宝宝血判定+#3880
佣兵当前血1=进程.读4byte(罗子进程句柄,佣兵血1)
佣血上限1=宝宝血判定+#3a84
佣兵血上限1=进程.读4byte(罗子进程句柄,佣血上限1)
佣兵血2=宝宝血判定+#4248
佣兵当前血2=进程.读4byte(罗子进程句柄,佣兵血2)
佣血上限2=宝宝血判定+#444c
佣兵血上限2=进程.读4byte(罗子进程句柄,佣血上限2)
佣兵血3=宝宝血判定+#4c10
佣兵当前血3=进程.读4byte(罗子进程句柄,佣兵血3)
佣血上限3=宝宝血判定+#444c
佣兵血上限3=进程.读4byte(罗子进程句柄,佣血上限3)
佣兵血4=宝宝血判定+#55d8
佣兵当前血4=进程.读4byte(罗子进程句柄,佣兵血4)
佣血上限4=宝宝血判定+#57dc
佣兵血上限4=进程.读4byte(罗子进程句柄,佣血上限4)
尾巴血1=宝宝血判定+#a0ac
尾巴当前血1=进程.读4byte(罗子进程句柄,尾巴血1)
尾血上限1=宝宝血判定+#a2cc
尾巴血上限1=进程.读4byte(罗子进程句柄,尾血上限1)
尾巴血2=宝宝血判定+#a944
尾巴当前血2=进程.读4byte(罗子进程句柄,尾巴血2)
尾血上限2=宝宝血判定+#aac4
尾巴血上限2=进程.读4byte(罗子进程句柄,尾血上限2)
尾巴血3=宝宝血判定+#b1dc
尾巴当前血3=进程.读4byte(罗子进程句柄,尾巴血3)
尾血上限3=宝宝血判定+#b350
尾巴血上限3=进程.读4byte(罗子进程句柄,尾血上限3)
//地址=进程.找string(罗子进程句柄,"中级肉类\n#c99cc66掉落包",#56ffffff,#63ffffff)
辅助.等待(2000)
//如果(地址>0)
// 窗口.发送按键(罗子窗口句柄,86)
// 如果结束
循环结束
返回 真
功能结束
功能 自动吃药()
返回 真
功能结束
功能 自动打怪线程()
罗子窗口句柄=窗口.找到窗口("","LuDingJi WndClass")
罗子标题获取=窗口.得到标题(罗子窗口句柄)
罗子进程句柄=进程.获取进程句柄(罗子标题获取)
是否可以攻击的目标
循环(真)
辅助.等待(30)
如果(罗子自动打怪==1)
基址1=进程.读4byte(罗子进程句柄,基址)
怪物选中状态偏移1=#9c
指向怪物选中地址1=基址1+怪物选中状态偏移1
怪物选中基址1=进程.读4byte(罗子进程句柄,指向怪物选中地址1)
怪物选中状态偏移2=#1e38
指向怪物选中地址2=怪物选中基址1+怪物选中状态偏移2
罗子是否选中怪=进程.读4byte(罗子进程句柄,指向怪物选中地址2)
如果(罗子是否选中怪>0)
基址1=进程.读4byte(罗子进程句柄,基址)
锁定目标血量偏移1=#9c
指向怪物血量地址1=基址1+锁定目标血量偏移1
怪物血量基址1=进程.读4byte(罗子进程句柄,指向怪物血量地址1)
锁定目标血量偏移2=#1e38
指向怪物血量地址2=基址1+锁定目标血量偏移2
怪物血量基址2=进程.读4byte(罗子进程句柄,指向怪物血量地址2)
如果(怪物血量基址2<=0)
窗口.发送按键(罗子窗口句柄,9)
否则
是否过滤怪物=列表框.得到个数("怪物列表")
如果(是否过滤怪物>0)
基址1=进程.读4byte(罗子进程句柄,基址)
锁定目标名字偏移1=#9c
指向锁定目标名字地址1=基址1+锁定目标名字偏移1
锁定目标名字基址1=进程.读4byte(罗子进程句柄,指向锁定目标名字地址1)
锁定目标名字偏移2=#119a
指向锁定目标名字地址2=锁定目标名字基址1+锁定目标名字偏移2
锁定目标名字基址2=进程.读string(罗子进程句柄,指向锁定目标名字地址2,20)
列表框内数量=列表框.得到个数("怪物列表")
遍历(m=0;列表框内数量>m;m++)
列表框内数量=列表框内数量-1
要打的怪物列表=列表框.获得文本("怪物列表",列表框内数量)
是否被过滤的目标=字符串.查找字符串(要打的怪物列表,锁定目标名字基址2)
如果(是否被过滤的目标>=0)
是否可以攻击的目标=1
否则
窗口.发送按键(罗子窗口句柄,9)
如果结束
遍历结束
如果(是否可以攻击的目标==1)
基址1=进程.读4byte(罗子进程句柄,基址)
人物坐标偏移=#88
指向人物坐标地址=基址1+人物坐标偏移
人物坐标基址=进程.读4byte(罗子进程句柄,指向人物坐标地址)
人物x坐标偏移=#88
指向人物x坐标地址=人物坐标基址+人物x坐标偏移
人物x坐标基址=进程.读float(罗子进程句柄,指向人物x坐标地址)
人物y坐标偏移=#90
指向人物y坐标地址=人物坐标基址+人物y坐标偏移
人物y坐标基址=进程.读float(罗子进程句柄,指向人物y坐标地址)
锁定目标偏移=#9c
指向锁定目标偏移=基址1+锁定目标偏移
锁定目标基址=进程.读4byte(罗子进程句柄,指向锁定目标偏移)
锁定目标x坐标偏移=#88
指向锁定目标x坐标=锁定目标基址+锁定目标x坐标偏移
锁定目标x坐标基址=进程.读float(罗子进程句柄,指向锁定目标x坐标)
锁定目标y坐标偏移=#90
指向锁定目标y坐标=锁定目标基址+锁定目标y坐标偏移
锁定目标y坐标基址=进程.读float(罗子进程句柄,指向锁定目标y坐标)
打怪距离=编辑框.获得文本("打怪范围编辑框")
人物x坐标对比值,人物y坐标对比值
如果(人物x坐标基址>锁定目标x坐标基址)
人物x坐标对比值=人物x坐标基址-锁定目标x坐标基址
否则
人物x坐标对比值=锁定目标x坐标基址-人物x坐标基址
如果结束
如果(人物y坐标基址>锁定目标y坐标基址)
人物y坐标对比值=人物y坐标基址-锁定目标y坐标基址
否则
人物y坐标对比值=锁定目标y坐标基址-人物y坐标基址
如果结束
如果((人物x坐标对比值<打怪距离)&&(人物y坐标对比值<打怪距离))
窗口.发送按键(罗子窗口句柄,49)
是否可以攻击的目标=0
否则
窗口.发送按键(罗子窗口句柄,9)
如果结束
如果结束
否则
基址1=进程.读4byte(罗子进程句柄,基址)
人物坐标偏移=#88
指向人物坐标地址=基址1+人物坐标偏移
人物坐标基址=进程.读4byte(罗子进程句柄,指向人物坐标地址)
人物x坐标偏移=#88
指向人物x坐标地址=人物坐标基址+人物x坐标偏移
人物x坐标基址=进程.读float(罗子进程句柄,指向人物x坐标地址)
人物y坐标偏移=#90
指向人物y坐标地址=人物坐标基址+人物y坐标偏移
人物y坐标基址=进程.读float(罗子进程句柄,指向人物y坐标地址)
锁定目标偏移=#9c
指向锁定目标偏移=基址1+锁定目标偏移
锁定目标基址=进程.读4byte(罗子进程句柄,指向锁定目标偏移)
锁定目标x坐标偏移=#88
指向锁定目标x坐标=锁定目标基址+锁定目标x坐标偏移
锁定目标x坐标基址=进程.读float(罗子进程句柄,指向锁定目标x坐标)
锁定目标y坐标偏移=#90
指向锁定目标y坐标=锁定目标基址+锁定目标y坐标偏移
锁定目标y坐标基址=进程.读float(罗子进程句柄,指向锁定目标y坐标)
打怪距离=编辑框.获得文本("打怪范围编辑框")
人物x坐标对比值,人物y坐标对比值
如果(人物x坐标基址>锁定目标x坐标基址)
人物x坐标对比值=人物x坐标基址-锁定目标x坐标基址
否则
人物x坐标对比值=锁定目标x坐标基址-人物x坐标基址
如果结束
如果(人物y坐标基址>锁定目标y坐标基址)
人物y坐标对比值=人物y坐标基址-锁定目标y坐标基址
否则
人物y坐标对比值=锁定目标y坐标基址-人物y坐标基址
如果结束
如果((人物x坐标对比值<打怪距离)&&(人物y坐标对比值<打怪距离))
窗口.发送按键(罗子窗口句柄,49)
否则
窗口.发送按键(罗子窗口句柄,9)
如果结束
如果结束
如果结束
否则
窗口.发送按键(罗子窗口句柄,9)
如果结束
如果结束
循环结束
返回 真
功能结束
功能 防止误绑计时器_时钟()
罗子定时器1记次=罗子定时器1记次+1
如果(罗子定时器1记次==1)
按钮.设置文本("开始","此窗口被绑定(5)")
如果结束
如果(罗子定时器1记次==2)
按钮.设置文本("开始","此窗口被绑定(4)")
如果结束
如果(罗子定时器1记次==3)
按钮.设置文本("开始","此窗口被绑定(3)")
如果结束
如果(罗子定时器1记次==4)
按钮.设置文本("开始","此窗口被绑定(2)")
如果结束
如果(罗子定时器1记次==5)
按钮.设置文本("开始","此窗口被绑定(1)")
如果结束
如果(罗子定时器1记次==6)
按钮.设置文本("开始","开始")
控件.有效("开始",真)
定时器.销毁("防止误绑计时器")
如果结束
返回 真
功能结束
功能 防止重复点击计时器_时钟()
罗子定时器2记次=罗子定时器2记次+1
如果(罗子定时器2记次==1)
按钮.设置文本("开始","绑定成功(5)")
如果结束
如果(罗子定时器2记次==2)
按钮.设置文本("开始","绑定成功(4)")
如果结束
如果(罗子定时器2记次==3)
按钮.设置文本("开始","绑定成功(3)")
如果结束
如果(罗子定时器2记次==4)
按钮.设置文本("开始","绑定成功(2)")
如果结束
如果(罗子定时器2记次==5)
按钮.设置文本("开始","绑定成功(1)")
如果结束
如果(罗子定时器2记次==6)
按钮.设置文本("开始","开始")
控件.有效("开始",真)
定时器.销毁("防止重复点击计时器")
如果结束
功能结束
功能 打怪按钮_点击()
如果(罗子自动打怪==1)
罗子自动打怪=0
按钮.设置文本("打怪按钮","打怪开始")
线程.暂停(罗子自动打怪线程句柄)
否则
按钮.设置文本("打怪按钮","停止打怪")
罗子自动打怪=1
罗子自动打怪线程句柄=线程.开启("镜界.自动打怪线程","")
罗子答题扫描属性遍历线程句柄=线程.开启("镜界.答题扫描属性遍历线程","")
列表个数=列表框.得到个数("怪物列表")
如果(列表个数==0)
标签.设置文本("提示标签","检测到怪物列表中没有怪物名称!自动开启攻击所有目标!")
定时器.注册("提示定时器",10000)
如果结束
如果结束
返回 真
功能结束
功能 提示定时器_时钟()
标签.设置文本("提示标签","")
功能结束
功能 武夷山_点击()
返回 真
功能结束
功能 南岭_点击()
返回 真
功能结束
功能 丽江_点击()
返回 真
功能结束
功能 初始化()
辅助.注册插件("rc:\\dm.dll",真)
罗子自动打怪开关=0
罗子类名窗口=0
基址=#00ef5db0
宝宝血判定=#7f9518a8
滑块.设置位置("滑块变量",70)
滑块.得到位置("滑块变量")
返回 真
功能结束
功能 销毁()
大漠.UnBindWindow()
如果(罗子类名窗口>0)
罗子标题获取=窗口.得到标题(罗子程序窗口句柄)
罗子窗口标题恢复=字符串.修剪(罗子标题获取,"(绑定中)")
窗口.设置标题(罗子程序窗口句柄,罗子窗口标题恢复)
如果结束
返回 真
功能结束
功能 开始按钮线程()
罗子类名窗口=窗口.找到窗口("","LuDingJi WndClass")
如果(罗子类名窗口==0)
辅助.消息框("扯呢啊!游戏都没开!你挂毛线呀!")
否则
罗子窗口标题=窗口.得到标题(罗子类名窗口)
罗子是否绑定=字符串.查找字符串(罗子窗口标题,"绑定中")
如果(罗子是否绑定>0)
按钮.设置文本("开始","此窗口被绑定")
定时器.注册("防止误绑计时器",1000)
罗子定时器1记次=0
否则
罗子开始线程句柄=线程.开启("镜界.罗子开始程序","")
定时器.注册("防止重复点击计时器",1000)
罗子定时器2记次=0
如果结束
如果结束
返回 真
功能结束
功能 开始_点击()
线程.开启("镜界.开始按钮线程","")
控件.有效("开始",假)
功能结束
功能 退出_点击()
大漠.UnBindWindow()
如果(罗子类名窗口>0)
罗子标题获取=窗口.得到标题(罗子程序窗口句柄)
罗子窗口标题恢复=字符串.修剪(罗子标题获取,"(绑定中)")
窗口.设置标题(罗子程序窗口句柄,罗子窗口标题恢复)
如果结束
辅助.退出()
功能结束
//功能 测试()
//罗子程序窗口句柄=窗口.找到窗口("","LuDingJi WndClass")
//罗子标题获取=窗口.得到标题(罗子程序窗口句柄)
//罗子进程句柄=进程.获取进程句柄(罗子标题获取)
//地址=进程.找string(罗子进程句柄,"中级肉类\n#c99cc66掉落包",#56ffffff,#63ffffff)
//辅助.消息框(地址)
//返回 真
//功能结束
//功能 按钮0_点击()
//线程.开启("镜界.测试","")
//功能结束
功能 镜界_关闭()
大漠.UnBindWindow()
如果(罗子类名窗口>0)
罗子标题获取=窗口.得到标题(罗子程序窗口句柄)
罗子窗口标题恢复=字符串.修剪(罗子标题获取,"(绑定中)")
窗口.设置标题(罗子程序窗口句柄,罗子窗口标题恢复)
如果结束
辅助.退出()
功能结束
功能 加入过滤列表_点击()
怪名=编辑框.获得文本("怪物名")
如果(怪名=="")
辅助.消息框("先获取取怪名字再加入,如果在龙掘挂机你也可以手动加入一些玩家名字,如果列表里没有加入怪名则默认攻击所有可攻击目标")
否则
列表框.增加文本("怪物列表",怪名)
如果结束
功能结束
功能 取怪名_点击()
罗子窗口句柄=窗口.找到窗口("","LuDingJi WndClass")
窗口.发送按键(罗子窗口句柄,9)
罗子标题获取=窗口.得到标题(罗子窗口句柄)
罗子进程句柄=进程.获取进程句柄(罗子标题获取)
基址1=进程.读4byte(罗子进程句柄,基址)
锁定目标名字偏移1=#9c
指向锁定目标名字地址1=基址1+锁定目标名字偏移1
锁定目标名字基址1=进程.读4byte(罗子进程句柄,指向锁定目标名字地址1)
锁定目标名字偏移2=#119a
指向锁定目标名字地址2=锁定目标名字基址1+锁定目标名字偏移2
锁定目标名字基址2=进程.读string(罗子进程句柄,指向锁定目标名字地址2,20)
编辑框.设置文本("怪物名",锁定目标名字基址2)
功能结束
功能 删除选中怪名_点击()
选中的文本=列表框.得到选项("怪物列表")
如果(选中的文本>=0)
列表框.删除文本("怪物列表",选中的文本)
否则
辅助.消息框("未选择要删除的怪物名称")
如果结束
功能结束
空间结束
//空间结束语句
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|