查看: 6456|回复: 11

【原创】AutoCAD中的arx文件是如何加载的

[复制链接]

baitang36

baitang36

当前离线

积分41618

明经币 个

注册时间2013-8-16

在线时间 小时

威望

金钱 个

贡献

激情

电梯直达

楼主

发表于 2023-12-7 14:44:53

|

只看该作者

|倒序浏览

|阅读模式

本帖最后由 baitang36 于 2023-12-7 14:46 编辑

一般情况下,用appload或者直接拖拽一个arx文件到绘图区,arx文件就加载成功了。如果用autollisp加载arx文件,用语句(arxload "abc.arx")这个arxload函数是如何实现的呢?从内存中挖出来,它的代码是这样的:00000000: 14 03 01 01 0100000005: 64 0200000007: 05 0100000009: 2900000010: 0d 07 0000000013: 5f 00 2e 30 00 0000000019: 0a00000020: 05 0000000022: 0200000023: 51 01 a9 01 01 00 ;box00000029: 51 02 9c 01 01 00 ;ads-arxload00000035: 08 0200000037: 05 0200000039: 25 0c00000041: 0d 1e 0000000044: 05 0100000046: 0d 04 0000000049: 05 0100000051: 2800000052: 1600000053: 09 b4 02 ;"VLMSG.DLL"00000056: 33 b6 35 00 0000000061: 51 02 b3 02 01 00 ;string-resource00000067: 51 01 e2 02 01 00 ;_msg-err00000073: 1600000074: 05 0200000076: 16可以看出,它调用了一个函数ads-arxload,这是个没有公开的内部保留函数,它是用c++写的。它的代码反汇编一下是这样的:可以看出,ads-arxload这个函数又调用了acedArxLoad这个函数,它是acad.exe定义的继续找acedArxLoad的代码,发现它调用了一个acdb17.dll中的一个函数(版本不同文件名不同在acad2008中是acdb17.dll)?loadModule@AcRxImpDynamicLinker@@UAE_NPB_W_N1@Z它是 public: virtual bool __thiscall AcRxImpDynamicLinker::loadModule(wchar_t const *, bool, bool)结论:arx文件的加载过程是;arxload==>ads-arxload==>acedArxLoad==>?loadModule@AcRxImpDynamicLinker@@UAE_NPB_W_N1@Zarxload和ads-arxload都是在vl.arx中定义的,vl.arx是acad.exe加载的第一个arx程序,那它是怎么加载的?毕竟它在被加载之前无法自己加载自己。跟踪发现,答案是acad.exe直接调用了?loadModule@AcRxImpDynamicLinker@@UAE_NPB_W_N1@Z这个函数。

评分

参与人数 1明经币 +1

金钱 +30

收起

理由

highflybird

+ 1

+ 30

很给力!

查看全部评分

分享到:

QQ好友和群

QQ空间

收藏1

分享

淘帖0

赞0

弹0

回复

使用道具

举报

置顶卡

变色卡

显身卡

baitang36

baitang36

当前离线

积分41618

明经币 个

注册时间2013-8-16

在线时间 小时

威望

金钱 个

贡献

激情

推荐

楼主|

发表于 2023-12-8 11:11:34

|

只看该作者

e2002 发表于 2023-12-8 10:29

https://zhuanlan.zhihu.com/p/670913056

请问楼主,这个账号是你吧?昨天刚好看到。

是的,电子管是我用了20多年的网名

回复

支持

反对

使用道具

举报

显身卡

e2002

e2002

当前离线

积分28611

明经币 个

注册时间2002-2-15

在线时间 小时

威望

金钱 个

贡献

激情

推荐

发表于 2023-12-8 10:29:11

|

只看该作者

https://zhuanlan.zhihu.com/p/670913056

请问楼主,这个账号是你吧?昨天刚好看到。

回复

支持

反对

使用道具

举报

显身卡

wyqzm

wyqzm

当前离线

积分9319

明经币 个

注册时间2005-4-9

在线时间 小时

威望

金钱 个

贡献

激情

推荐

发表于 2023-12-8 08:36:00

|

只看该作者

这只不过是acad自己的规则,然而,这又有何用呢?如何能创新呢?

回复

支持

反对

使用道具

举报

显身卡

不一样地设计

不一样地设计

当前离线

积分9753

明经币 个

注册时间2014-3-23

在线时间 小时

威望

金钱 个

贡献

激情

沙发

发表于 2023-12-7 15:15:04

|

只看该作者

太牛了,感谢分享学习

回复

支持

反对

使用道具

举报

显身卡

loveu515

loveu515

当前离线

积分7375

明经币 个

注册时间2022-6-14

在线时间 小时

威望

金钱 个

贡献

激情

板凳

发表于 2023-12-7 15:49:34

|

只看该作者

专业,感谢分享

回复

支持

反对

使用道具

举报

显身卡

wangsr

wangsr

当前离线

积分8110

明经币 个

注册时间2023-10-23

在线时间 小时

威望

金钱 个

贡献

激情

地板

发表于 2023-12-7 16:02:01

|

只看该作者

谢谢分享经验

回复

支持

反对

使用道具

举报

显身卡

xfjiamy

xfjiamy

当前离线

积分948

明经币 个

注册时间2008-10-13

在线时间 小时

威望

金钱 个

贡献

激情

5#

发表于 2023-12-7 16:10:27

|

只看该作者

太牛了

回复

使用道具

举报

显身卡

qincccken

qincccken

当前离线

积分998

明经币 个

注册时间2004-11-10

在线时间 小时

威望

金钱 个

贡献

激情

6#

发表于 2023-12-7 20:53:40

|

只看该作者

谢谢提供分享学习了

回复

支持

反对

使用道具

举报

显身卡

magicheno

magicheno

当前离线

积分9688

明经币 个

注册时间2019-6-5

在线时间 小时

威望

金钱 个

贡献

激情

7#

发表于 2023-12-8 00:11:31

|

只看该作者

大佬研究的东西太牛了~

回复

支持

反对

使用道具

举报

显身卡

Bao_lai

Bao_lai

当前离线

积分17701

明经币 个

注册时间2016-10-21

在线时间 小时

威望

金钱 个

贡献

激情

8#

发表于 2023-12-8 08:26:38

来自手机

|

只看该作者

不明觉厉!

回复

使用道具

举报

显身卡

szhorse

szhorse

当前离线

积分11177

明经币 个

注册时间2011-6-9

在线时间 小时

威望

金钱 个

贡献

激情

10#

发表于 2023-12-8 10:10:28

|

只看该作者

大佬研究的透彻,期待后续好工具

回复

支持

反对

使用道具

举报

显身卡

还有一些帖子被系统自动隐藏,点此展开