首页
社区
课程
招聘
[原创]OD中加载DLL出错时的处理方法
发表于: 2007-6-6 13:59 15166

[原创]OD中加载DLL出错时的处理方法

2007-6-6 13:59
15166

OD中加载DLL出错时的处理方法

对于在 OD 中加载 DLL 出错时,一般提示这样一个错误:“LOADDLL.EXE: Unable to load DLL”(有的是 DLL 找不到其它相应模块,提示其它错误,这里都类似)。这时可以采取这样的方法来找到出错位置:首先在 OD 中把“选项->事件->中断于新模块(DLL)”这个选上,重新加载原来出错的 DLL。这时 OD 会自动弹出模块窗口,方便进行观察。当看到加载的 DLL 是 msvcrt.dll 时,这时就可以进行处理了。有几种情况:

1、按 ALT+F9,这时会断在所加载DLL的出错位置。
2、根据原出错 DLL 的入口点,加上基址,CTR+G 转到相应位置,F4运行到相应的地方(如某个 DLL 的 OEP 是 000B1036,基址是 10000000,则在 OD 加载 msvcrt.dll 时,CTR+G 到地址 100B1036 处,F4 运行到这里),这时我们就断在 DLL 的入口处,现在可以自行分析出错原因了。
3、如果在 OD 加载 msvcrt.dll 后,出错的 DLL 能载入到内存中,则可以通过按 ALT+M 打开内存,在 DLL 的代码段上按 F2 设内存访问断点到达相应位置。

小结:

1、通过在 OD 中选中“选项->事件->中断于新模块(DLL)”,再观察加载的 DLL 是 msvcrt.dll 时,这时是处理我们要加载 DLL 的好时机。
2、如果断到出错 DLL 中的代码处,可以根据堆栈来辅助分析出错原因。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (3)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
我有点分不清楚是ANTI还是OD本身没有处理某些异常。
我试过几次,调试软件的时候,用OD调出错了,但是用WINDBG就完全没有问题
2007-6-6 14:45
0
雪    币: 2506
活跃值: (1030)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
3
我这里是指用OD单独加载一个DLL文件,跟你所说的情况应该不同。
2007-6-6 15:46
0
雪    币: 72
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
"根据原出错  DLL  的入口点,加上基址,CTR+G  转到相应位置"  ,还没有加载,这个基址是如何获知的?
2018-1-29 16:53
0
游客
登录 | 注册 方可回帖
返回
//