如何从 Windows 10 SDK 和 DDK 制作类型库?

逆向工程 艾达 视窗
2021-06-24 22:32:04

我想从 Windows 10 SDK 和 DDK 版本 16299 和/或 17134制作类型库我看到了本教程TILIB - 为 IDA 创建类型库的实用程序然后我从IDA 支持:下载中心下载它并将它放在 IDA 安装文件夹 ie 中C:\program files\ida我尝试了 SDK 和 DDK,但都失败了。以下是输出:

  • 开发工具包:
$>tilib64.exe -c -h"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\um\Windows.h" abc.til
Error C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\um\Windows.h,1: Can't open include file 'winapifamily.h'
  • 开发工具包:
$>tilib64.exe -c -h"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\km\wdm.h" abc.til
Error C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\km\wdm.h,38: #error: Compiler version not supported by Windows DDK

我做错了什么吗?我应该添加其他头文件和 lib 文件吗?为 Windows 10 制作类型库的正确方法是什么?

1个回答
  • 要求:这里我使用tilb64.exe了 IDA SDK 来制作 64 位类型库。IDA 安装文件夹是E:\IDA70Windows SDK 和 DDK 版本 10.0.17134.0。

  • 使用的选项:以下两个批处理文件是:一个用于 SDK,一个用于 DDK。将代码复制到 .bat 或 .cmd 文件中。编辑 IDA 和 SDK/DDK 的必要路径。

-c     create til-file
-h...  parse .h file
-D...  define a symbol
-I...  list of include directories
-e     ignore errors

Windows.h 头文件:

@echo off
cls
set ver=10.0.17134.0
set folder=%ProgramFiles(x86)%\Windows Kits\10\Include\%ver%
E:\IDA70\tilib64.exe -c ^
-Cc1 ^
-D_MSC_VER=1914 ^
-D_MSC_FULL_VER=191426433 ^
-D_WIN32_WINNT=0x0A00 ^
-DNTDDI_VERSION=WDK_NTDDI_VERSION ^
-DWDK_NTDDI_VERSION=NTDDI_WIN10_RS4 ^
-DNTDDI_WIN10_RS4=0x0A000005 ^
-D_WIN32 ^
-D_AMD64_ ^
-D_M_AMD64 ^
-D_inline=inline ^
-D__inline=inline ^
-D__forceinline=inline ^
-Dbool=uint8_t ^
-DSIZE_T=size_t ^
-DPSIZE_T=size_t* ^
-h"%folder%\um\Windows.h" ^
-I"%folder%\cppwinrt\winrt" ^
-I"%folder%\km" ^
-I"%folder%\km\crt" ^
-I"%folder%\shared" ^
-I"%folder%\ucrt" ^
-I"%folder%\um" ^
-I"%folder%\winrt" ^
-e ^
Windows_17134.til

ntddk.h 头文件:

@echo off
cls
set ver=10.0.17134.0
set folder=%ProgramFiles(x86)%\Windows Kits\10\Include\%ver%
E:\IDA70\tilib64.exe -c ^
-Cc1 ^
-D_MSC_VER=1914 ^
-D_MSC_FULL_VER=191426433 ^
-D_WIN32_WINNT=0x0A00 ^
-DNTDDI_VERSION=WDK_NTDDI_VERSION ^
-DWDK_NTDDI_VERSION=NTDDI_WIN10_RS4 ^
-DNTDDI_WIN10_RS4=0x0A000005 ^
-D_WIN32 ^
-D_AMD64_ ^
-D_M_AMD64 ^
-D_inline=inline ^
-D__inline=inline ^
-D__forceinline=inline ^
-D__volatile=volatile ^
-Dbool=uint8_t ^
-DRC_INVOKED ^
-D_INC_STRING ^
-h"%folder%\km\ntddk.h" ^
-I"%folder%\cppwinrt\winrt" ^
-I"%folder%\km" ^
-I"%folder%\km\crt" ^
-I"%folder%\shared" ^
-I"%folder%\ucrt" ^
-I"%folder%\um" ^
-I"%folder%\winrt" ^
-e ^
ntddk_17134.til
  • 注意:包含文件夹(带-I选项)将来可能会更改。-D通过判断#define相应头文件中的条件来添加定义(带选项)添加更多定义,直到您满意为止。但是头文件中有很多语法错误被-e选项抑制了那些只能通过编辑每个头文件来删除,但这更耗时和乏味。