找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4397|回复: 6

[科普]COPY-ON-WRITE是什么?

[复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2014-3-20 10:25:11 | 显示全部楼层 |阅读模式
在众多32位的ARK里,IceSword有一个神奇的功能,叫做“禁用COPY-ON-WRITE”。
但是这个功能似乎很冷门,后来兴起的新ARK(如XUETR等)都不再提供。
其实COPY-ON-WRITE在特殊场合还是有一定用处的,只不过很多人不知道而已。
下面就讲讲COPY-ON-WRITE的作用,以及禁用COPY-ON-WRITE的效果(以下演示皆基于WIN7X64系统)。

第一个实验:
1.运行calc.exe、notepad.exe、WIN64AST 1.03或后续版本
2.获得shell32!ShellAboutW的地址(选中CALC.EXE,按下右键,选择“读写进程内存”)
3.对calc.exe进程的函数首地址写入0xCC(填写“地址”和“长度”文本框,长度为1,内存内容为cc)
4.点击“写内存”按钮
0.png
5.点击“计算器”界面的菜单“帮助”->“关于”,计算器出错退出
6.点击“记事本”界面的菜单“帮助”->“关于”,记事本正常运行
总结:虽然修改了CALC.EXE里ShellAboutW函数的机器码,但是并没有影响到NOTEPAD.EXE,这就是COPY-ON-WRITE的作用。

第二个实验:
1.运行calc.exe、notepad.exe、WIN64AST 1.03或后续版本
2.获得shell32!ShellAboutW的地址(选中CALC.EXE,按下右键,选择“读写进程内存”)
3.对calc.exe进程的函数首地址写入0xCC(填写“地址”和“长度”文本框,长度为1,内存内容为cc)
4.先选中“禁用C.O.W”,再点击“写内存”按钮
1.png
5.点击“计算器”界面的菜单“帮助”->“关于”,计算器出错退出
6.点击“记事本”界面的菜单“帮助”->“关于”,记事本出错退出
总结:禁用COPY-ON-WRITE后,修改一个进程某个函数的机器码,会影响所有的进程。做完第二个实验后,你再运行任何程序,只要调用到shell32!ShellAboutW,进程都会马上崩溃。

2

主题

12

回帖

0

精华

铜牌会员

积分
76
发表于 2014-3-20 13:02:46 | 显示全部楼层
这叫写时拷贝还是啥的来是吧

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2014-3-20 15:01:03 | 显示全部楼层
wondayer 发表于 2014-3-20 13:02
这叫写时拷贝还是啥的来是吧

就是“写时拷贝”

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2014-3-22 01:47:50 | 显示全部楼层
sb666 发表于 2014-3-21 19:09
顺便再加一句蛋疼的写时拷贝,对全体模块有效,而不仅仅是dll,很多书讲这个讲得不清楚……容易有误解
也就 ...


破坏EXE模块由这个效果?改天试试。
头像被屏蔽

0

主题

29

回帖

0

精华

金牌会员

积分
976
发表于 2014-3-22 18:42:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

0

主题

29

回帖

0

精华

金牌会员

积分
976
发表于 2014-3-29 20:24:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

0

主题

29

回帖

0

精华

金牌会员

积分
976
发表于 2014-3-29 20:25:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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