首页
社区
课程
招聘
[下载]ntdllSDK的头文件和lib文件下载
发表于: 2008-8-11 10:09 14198

[下载]ntdllSDK的头文件和lib文件下载

2008-8-11 10:09
14198
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
笔记:为ntdll.dll创建移入库ntdll.lib
本来以为很简单的,结果费了一番周折,为了防止下次重蹈覆辙,记个笔记。
一开始的想法:
1、用impdef或dumpbin生成一个ntdll.dll的模块定义文件ntdll.def;
2、用lib /def:ntdll.def生成ntdll.lib;
3、按网上hacker给出的函数原形写个头文件ntdll.h.
结果编译时说无法链接_LdrLoadDll@16,看起来是__stdcall调用约定修饰名的原因,但是找不到办法将链接时的_LdrLoadDll@16转换到DLL实际输出的名称LdrLoadDll,查def文件格式时有EXPORTS部分的写法:
entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA]
以为可以用这种方法换名,于是改def文件:
LdrLoadDll@16=LdrLoadDll
重新生成ntdll.lib后程序编译通过,但是运行提示找不到_LdrLoadDll@16入口点,看来这次反过来了,移入库里我名称对了,但还是没对应到DLL实际输出的名称。

想不出办法了,所以到网上搜了一下,发觉原MS在DDK提供了一个ntdll.lib,汗!

最后不知道从哪看到一个说自己建一个dll工程ntdll,然后生成移入库,于是试了试,自己建一个纯win32 dll项目,加一个模块定义文件:
EXPORTS
LdrLoadDll
再在程序里写一个与ntdll.dll里LdrLoadDll原型一样的空函数,编译一下,得到一个ntdll.lib,用这个编译原来的程序,编译通过,运行,
也OK了,用dumpbin看一下生成的ntdll.lib,呵呵,居然它就是用的_LdrLoadDll@16这个名字,但它却能正确的定位ntdll.dll里的LdrLoadDll,搞不明白了,为什么,lib /def:ntdll.def生成的库就不行:(

这方法麻烦点,不过可行,就这样吧,MS的东西,搞不明白的太多了!
2008-8-11 10:11
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
这个库在用Native API时会用到吧。感谢分享!
2008-8-11 15:06
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
直接DDK里面复制一个就行了
2008-8-11 16:11
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
 我自己整理的这个,一直使用,感觉还可以,如果你发现少了哪个API可以手动加进去。lib是从DDK2003下提取的,我一直用Windows 2003,如果你的是Windows XP,不行的话可以换一个。需要的朋友可以下载:

http://bbs.pediy.com/attachment.php?attachmentid=17289&d=1219225831
2008-8-20 17:56
0
游客
登录 | 注册 方可回帖
返回
//