进程字符串替换

cbbcard 2009-05-23 12:07:29
查找另一个进程里的字符串并修改之,同长度,搞了几天没搞出来,请各位帮帮忙!
...全文
228 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
济南大飞哥 2009-06-02
  • 打赏
  • 举报
回复
进程,线程怎么就那么难啊?
wngmngchng 2009-06-01
  • 打赏
  • 举报
回复
我也遇到同样的问题,顶一下。
光宇广贞 2009-05-30
  • 打赏
  • 举报
回复
进程间通信吧。

让对方来做处理。
迈克揉索芙特 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jingzhongrong 的回复:]
通过一些特征查找字符串的位置,比如前后一些不变的字节或者通过某个函数来定位等等方法。
得到字符串位置后,使用WriteProcessMemory写入就可以了,某些进程可能需要提升权限。
[/Quote]
up
注意杀毒软件拦截对这个行为的拦截
cbbcard 2009-05-28
  • 打赏
  • 举报
回复
进一步研究中~
jingzhongrong 2009-05-28
  • 打赏
  • 举报
回复
通过一些特征查找字符串的位置,比如前后一些不变的字节或者通过某个函数来定位等等方法。
得到字符串位置后,使用WriteProcessMemory写入就可以了,某些进程可能需要提升权限。
wuhongxj 2009-05-28
  • 打赏
  • 举报
回复
顶一下。
liyoubaidu 2009-05-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ChrisAK 的回复:]
引用 2 楼 andywongz 的回复:
有那么简单吗?

为了保护进程的稳定性,Windows的不同进程是不能互相访问对方的内存地址的。
所以提供了Read/Write ProcessMemory,只要你的进程有相应的权限,
是可以读取/写入其它进程的内存的.

引用 3 楼 cbbcard 的回复:
字符串的地址是不固定的,每次都要重新查找,能给个例么?谢谢
windows进程的用户内存分区地址空间起始位置是固定的,内存的分配也是有最
小分配粒度的.比如…
[/Quote]

up
阿牛138588 2009-05-24
  • 打赏
  • 举报
回复
把那个字符串放在通用域,成为全局变量,然后你的问题就变成简单的同步问题了.

为什么要直接修改内存?那样不是c#本意
CsToD 2009-05-23
  • 打赏
  • 举报
回复
如果目标进程是托管程序的话,会有一个拘留池来维护字符串,不过我不知道怎样读出拘留池里有哪些字符串。
等待ing......
ChrisAK 2009-05-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 andywongz 的回复:]
有那么简单吗?

为了保护进程的稳定性,Windows的不同进程是不能互相访问对方的内存地址的。
[/Quote]所以提供了Read/Write ProcessMemory,只要你的进程有相应的权限,
是可以读取/写入其它进程的内存的.

[Quote=引用 3 楼 cbbcard 的回复:]
字符串的地址是不固定的,每次都要重新查找,能给个例么?谢谢
[/Quote]windows进程的用户内存分区地址空间起始位置是固定的,内存的分配也是有最
小分配粒度的.比如一般情况下你new了4字节的内存实际上是划了4k给你.知道这些写个遍
历不难的.
wuyq11 2009-05-23
  • 打赏
  • 举报
回复
进程间实现通讯,也可参考看看myqq
参考
cbbcard 2009-05-23
  • 打赏
  • 举报
回复
晕,和“金山游侠”有那么点类似,但不是想那方面,只是单纯的替换字字符串,谢谢
老龙友 2009-05-23
  • 打赏
  • 举报
回复
不就是想搞一个类似“金山游侠”这样的东东么

你误入歧途了。
cbbcard 2009-05-23
  • 打赏
  • 举报
回复
不懂就很难,想搞懂也很难,SOS
CsToD 2009-05-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cbbcard 的回复:]
字符串的地址是不固定的,每次都要重新查找,能给个例么?谢谢
[/Quote]
这是必然的吧。
cbbcard 2009-05-23
  • 打赏
  • 举报
回复
字符串的地址是不固定的,每次都要重新查找,能给个例么?谢谢
老龙友 2009-05-23
  • 打赏
  • 举报
回复
有那么简单吗?

为了保护进程的稳定性,Windows的不同进程是不能互相访问对方的内存地址的。
CsToD 2009-05-23
  • 打赏
  • 举报
回复
只要知道了字符串的内存地址,用WriteProcessMemory把新的字符串写进去就行了,有什么搞不定的?
(一般要用到Encoding.Default.GetBytes(str))
加载更多回复(3)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧