WinVerifyTrust 是一个用于验证签名的API, 官方文档地址:
a74K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8$3y4K6i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3k6h3&6Q4x3X3c8#2M7#2)9J5c8Y4N6A6L8X3c8G2N6%4y4Q4x3V1k6%4K9h3^5K6x3W2)9J5c8X3q4H3K9g2)9J5c8Y4N6A6L8Y4c8J5N6i4y4@1i4K6u0r3L8X3k6Q4x3X3c8%4K9h3&6@1M7Y4g2K6N6q4)9J5k6s2N6A6L8Y4k6W2M7X3W2X3P5i4c8J5N6i4y4@1
ReactOS是个好东西,直接看源码吧:
4caK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6J5k6h3q4U0N6r3!0K6i4K6u0r3M7X3g2S2j5%4c8G2M7#2)9J5c8X3u0D9L8$3u0Q4x3V1k6V1x3U0V1$3j5X3u0W2j5X3u0W2k6U0l9%4k6e0q4S2z5h3g2S2j5U0M7&6k6r3b7$3k6U0f1H3x3$3f1J5x3r3b7K6z5r3k6V1k6h3g2T1i4K6u0r3k6r3I4D9i4K6u0r3N6$3W2F1x3K6u0Q4x3V1k6%4K9h3&6@1M7Y4g2K6N6q4)9J5c8Y4N6A6L8Y4c8J5N6i4y4@1i4K6g2X3L8h3q4A6L8W2)9J5k6h3x3`.
后面的内容可以忽略。
官方只给了WinVerifyTrust API 的定义, 但内部实现并没有描述, 我们可以通过IDA看一下它的伪代码
WinVerifyTrust 在 wintrust.dll 中, windows路径为:
直接用IDA去看, 很多函数都没有名字, 有必要先把pdb文件下载好(我下的是32位dll的pdb文件)
下载pdb文件的过程比较曲折, 描述一下:
如果第3步下载成功了, 可以根据下方日志显示的本地位置拿到pdb文件, 如果没有下载成功, 也可以根据日志的下载链接手动下载. 我这里没有下载成功, 日志中的链接为:
a2dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7$3c8D9i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0%4L8X3I4G2j5h3c8Q4x3V1k6K6P5h3#2T1L8$3I4K6i4K6u0r3N6$3W2F1N6s2u0#2M7%4c8Q4x3X3g2H3k6r3u0Q4x3V1k6p5y4o6t1$3x3@1b7I4c8p5u0q4b7K6y4n7x3p5q4o6x3V1b7$3b7U0l9K6b7V1g2r3b7K6R3H3x3U0m8o6y4e0q4Q4x3V1k6%4K9h3&6@1M7Y4g2K6N6q4)9J5k6i4m8V1j5R3`.`.
自己下载就可以了
用IDA打开wintrust.dll, 然后手动load下载好的wintrust.pdb, 接着IDA的F5大法, 就可以愉快地看伪代码了
如果想要调试怎么办?
微软的SysinternalsSuite工具集中有一个sigcheck.exe, 主功能就是调用WinVerifyTrust API实现的, 所以可以调试它
这样就可以调试了, 上面的pdb文件如果是手动下载的, 可以复制到日志显示的对应本地位置, 调试就很方便了
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
最后于 2020-5-13 13:15
被qux编辑
,原因: ReactOS可以直接看源码,逻辑应该基本一致