|
![]() | 作者: ghame [ghame]
![]() |
登录 |
我想用C#编一个查看PE文件头的程序,关键代码如下: [StructLayout(LayoutKind.Explicit)] public struct DosMZ { [FieldOffset(0)]public ushort e_magic; ....... } 以上为DOSMZ头的定义。 我在下文中用这个结构的指针: FileStream fs=new FileStream(....); byte[] buffer=new byte[64]; //DosMZ头的长度为64 fs.read(buffer,0,64); fixed (byte* pbuffer=buffer) { DosMZ* pdosh=(DosMZ*)pbuffer; //编译器在此处报错 ....... } 编译器报错:“不能获取DosMZ结构的大小或地址” 请问,到底是哪里出了问题? [此贴被 ghame(ghame) 在 03月06日01时18分 编辑过] |
地主 发表时间: 04-03-05 20:52 |
![]() | 回复: flavor [flavor] ![]() |
登录 |
C#有指针吗? 看来我孤陋寡闻啦! |
B1层 发表时间: 04-03-05 21:51 |
![]() | 回复: flavor [flavor] ![]() |
登录 |
楼主不是cp了C的查看PE文件的代码吧!呵呵 具我所掌握的C#的知识,暂时还没办法用C#实现查看PE文件。呵呵。 毕竟.net framewrok不是基于win32的。 |
B2层 发表时间: 04-03-05 21:55 |
![]() | 回复: ghame [ghame] ![]() |
登录 |
呵呵.可以的..NET中有一种叫做非托管代码的东西,也就是指内存不受托管的代码.其中C++.NET就属于非托管代码.而VB.NET,C#.NET的代码属于托管代码. 托管代码和非托管代码之间是可以互相通信的.但是要在托管代码中使用非托管代码,必须在这一段代码加上unsafe关键字.在unsafe的上下文是可以使用指针的. |
B3层 发表时间: 04-03-06 00:36 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号