更新流程地址空间中的HTML内容

时间:2015-11-16 14:35:01

标签: c++ c windows

大家好!

如何通过修改浏览器进程的内存来更改网页中显示的HTML字符串?

我确实喜欢这样,但它不起作用:

  1. 在chrome或IE中,我打开一个网页,其中包含一个字符串“google”。
  2. 打开此Chrome或IE进程并搜索进程的整个内存空间以查找字符串“google”,因此我获得了一个内存地址0x01960064
  3. 我通过API WriteProcessMemory向此地址写了另一个字符串,例如“baby”。但在页面中,字符串“google”没有变为“baby”。然后我去了0x01960064,这里已经是“宝贝”了。我再次搜索“谷歌”,它在另一个地址,而不是0x01960064。地址已更改。
  4. 为什么它会像这样工作? :(

1 个答案:

答案 0 :(得分:0)

字符串可能是对象,因此可能是堆分配的。

堆可能会被一些垃圾收集器管理,所以即使你确实找到了正确的地址,也不能保证当你尝试注入新数据时会有相同的对象。

如果您不知道这一点,垃圾收集器通常会在清理后对堆进行碎片整理。

解决此问题需要确保在浏览器进程中暂停所有线程。