TC官方合作论坛

 找回密码
 立即注册
查看: 749|回复: 4
打印 上一主题 下一主题

[讨论] 关于TC搜索内存地址筛选的方法

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-17 17:35:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
上代码:

//获取进程句柄
进程句柄=进程.获取进程句柄("5554:Test4")
//获取窗口句柄
窗口句柄=窗口.找到窗口("5554:Test4")
//向窗口发送一个键值为55的按键使画面进入“收件箱”
窗口.提交按键(窗口句柄,55)
辅助.等待(1000)
//查找收件箱中数据为6的地址
地址=进程.找4byte(进程句柄,6,#4FC000,#7fffffff)
辅助.等待(5000)

问题来了,这里搜到的数据有很多,我需要再执行以下代码:
//向窗口发送键值为56的按键使画面退出“收件箱”
窗口.提交按键(窗口句柄,56)
//再次搜索数据为10的地址(注意,这里需要在上次搜索出来的数据的基础上再次筛选数据为10的地址),请问如何实现?下面这句不能实现吧?貌似它是重新搜索的整个游戏内存)
地址=进程.找4byte(进程句柄,10,#4FC000,#7fffffff)


其实就是像CE那样,第一次搜索数据时会有很多,然后需要在这些数据上再次遍历筛选,请问TC如何实现?新手求解

回复

使用道具 举报

沙发
发表于 2013-4-17 19:16:27 | 只看该作者
3楼的可行.
回复 支持 反对

使用道具 举报

板凳
发表于 2013-4-18 19:13:58 | 只看该作者
tc的搜索只能搜索到第一个数值为6的地址。但是代码上你可以做一个判断,如果搜到的地址没有到达7fffffff则继续搜索,一直搜索到无法找到你所找的数值就证明首次搜索完毕了。并将每次搜到符合数值的地址加入到数组中保存。
然后二次搜索要搜的数值为10,将数组内存放的内存地址再次找4字节10进制数据 符合数值的再次存放到另外一级的数组中保存地址。

如此反复就筛选掉了不符合正确数值的地址了。如果你明白TC如何写这个代码的并不是难事,大概50行代码基本就可以实现了。
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2013-4-18 20:32:43 | 只看该作者
回复 2楼cylhb的帖子

那样做估计会把CPU耗死
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2013-4-18 20:56:15 | 只看该作者
回复 3楼alukaduo09的帖子

想想确实可行,第一次循环搜寻出所有数据为6的地址,然后循环写入到数组里,接下来发送窗口按键使内存数据变为10,然后再循环得到数组中的地址所对应的值,如果为10,就再装入到下一个数组中,直到数组大小等于1,再把地址取出来进行写的操作。怎么得到数组大小刚刚还在纠结,现在找想到了,代码如下:
  整型 i = 0
    arrays=数组
    if(i<10)
    循环(i<10)
    数组空间.增加(arrays,"dd")
    i++
    循环结束
    辅助.消息框("搜寻完毕,共得到"&i&"个地址")
    endif


回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-10-5 05:26 , Processed in 0.211664 second(s), 23 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表