堆内存访问错误

崩溃到ntdll.dll的问题

比较典型的无效指针(非法内存访问),建议先解决符号问题,Google或者参考《软件调试》中关于符号文件的部分...

[关闭] height="600" src="/sda/TopicDaLeft.htm?v201305241723" frameborder="0" width="120" scrolling="no">

已经删除的关键段对象进入NTDLL可能会崩溃。

ntdll.dll文件分析  ntdll - ntdll.dll - DLL文件信息

  DLL 文件: ntdll 或者 ntdll.dll  DLL 名称: NT Layer DLL

  描述:ntdll.dll是NT操作系统重要的模块。

  路径位置:c:/windows/system32/ntdll.dll

  属于:Windows NT  系统DLL文件:是

  常见错误: File Not Found, Missing File, Exception Errors

  安全等级(0-5):0  间谍软件:否  广告软件:否

  XP的核心dll——ntdll.dll
  打开NTDLL.dll,惊奇的发现原来CRT的许多基本函数居然都是在这里实现的!甚至包括qsort,ceil这样的函数,还有臭名昭著的 strcpy(严格来讲,这只能怪使用者不当心)。堆的释放,进程管理,似乎都是在这。于是,我决定,仔细察看以下它,这1410个函数是做什么的
  用户模式的代码在调用系统内核函数的时候,首先把一个叫做system call number的数放在EAX中,把参数放在其它的寄存器中了。然后调用INT 2E中断。但是大部分应用程序并不需要直接这么做。通常都是在调用kernel32.dll等时由他们来调用INT 2E.
  内核模式的代码,做法稍微有点不同。他们通常调用由NTOSKRNL.EXE导出的NTDLL.dll中Zw开头的那一系列函数,比如 ZwWaitForSingleObject, 反之,如果是用户级代码需要调用内核,就会利用INT 2E调用WaitForSingleObject.对于许多函数的批量调用,你会明显发现 Zw族要比Rtl族效率高很多。
  可惜ntdll.dll中的大部分函数都是undocumented.
  对于一部分得知其定义形式的函数,可以这样调用:
  1.先将NTDLL.DLL读入 LoadLibrary(TEXT(\“NTDLL.dll\”))
  2.利用GetProcAddress 获取其函数入口地址
  3.利用得到的函数指针调用
 

CFileDialog

CStdioFile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值