正在做一个内存读取器,请告诉我我是不是在重复造轮子,或者有没有类似的已有的更好的实现?

2020-04-15 17:14:26 +08:00
 phpfpm

需求背景:

在 windows 平台的其他非管理员权限启动的程序(win32),或者一些可执行脚本(vbs,ahk) 不能通过 ReadProcessMemory 读取其他进程的内存,因此要做一层代理,启动一个以管理员权限运行的程序,帮助其他程序正确完成一些特权操作

实现方式: 查了一下 win32 共享进程数据的一些方式,最简单的是剪贴板,尤其适合 ahk 这种工具(提供了读取和写入剪贴板的 api )

因此,简单定义一套语法,形如

READSTRING, HWND, ADDRESS, LENGTH

例如,

READSTRING, 123123, 0x234234, 10

当外部程序把这个字符串写入剪贴板的时候,内存读取器读到这个写入,将剪贴板修改为:

READSTRING, 123123, 0x234234, 10, HelloWorld

外部程序拿到修改之后的剪贴板就可以实现自己的后续逻辑了,而不用关注是如何读取内存的 (当然涉及到读取器读到自己修改之后的剪贴板,这个做一些协议上的控制,不再赘述)

为什么其他进程不直接读取呢?

1 ahk 脚本在开发的时候不方便用管理员运行

2 通过 clickonce 分发的程序不支持管理员运行 见我之前的一个讨论( https://www.v2ex.com/t/661848)

因此想出了这个折中的方式~

比起 rpc 调用: 在脚本语言使用更简单(只需要读写剪贴板&简单的字符串解析即可)

3106 次点击
所在节点    分享创造
14 条回复
shakoon
2020-04-15 17:45:39 +08:00
用剪贴板共享进程数据……怕是要被用户打死哦。数据量要是不大,写个 ini 或写注册表都行啊,vbs 调用很方便的
crab
2020-04-15 17:49:21 +08:00
WM_COPYDATA
Kiriya
2020-04-15 17:50:02 +08:00
怎么感觉在写游戏外挂
lcdtyph
2020-04-15 18:05:46 +08:00
当心被恶意利用…
phpfpm
2020-04-15 18:06:51 +08:00
@crab
也不是。。不可以……
https://autohotkey.com/board/topic/123674-onmessage-wm-copydata/
ahk 实现 wm_copydata 有点重啊……可控性差一些


@shakoon 数据量不大,但是实时性要求高(基本是同步调用外部变量,会锁死等一会)
不过我的用户很乖的,不会打我的

@Kiriya 你感觉得不错!
phpfpm
2020-04-15 18:08:43 +08:00
@lcdtyph 安全性确实无解

但是 WM_COPYDATA 不也是无法保证安全,其他进程也可以发相同的消息啊。
superrichman
2020-04-15 18:11:58 +08:00
搜索 cheat engine
phpfpm
2020-04-15 18:19:47 +08:00
@superrichman cheat engine 我用啊,难道这个有 cli ?
xupefei
2020-04-15 18:21:28 +08:00
应该用共享内存
ccpp132
2020-04-15 18:22:09 +08:00
通讯用 socket 不好吗,用剪贴板。。。
phpfpm
2020-04-15 18:23:13 +08:00
@xupefei
@ccpp132

主要考虑到在 ahk 脚本访问共享内存 /socket 太复杂了。。。
kernelpanic
2020-04-15 19:05:39 +08:00
github 上一大堆代码,有用 lsass 注入的,还有些利用某些内核驱动漏洞的
newmlp
2020-04-15 22:21:00 +08:00
为什么不用共享内存
xioxu
2020-04-16 18:54:54 +08:00
话说很多年前我们用的是 金山游侠 , 读取修改其它应用的内存数据, 也不知道现在是否还活着

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662741

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX