当前位置:编程学习 > C#/ASP.NET >>

异常:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

[DllImport("kernel32.dll")]
        public static extern int GetProcAddress(int hModule, string lpProcName);
        [DllImport("kernel32.dll")]
        public static extern int GetModuleHandleA(string lpModuleName);
        [DllImport("kernel32.dll")]
        public static extern int WriteProcessMemory(int hProcess, int pBaseAddress,out  byte[] lpBuffer, int nSize, int lpNumberOfBytesWritten);
        [DllImport("kernel32.dll")]
        public static extern int ReadProcessMemory(int hProcess, int pBaseAddress, out byte[] lpBuffer, int nSize, int lpNumberOfBytesWritten);
        [DllImport("kernel32.dll")]
        public static extern bool VirtualProtect(int lpAddress, int dwSize, int flNewProtect, int lpflOldProtect);

sendaddress = GetProcAddress(GetModuleHandleA("ws2_32.dll"), "send");
recvaddresss = GetProcAddress(GetModuleHandleA("ws2_32.dll"), "recv");
byte[] senddata = new byte[9]; byte[] recvdata = new byte[9];
ReadProcessMemory(-1, sendaddress, out senddata, 9, 0);
ReadProcessMemory(-1, recvaddresss, out  recvdata, 9, 0);

异常:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

不知道这个问题该如何解决? --------------------编程问答-------------------- 这只有上帝知道。

你的代码毫无任何道理可言。你去试图修改作为代码的存储干嘛呢? --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
这只有上帝知道。

你的代码毫无任何道理可言。你去试图修改作为代码的存储干嘛呢?



send,防止抓包工具拦截封包 --------------------编程问答-------------------- 恕我笨拙,没看出你的代码有这么玄乎的功能。 --------------------编程问答-------------------- 我说了,你的这段代码读取的不是什么通讯的数据,而是动态链接库中函数入口地址处的一些作为指令的数据。 --------------------编程问答--------------------
引用 4 楼 caozhy 的回复:
我说了,你的这段代码读取的不是什么通讯的数据,而是动态链接库中函数入口地址处的一些作为指令的数据。


WriteProcessMemory(-1, sendaddress, out senddata, 9, 0);
WriteProcessMemory(-1, recvaddresss, out recvdata, 9, 0);
VirtualProtect (sendaddress, 5, 128, 0);
VirtualProtect(recvaddresss, 5, 128, 0);

说实话,我也不是很理解,这是一个易语言的朋友帮我写的,我照着他的E改写过来的。在E中测试是没有问题的。 --------------------编程问答--------------------
引用 5 楼 weige200401 的回复:
引用 4 楼 caozhy 的回复:我说了,你的这段代码读取的不是什么通讯的数据,而是动态链接库中函数入口地址处的一些作为指令的数据。

WriteProcessMemory(-1, sendaddress, out senddata, 9, 0);
WriteProcessMemory(-1, recvaddresss, out recvdata, 9, 0);
……


我在httpwebrequest之前就执行上面的代码 --------------------编程问答-------------------- 我要做的目的只有一个,就是不让抓包工具,抓到httpwebrequest发送的地址。不知道版主大人有啥高见。 --------------------编程问答-------------------- readprocessmemory C#的翻译不对
   
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,