NT.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.利用得到的函数指针调用
  但是可以大致的分为几类吧
  1 PropertyLengthAsVariant   它被排在了第一号,但是我就是不明白它是做什么的
  2   Csr(configuration status register? Command and Status Register?)系列
  CsrAllocateCaptureBuffer CsrAllocateMessagePointer CsrCaptureMessageBuffer CsrCaptureMessageMultiUnicodeStringsInPlace CsrCaptureMessageString CsrCaptureTimeout CsrClientCallServer CsrClientConnectToServer CsrFreeCaptureBuffer CsrGetProcessId CsrIdentifyAlertableThread CsrNewThread CsrProbeForRead CsrProbeForWrite CsrSetPriorityClass
  3 Dbg系列 调试函数
  DbgBreakPoint DbgPrint DbgPrintEx DbgPrintReturnControlC DbgPrompt DbgQueryDebugFilterState DbgSetDebugFilterState DbgUiConnectToDbg DbgUiContinue DbgUiConvertStateChangeStructure DbgUiDebugActiveProcess DbgUiGetThreadDebugObject DbgUiIssueRemoteBreakin DbgUiRemoteBreakin DbgUiSetThreadDebugObject DbgUiStopDebugging DbgUiWaitStateChange DbgUserBreakPoint
  4 ki系列
  KiRaiseUserExceptionDispatcher
  KiUserApcDispatcher
  KiUserCallbackDispatcher
  KiUserExceptionDispatcher
  5 Ldr系列   Loader APIs,共34个
  API
  NTDLL APIs
  LoadResource
  LdrAccessResource
  Ldr*****nateResourcesEnabled
  DisableThreadLibraryCalls
  LdrDisableThreadCalloutsForDll
  LdrEnumResources
  LdrFindAppCompatVariableInfo
  LdrFindEntryForAddress
  EnumResourceTypesW
  LdrFindResourceDirectory_U
  FindResourceExA
  LdrFindResource_U
  LdrFlush*****nateResourceModules
  LdrGet*****nateResourceModuleHandle
  GetModuleHandleForUnicodeString
  LdrGetDllHandle
  GetProcAddress
  LdrGetProcedureAddress
  LdrInitializeThunk
  LoadLibraryEx (LOAD_LIBRARY_AS_DATAFILE)
  LdrLoad*****nateResourceModule
  LoadLibrary
  LdrLoadDll
  LdrProcessRelocationBlock
  LdrQueryApplicationCompatibilityGoo
  LdrQueryImageFileExecutionOptions
  LdrQueryProcessModuleInformation
  LdrRelocateImage
  ExitProcess
  LdrShutdownProcess
  ExitThread
  LdrShutdownThread
  LdrUnload*****nateResourceModule
  FreeLibrary
  LdrUnloadDll
  LdrVerifyImageMatchesChecksum
  LdrVerifyMappedImageMatchesChecksum
  6 Nls(National Language Support)系列   代码页管理
  NlsAnsiCodePage
  NlsMbCodePageTag
  NlsMbOemCodePageTag
  7 Nt系列 共285个,大部分都是kernel32.dl

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值