首页
社区
课程
招聘
[原创]【20220612更新】IDA7.7SP1 PDB插件修复增强
发表于: 2021-2-27 11:46 33243

[原创]【20220612更新】IDA7.7SP1 PDB插件修复增强

2021-2-27 11:46
33243

1.pdb所在路径包含了中文或者Unicode特殊字符,IDA会无法自动打开该pdb。
如下图所示:
图片描述
2.VS2015及以上生成的某些带PDB的发布版的程序,使用IDA打开会报错并崩溃,即使切换到PDB_PROVIDER_MSDIA也依然报错崩溃。
如下图(切换到PDB_PROVIDER_MSDIA前):
图片描述
如下图(切换到PDB_PROVIDER_MSDIA后):
图片描述
切换后依然崩溃是因为IDA目前最高只能使用VS2008的MSDIA动态链接库,即图中红色圈出来的"C:\Program Files\Common Files\Microsoft Shared\VC\msdia90.dll",而这个版本的库太老了,并不能保证完美兼容后面版本的VC生成的各种PDB文件。切换前报错是因为IDA的BUG,对PDB文件的解析并不完美。
3.VS2015及之后版本中使用/DEBUG:FASTLINK(也即Partial PDB)链接的程序无法识别显示用户定义的类型变量。
图片描述
注意:从VS2017开始调试版默认的/DEBUG就是/DEBUG:FASTLINK了。
安装本修复增强插件后的效果图:
图片描述
4.修复了无法下载压缩格式的PDB的文件的问题
如Mozilla Firefox的PDB文件都是压缩格式的,IDA当前最新版本安装本修复插件前下载会报错。

1.在安装了Internet Download Manager(以下简称IDM)的机器上支持自动调用IDM进行多线程高速下载PDB
2.使用MSDIA内建下载时(通过symsrv.dll)也支持了显示下载进度百分比。
3.使用MSDIA内建下载时(通过symsrv.dll)也支持了立刻取消下载。

源代码开源在:https://github.com/sonyps5201314/pdb
如果坛里有正版用户,可以将代码发送给官方,希望官方能吸纳进去,那样就免得用户手动去修复了,省去了麻烦。
编译好的程序在附件,用户也可以自己编译源码。
使用方法是:解压压缩包中的几个文件到你的IDA7.5 SP3的根目录。注意解压会替换掉插件plugins目录下的pdb.dll和pdb64.dll。建议先将这两个原始文件压缩备份好。

【20210228】修复了不支持识别显示函数内部的局部变量的问题
【20210324】SDK升级到7.6,因此修复了之前加载Mozilla Firefox及Google Chrome的某些符号文件时会报“Failed to calculate struct member alignments”的问题
【20210516】修复在没安装VS2017或者VS2019的机器上可能导致无法加载pdb文件的问题
【20210526】修复一个会导致无法调用起IDM进行下载的问题
【20210803】使用IDA7.6的SDK进行编译,因此支持了IDA7.6SP1
【20210828】修复_NT_SYMBOL_PATH中指定了多个符号服务器地址时,下载符号文件完成后可能会卡一段时间的问题
【20210926】修复附加到进程调试时会导致卡一段时间的问题
【20220207】使用IDA7.7 SP1的SDK进行编译,因此支持了IDA7.7SP1
【20220612】使用IDA7.7 SP1最新的SDK(20220218)进行编译


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-6-12 23:48 被sonyps编辑 ,原因: 升级SDK
上传的附件:
收藏
免费 28
支持
分享
打赏 + 2.00雪花
打赏次数 1 雪花 + 2.00
 
赞赏  kanxue   +2.00 2021/02/27 感谢分享~
最新回复 (57)
雪    币: 3277
活跃值: (1992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
很好。。
2021-2-27 12:28
0
雪    币: 3277
活跃值: (1992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大神给修复一下中文路径不能打开IDA的老毛病。
2021-2-27 12:29
0
雪    币: 47147
活跃值: (20445)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
感谢分享!
2021-2-27 13:33
0
雪    币: 2466
活跃值: (4561)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享!
2021-2-27 14:22
0
雪    币: 35726
活跃值: (7155)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
大仙给修复下按N键 不能用中文重命名的问题。
2021-2-27 14:48
1
雪    币: 12332
活跃值: (5103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

多谢 楼主分享哟
2021-2-27 17:11
0
雪    币: 4516
活跃值: (5144)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
chixiaojie大神给修复一下中文路径不能打开IDA的老毛病。

MKLINK /D 虚假的英文路径 实际保存的中文路径 试试。 或者WIN10下 将语言区域设置UTF8(BETA)试试

最后于 2021-2-27 17:44 被sonyps编辑 ,原因:
2021-2-27 17:33
0
雪    币: 4516
活跃值: (5144)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
ninebell 大仙给修复下按N键 不能用中文重命名的问题。
WIN10下 将语言区域设置UTF8(BETA)试试
2021-2-27 17:35
0
雪    币: 1131
活跃值: (4202)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
10
chixiaojie 大神给修复一下中文路径不能打开IDA的老毛病。
送外卖也要用IDA的么
2021-2-28 08:29
0
雪    币: 3277
活跃值: (1992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
小菜鸟一 送外卖也要用IDA的么
IDA指路,送外卖快人一步。
2021-2-28 09:22
0
雪    币: 5291
活跃值: (4768)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
多谢分享~~ 
2021-2-28 09:57
0
雪    币: 10633
活跃值: (3009)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
点赞DIY精神
2021-3-1 10:13
0
雪    币: 4516
活跃值: (5144)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
14
SDK升级到7.6,因此修复了之前加载Mozilla Firefox及Google Chrome的某些符号文件时会报“Failed to calculate struct member alignments”的问题
2021-3-24 01:24
0
雪    币: 62
活跃值: (971)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
谢谢楼主
2021-3-24 10:24
0
雪    币: 1860
活跃值: (3146)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
感谢分享
2021-3-24 10:36
0
雪    币: 4516
活跃值: (5144)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
17
wonderzdh 谢谢楼主
2021-3-24 15:05
0
雪    币: 43
活跃值: (483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
这个是真的情怀
2021-3-25 10:19
0
雪    币: 2821
活跃值: (2836)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
谢谢分享。高端
2021-4-12 13:43
0
雪    币: 3738
活跃值: (3872)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
感谢分享!
2021-4-12 13:57
0
雪    币: 2980
活跃值: (4891)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
21
感谢,备用
2021-4-12 15:02
0
雪    币: 238
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
感谢分享!
2021-6-16 14:47
0
雪    币: 1810
活跃值: (4020)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
感谢分享
2021-6-17 11:15
0
雪    币: 158
活跃值: (384)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
发现PDB DIA 的一个缺陷,MSVC在在某种优化参数下,一个原为 __stdcall 的函数会被优化为使用 __fastcall,也就是ecx edx去传第一个第二个DWORD参数,但是提交给PDB的公共符号名称前缀丢失了规范的@字符,导致 undecoratedName 时获取的信息无 @前缀,就判断成了 __stdcall。
F5时会发现原本6个参数变成了4个。
目前发现此情况经常出现在 比如 bootmgr.exe 这种文件里。
我翻了DIA SDK,发现无法从DIA SDK的API里拿到一个函数是否被用了此优化。除非进行CFG分析,当函数是stdcall时,判断caller 入栈大小是否和【_func@8】@后这个数字相等,不相等就判断为fastcall.
2021-6-19 19:53
0
雪    币: 4516
活跃值: (5144)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
25
binsys 发现PDB DIA 的一个缺陷,MSVC在在某种优化参数下,一个原为 __stdcall 的函数会被优化为使用 __fastcall,也就是ecx edx去传第一个第二个DWORD参数,但是提交给PD ...
get_registerId之类的函数或许可以用于判断参数及局部变量是否使用了某个寄存器吧。如果你说的问题真的存在,反馈给hexray官方等待下个版本修复或许更好。
2021-6-19 20:05
0
游客
登录 | 注册 方可回帖
返回
//