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

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

2021-2-27 11:46
30497

修复了以下问题:

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)进行编译

 

【注意】WIN7下请自行确保已经安装好了最新系统补丁或者安装好了VS2017或2019。


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2022-6-12 23:48 被sonyps编辑 ,原因: 升级SDK
上传的附件:
收藏
点赞24
打赏
分享
打赏 + 2.00雪花
打赏次数 1 雪花 + 2.00
 
赞赏  kanxue   +2.00 2021/02/27 感谢分享~
最新回复 (55)
雪    币: 2863
活跃值: (1592)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chixiaojie 2021-2-27 12:28
2
0
很好。。
雪    币: 2863
活跃值: (1592)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chixiaojie 2021-2-27 12:29
3
0
大神给修复一下中文路径不能打开IDA的老毛病。
雪    币: 29414
活跃值: (18615)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2021-2-27 13:33
4
0
感谢分享!
雪    币: 2037
活跃值: (4081)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
默NJ 2021-2-27 14:22
5
0
感谢分享!
雪    币: 31821
活跃值: (7105)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ninebell 2021-2-27 14:48
6
1
大仙给修复下按N键 不能用中文重命名的问题。
雪    币: 11220
活跃值: (3968)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xie风腾 2021-2-27 17:11
7
0

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

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

最后于 2021-2-27 17:44 被sonyps编辑 ,原因:
雪    币: 3665
活跃值: (4051)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sonyps 2021-2-27 17:35
9
0
ninebell 大仙给修复下按N键 不能用中文重命名的问题。
WIN10下 将语言区域设置UTF8(BETA)试试
雪    币: 6289
活跃值: (3357)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
小菜鸟一 2021-2-28 08:29
10
0
chixiaojie 大神给修复一下中文路径不能打开IDA的老毛病。
送外卖也要用IDA的么
雪    币: 2863
活跃值: (1592)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chixiaojie 2021-2-28 09:22
11
0
小菜鸟一 送外卖也要用IDA的么
IDA指路,送外卖快人一步。
雪    币: 4759
活跃值: (4298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
~时光荏苒 2021-2-28 09:57
12
0
多谢分享~~ 
雪    币: 9952
活跃值: (2344)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tonylow 2021-3-1 10:13
13
0
点赞DIY精神
雪    币: 3665
活跃值: (4051)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sonyps 2021-3-24 01:24
14
0
SDK升级到7.6,因此修复了之前加载Mozilla Firefox及Google Chrome的某些符号文件时会报“Failed to calculate struct member alignments”的问题
雪    币: 60
活跃值: (881)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
wonderzdh 1 2021-3-24 10:24
15
0
谢谢楼主
雪    币: 1745
活跃值: (2661)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
稳拿第一 2021-3-24 10:36
16
0
感谢分享
雪    币: 3665
活跃值: (4051)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sonyps 2021-3-24 15:05
17
0
wonderzdh 谢谢楼主
雪    币: 63
活跃值: (433)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hemdacker 2021-3-25 10:19
18
0
这个是真的情怀
雪    币: 1854
活跃值: (1842)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xuezhimeng 2021-4-12 13:43
19
0
谢谢分享。高端
雪    币: 3350
活跃值: (3372)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
fengyunabc 1 2021-4-12 13:57
20
0
感谢分享!
雪    币: 2956
活跃值: (4826)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
舒默哦 1 2021-4-12 15:02
21
0
感谢,备用
雪    币: 238
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
隐世者 2021-6-16 14:47
22
0
感谢分享!
雪    币: 1475
活跃值: (3210)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小希希 2021-6-17 11:15
23
0
感谢分享
雪    币: 160
活跃值: (259)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
binsys 2021-6-19 19:53
24
0
发现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.
雪    币: 3665
活跃值: (4051)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sonyps 2021-6-19 20:05
25
0
binsys 发现PDB DIA 的一个缺陷,MSVC在在某种优化参数下,一个原为 __stdcall 的函数会被优化为使用 __fastcall,也就是ecx edx去传第一个第二个DWORD参数,但是提交给PD ...
get_registerId之类的函数或许可以用于判断参数及局部变量是否使用了某个寄存器吧。如果你说的问题真的存在,反馈给hexray官方等待下个版本修复或许更好。
游客
登录 | 注册 方可回帖
返回