TC官方合作论坛
标题:
关于TC搜索内存地址筛选的方法
[打印本页]
作者:
1049275328
时间:
2013-4-17 17:35
标题:
关于TC搜索内存地址筛选的方法
上代码:
//获取进程句柄
进程句柄=进程.获取进程句柄("5554:Test4")
//获取窗口句柄
窗口句柄=窗口.找到窗口("5554:Test4")
//向窗口发送一个键值为55的按键使画面进入“收件箱”
窗口.提交按键(窗口句柄,55)
辅助.等待(1000)
//查找收件箱中数据为6的地址
地址=进程.找4byte(进程句柄,6,#4FC000,#7fffffff)
辅助.等待(5000)
问题来了,这里搜到的数据有很多,我需要再执行以下代码:
//向窗口发送键值为56的按键使画面退出“收件箱”
窗口.提交按键(窗口句柄,56)
//再次搜索数据为10的地址(注意,这里需要在上次搜索出来的数据的基础上再次筛选数据为10的地址),请问如何实现?下面这句不能实现吧?貌似它是重新搜索的整个游戏内存)
地址=进程.找4byte(进程句柄,10,#4FC000,#7fffffff)
其实就是像CE那样,第一次搜索数据时会有很多,然后需要在这些数据上再次遍历筛选,请问TC如何实现?新手求解
作者:
cylhb
时间:
2013-4-17 19:16
3楼的可行.
作者:
alukaduo09
时间:
2013-4-18 19:13
tc的搜索只能搜索到第一个数值为6的地址。但是代码上你可以做一个判断,如果搜到的地址没有到达7fffffff则继续搜索,一直搜索到无法找到你所找的数值就证明首次搜索完毕了。并将每次搜到符合数值的地址加入到数组中保存。
然后二次搜索要搜的数值为10,将数组内存放的内存地址再次找4字节10进制数据 符合数值的再次存放到另外一级的数组中保存地址。
如此反复就筛选掉了不符合正确数值的地址了。如果你明白TC如何写这个代码的并不是难事,大概50行代码基本就可以实现了。
作者:
1049275328
时间:
2013-4-18 20:32
回复
2楼
cylhb
的帖子
那样做估计会把CPU耗死
作者:
1049275328
时间:
2013-4-18 20:56
回复
3楼
alukaduo09
的帖子
想想确实可行,第一次循环搜寻出所有数据为6的地址,然后循环写入到数组里,接下来发送窗口按键使内存数据变为10,然后再循环得到数组中的地址所对应的值,如果为10,就再装入到下一个数组中,直到数组大小等于1,再把地址取出来进行写的操作。怎么得到数组大小刚刚还在纠结,现在找想到了,代码如下:
整型 i = 0
arrays=数组
if(i<10)
循环(i<10)
数组空间.增加(arrays,"dd")
i++
循环结束
辅助.消息框("搜寻完毕,共得到"&i&"个地址")
endif
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1