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


SDK:

$>tilib64.exe -c -h"C:\Program Files (x86)\Windows Kits\Include.0.17134.0\um\Windows.h" abc.til
Error C:\Program Files (x86)\Windows Kits\Include.0.17134.0\um\Windows.h,1: Can't open include file 'winapifamily.h'



DDK:

$>tilib64.exe -c -h"C:\Program Files (x86)\Windows Kits\Include.0.17134.0\km\wdm.h" abc.til
Error C:\Program Files (x86)\Windows Kits\Include.0.17134.0\km\wdm.h,38: #error: Compiler version not supported by Windows DDK


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

评论

您可以将Windows SDK / DDK标头导入IDA视图->打开子视图->类型库,类似问题reverseengineering.stackexchange.com/questions/13175/…

最新版本的IDA viz 7.1确实具有ucrt 16299的类型库。“ FLIRT:vc / vc64:添加了ucrt 16299的签名(Windows 10 Fall Creators Update SDK)”

readme.txt中的tilib引用:“如果输入文件使用另一个头文件(例如windows.h),则可以选择使用vc6win.til文件,而不是再次对其进行解析。为此,只需使用-b开关并将vc6win.til指定为基本til.TILIB会将指定文件的内容加载到内存中并解析输入文件。windows.h中的所有定义(包括预处理器定义)将可用: bbase_til_file output_til_file“或只是获取标头并删除所有tilib抱怨的内容。

对于DDK,您可以尝试使用pdb加载ntoskrnl.exe。那应该给您很多类型,然后您应该能够在反转驱动程序的同时导出和使用。

#1 楼


要求:在这里,我使用了IDA SDK的tilb64.exe来制作64位类型库。 IDA安装文件夹是E:\IDA70以及Windows 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\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\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




注意:include文件夹(带有-I选项)将来可能会更改。通过在相应的头文件中判断条件-D来添加定义(带有#define选项)。添加更多定义,直到您满意为止。但是,头文件中存在许多语法错误,这些错误已被-e选项抑制。只能通过编辑每个头文件来删除这些文件,但这更加耗时且乏味。


评论


另外-Cc1表示编译器ID为1(Visual C ++)-来自tilib -C?。

–user202729
18-09-22在12:00