首页
社区
课程
招聘
[求助]dll无法加载到基址
发表于: 2016-2-3 14:54 4495

[求助]dll无法加载到基址

2016-2-3 14:54
4495
matcom45下有个dll:ago4501.dll,正常用vc写个软件加载它是没问题的,但我在cad2008中LoadLibrary后发现加载失败,原因是入口函数start()出现内在访问错误,原因竟然是dll没有加载到基址ImageBase上,系统是win7 x64,之前一直都好好的,不知为什么最近一直有问题;
这家软件已经被人收购,不再会有人维护了,如果手动把它重定位,工程量巨大,当然牛人肯定会写运宏解决,可惜我不是。
我发现,它的基址是26D01000,即使cad在20000000-30000000段都没有内存占用,但加载它,GetLastError会返回0x3e6 〖998〗-内存分配访问无效。
应该是系统的问题,有没有人遇到过呢?

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
没有重定位表,不加载到基址是没办法的。要么不用Load函数,exe导入表塞入这个dll,一起来就先占用地址先
2016-2-3 15:48
0
雪    币: 12663
活跃值: (3172)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
行不通,改cad.exe是不可行的,特别是cad版本那么多,还有官方补丁后,本来做arx就是二次插件的。
2016-2-3 16:39
0
雪    币: 12663
活跃值: (3172)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
原来是系统保护的问题,原来一个月前有篇文章说把cad加到数据执行保护里,会更加稳定


那我再问一下,能不能为数据[26F08830]增加重定位,比如这句
ida中:
26D01000 A1 30 88 F0 26                       mov     eax, dwTlsIndex
基址26D00000
在od中:
13131000 >  A1 3088F026     mov     eax, dword ptr [26F08830]
基址13130000

下了个iat重建工具,好像只能为导入函数重定位
上传的附件:
2016-2-5 09:49
0
雪    币: 12663
活跃值: (3172)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
bcdedit.exe /set {current} nx optin
设置成“仅为基本Windows程序和服务启用DEP”,也不行,看来系统乱了。
2016-2-5 16:57
0
雪    币: 12663
活跃值: (3172)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
暂时的解决办法:把cad.exe复制为cadnew.exe,用cadnew启动
2016-2-15 08:31
0
游客
登录 | 注册 方可回帖
返回