⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_45079.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:45079 发表者:阿蝌 发表日期:2003-06-26 12:01:17
<br>主题:dr0进来拿分哈
<br>内容:谢了
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-06-26 15:12:40
<br>内容:BOOL VirtualProtect(<BR>&nbsp;&nbsp; PVOID pvAddress, <BR>&nbsp;&nbsp; SIZE_T dwSize,<BR>&nbsp;&nbsp; DWORD flNewProtect, <BR>&nbsp;&nbsp; PDWORD pflOldProtect);<BR>Here, pvAddress points to the base address of the memory (which must be in your process's user-mode partition), dwSize indicates the number of bytes for which you want to change the protection attribute, and flNewProtect can represent any one of the PAGE_* protection attribute identifiers except for PAGE_WRITECOPY and PAGE_EXECUTE_WRITECOPY.<BR>//in aw4<BR>dr0,借这里问一下上次那个更改exe映射内存属性的问题。<BR>上面说到不能通过virtualquery更改PAGE_WRITECOPY ,PAGE_EXECUTE_WRITECOPY<BR>这也是不是说明只有loader和系统才能够设定这两个属性?<BR>因为virtualalloc也不能设定<BR>所以说通过修改内存,是无论如何也不能影响到对应的file image的<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:dr0 回复日期:2003-06-26 21:39:26
<br>内容:2 阿蝌,<BR>&nbsp;&nbsp;以后不必送分,thanks.<BR><BR>2 xiongli,<BR><BR>上面说到不能通过virtualquery更改PAGE_WRITECOPY ,PAGE_EXECUTE_WRITECOPY<BR>这也是不是说明只有loader和系统才能够设定这两个属性?<BR>因为virtualalloc也不能设定<BR>所以说通过修改内存,是无论如何也不能影响到对应的file image<BR>// 实话实说,我不清楚。要搞清楚这个问题:<BR>// 1,理解VirtualProtect() 是不是MASK这个WRITECOPY操作了<BR>// 2,IF 1 没有MASK这个ATTRIBUTE,<BR>//&nbsp;&nbsp;&nbsp;&nbsp;THEN, 理解OS KERNEL是否允许<BR>//&nbsp;&nbsp;&nbsp;&nbsp;更改这个ATTRIBUTE,这通常意味着disassembly OS 的相应函数,<BR>//&nbsp;&nbsp;&nbsp;&nbsp;我没干过,你可以试试.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-06-26 22:21:59
<br>内容:在VirtualProtect() 没有mask这个东西,而是通过int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2Eh<BR>跳进核心,然后检查核心返回值<BR>核心怎么做的我就不清楚了。<BR>同时,我发现并不是VirtualProtect() 不能设定PAGE_WRITECOPY and PAGE_EXECUTE_WRITECOPY.<BR>而是不能改变WRITECOPY设定。也就是说如果本来是WRITECOPY的,你可以用VritualProtect()来设定WRITECOPY而不错出。但是对于本来不是WRITECOPY,你要把它设定成WRITECOPY就会出错。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-06-26 22:41:57
<br>内容:#include "windows.h"<BR>int main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;MEMORY_BASIC_INFORMATION buf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;void *start;<BR>&nbsp;&nbsp;&nbsp;&nbsp;void *tmp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD nop;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HMODULE mod=LoadLibrary("gdi32");<BR>&nbsp;&nbsp;&nbsp;&nbsp;void* add=(void*)GetProcAddress(mod,"LineTo");<BR>&nbsp;&nbsp;&nbsp;&nbsp;void* addr=(void*)CreateWindowExA;<BR><BR>begin:<BR>&nbsp;&nbsp;&nbsp;&nbsp;__asm <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lea eax,begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov start,eax<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nop<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nop<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nop<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>//&nbsp;&nbsp;&nbsp;&nbsp;int f=*(int*)start;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tmp=(void*)((int)(start)&amp;0xfffff000);<BR>&nbsp;&nbsp;&nbsp;&nbsp;VirtualQuery(tmp,&amp;buf,sizeof(buf));<BR>&nbsp;&nbsp;&nbsp;&nbsp;int p=VirtualProtect(tmp,1,/*PAGE_READWRITE*/PAGE_WRITECOPY,&amp;nop);<BR>&nbsp;&nbsp;&nbsp;&nbsp;VirtualQuery(tmp,&amp;buf,sizeof(buf));<BR>&nbsp;&nbsp;&nbsp;&nbsp;*(int*)start=10;<BR>//&nbsp;&nbsp;&nbsp;&nbsp;goto begin;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}<BR><BR>在倒数第三行,我无论是用PAGE_READWRITE还是PAGE_WRITECOPY,都可以成功,而且时得到同样的结果:PAGE_READWRITE<BR><BR>结合三楼的例子,发现ms在这个上面没解释清楚。aw4也没解释清楚。<BR>我的理解是用户只能自己设定access token,也就是能不能访问,更本不能控制write-copy属性。write-copy是loader做的工作。同时如果用户设定PAGE_WRITECOPY,得到的结果是不可靠的<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-06-26 22:51:52
<br>内容:copy on write 在NT下应该是个default attribute 对 dll/exe 来说
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-06-26 22:54:13
<br>内容:memory manager 在整个NT中可能是最为复杂的子系统,找Inside Windows看看吧<BR>有些东西书里也没讲,要自己explore的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-06-26 22:54:26
<br>内容:memory manager 在整个NT中可能是最为复杂的子系统,找Inside Windows2000看看吧<BR>有些东西书里也没讲,要自己explore的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿蝌 回复日期:2003-06-26 23:36:51
<br>内容:我想write-copy是os决定的,而PAGE_READWRITE可以设置
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -