驱动小牛
|
阅读:1870回复:8
wowocock,Mjjj,V大等诸老大们来瞧下从Ntdll中导出Native API的问题,郁闷了..
pBaseAddr = GetLibraryBase("ntdll.dll");
if ( pBaseAddr == NULL) { DbgPrint(" GetLibraryBase(ntdll.dll) Fail\n"); } else { DbgPrint(" (ntdll.dll) BASE %x\n",pBaseAddr ); (//打印: BASE 7c920000 PNtOpenProcess = (NNtOpenProcess)GetFuncFromDLL( pBaseAddr , "NtOpenProcess"); DbgPrint("NtOpenProcess %x\n",PNtOpenProcess); //此处是7c92dd7b DbgPrint("Memory NtOpenProcess %x\n",NtOpenProcess); //打印 805cb987 } 为啥得到的不一样呢?我是用NtQuerySystemInformation得到的ntdll.dll在内存中的地址. |
驱动小牛
|
沙发#
发布于:2007-03-20 18:47
等.
|
板凳#
发布于:2007-03-20 20:41
你打印的两个不一样~
一个是Ntos文件的NtOpenProcess地址 一个是NTDLL的地址 两者区别大了~ |
|
|
驱动小牛
|
地板#
发布于:2007-03-21 09:06
V大,为啥我跳到ntdll的NtOpenProcess去执行时,就直接蓝屏了呢?
|
地下室#
发布于:2007-03-21 09:16
引用第3楼wangjianfeng于2007-03-21 09:06发表的“”: ring0和ring3的某些如DS,FS指向不同,保证兰~ |
|
|
驱动小牛
|
5楼#
发布于:2007-03-21 16:01
收到,看来不能跳到 ntdll.dll 中去执行...
|
驱动小牛
|
6楼#
发布于:2007-03-21 16:02
多谢V大,对于没有在NTOSKRNL中导出的函数,我用啥办法搜索呢???难道申请块内存,逐字节查找?听说有个SSDTShadow不知放在哪里.
|
7楼#
发布于:2007-03-21 16:25
引用第6楼wangjianfeng于2007-03-21 16:02发表的“”: ntdll里得到ssdt号码,查找ssdt得到地址自己构造函数来用~或者使用sysentry自己调用~ SSDTShadow一般不好找~ 根据特征码可以搜索,区分一下Win2003和2k系统~ Vista还要更特殊的说~ |
|
|
驱动小牛
|
8楼#
发布于:2007-03-22 10:07
真够难的,多谢V大一直帮忙.
|