📄 subject_45079.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> PVOID pvAddress, <BR> SIZE_T dwSize,<BR> DWORD flNewProtect, <BR> 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> 以后不必送分,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>// THEN, 理解OS KERNEL是否允许<BR>// 更改这个ATTRIBUTE,这通常意味着disassembly OS 的相应函数,<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>
回复者:xiongli 回复日期:2003-06-26 22:21:59
<br>内容:在VirtualProtect() 没有mask这个东西,而是通过int 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> MEMORY_BASIC_INFORMATION buf;<BR> void *start;<BR> void *tmp;<BR> DWORD nop;<BR> HMODULE mod=LoadLibrary("gdi32");<BR> void* add=(void*)GetProcAddress(mod,"LineTo");<BR> void* addr=(void*)CreateWindowExA;<BR><BR>begin:<BR> __asm <BR> {<BR> lea eax,begin<BR> mov start,eax<BR> nop<BR> nop<BR> nop<BR> }<BR>// int f=*(int*)start;<BR> tmp=(void*)((int)(start)&0xfffff000);<BR> VirtualQuery(tmp,&buf,sizeof(buf));<BR> int p=VirtualProtect(tmp,1,/*PAGE_READWRITE*/PAGE_WRITECOPY,&nop);<BR> VirtualQuery(tmp,&buf,sizeof(buf));<BR> *(int*)start=10;<BR>// goto begin;<BR> 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 + -