TC官方合作论坛

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

[其他] 64位进程内存读写

[复制链接]
跳转到指定楼层
楼主
发表于 2015-11-26 17:52:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mjg2009 于 2015-11-29 09:51 编辑

在这个64位程序越来越多的时代,按键,TC都还停留在32位。本人曾找遍按键论坛,TC论坛,都没找到一个32位进程能读写64位进程内存的插件。当然普通地址随便可以读。一但遇上长地址(如 1F3AA5DCCF0)或者带模块名的,DM,TS什么的都得跪。
然后找度娘解决才发现这方面的资料几乎为0.除了几个API什么也没有。而且几个API都是NTDLL.DLL未文档的。百度,谷哥都找不到资料。读写比还好,主要是模块遍历,真是头痛的事。(应该说是水平有限)
经过半个月研究,终于写出了这个插件,然后发现我的程可以直接用DELPHI写。插件用不上了,不想浪费,放出来给有需要的人吧。

var xx = com( "inx64.memory")
只写了几个简单的读写函数,

string GetModuleBase(hwnd,moduleName)  取模块基址(参数1:窗口句柄,参数2:模块名)返回16进制字符串地址。 比如 xx=xx.getmodulename(hwnd,"xxx.dll")

int ReadInt(hwnd,address[,nlen=4]) 读取4字节以内的整数(窗口句柄,地址:16进制字符串 可以直接用CE的地址表达串,可选参数 :读取字节数默认为4) 返回10进制整数。比如 xx=xx.readint(hwnd,"[[[xxx.exe+111]+222]+333]+444")

string ReadStr(hwnd,address[,nlen=10]) 读取字符串 参数同上 比如 xx=xx.readstr(hwnd,"[[[xxx.exe+111]+222]+333]+444",20) 注意地址跟大漠的不一样,模块不需要加<>


Float ReadFlo(hwnd,address) 读敢单精度浮点数 参数同上

Double ReadDoub(hwnd,address) 读取双精度浮点数 参数同上

int WriteInt(hwnd,address,sdata) 写入4字节整数(窗口句柄,地址,写入内容) 成功返回0 返回非0写入失败。

int WriteStr(hwnd,address,sdata) 写入字符串(窗口句柄,地址,写入内容:字符串) 成功返回0 返回非0写入失败。


目前好像就这几个  本插件也同时支持32位进程。在XP  和W7 上都正常,W8以上没试验



本帖子中包含更多资源

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

x
回复

使用道具 举报

沙发
发表于 2015-11-26 18:14:21 | 只看该作者
本帖最后由 如此美丽。 于 2015-11-26 18:27 编辑

赞一个
不过毕竟现在64程序很少
而且64位和32位的字节长度是不一样的
如果读一个x64的long最大值 到x86 是会溢出的
所以还是建议 如果要操作64位进程 还是写x64程序
当然 插件的编译环境不一样 导致字节长度也是不一样的
回复 支持 反对

使用道具 举报

板凳
发表于 2015-11-27 10:34:30 | 只看该作者
都很厉害。
回复

使用道具 举报

地板
发表于 2015-11-28 14:56:50 来自手机 | 只看该作者
好强大
回复

使用道具 举报

5#
发表于 2015-11-28 14:57:25 来自手机 | 只看该作者
附件呢?
回复

使用道具 举报

6#
发表于 2016-1-9 14:31:01 | 只看该作者
顶一下~~~~
回复

使用道具 举报

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

本版积分规则

关闭

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

关闭

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

GMT+8, 2025-9-17 21:11 , Processed in 0.471898 second(s), 25 queries .

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

© 2001-2013 Comsenz Inc.

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