- UID
- 1
- 精华
- 积分
- 76361
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
原文出处:
http://www.vbasm.com/thread-7933-1-1.html
在众多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.点击“写内存”按钮
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”,再点击“写内存”按钮
5.点击“计算器”界面的菜单“帮助”->“关于”,计算器出错退出
6.点击“记事本”界面的菜单“帮助”->“关于”,记事本出错退出
总结:禁用COPY-ON-WRITE后,修改一个进程某个函数的机器码,会影响所有的进程。做完第二个实验后,你再运行任何程序,只要调用到shell32!ShellAboutW,进程都会马上崩溃。 |
|