明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1627|回复: 11

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

[复制链接]
发表于 2023-12-7 14:44 | 显示全部楼层 |阅读模式
本帖最后由 baitang36 于 2023-12-7 14:46 编辑

一般情况下,用appload或者直接拖拽一个arx文件到绘图区,arx文件就加载成功了。
如果用autollisp加载arx文件,用语句(arxload "abc.arx")
这个arxload函数是如何实现的呢?从内存中挖出来,它的代码是这样的:
00000000: 14 03 01 01 01
00000005: 64 02
00000007: 05 01
00000009: 29
00000010: 0d 07 00
00000013: 5f 00 2e 30 00 00
00000019: 0a
00000020: 05 00
00000022: 02
00000023: 51 01 a9 01 01 00 ;box
00000029: 51 02 9c 01 01 00 ;ads-arxload
00000035: 08 02
00000037: 05 02
00000039: 25 0c
00000041: 0d 1e 00
00000044: 05 01
00000046: 0d 04 00
00000049: 05 01
00000051: 28
00000052: 16
00000053: 09 b4 02 ;"VLMSG.DLL"
00000056: 33 b6 35 00 00
00000061: 51 02 b3 02 01 00 ;string-resource
00000067: 51 01 e2 02 01 00 ;_msg-err
00000073: 16
00000074: 05 02
00000076: 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@Z
arxload和ads-arxload都是在vl.arx中定义的,vl.arx是acad.exe加载的第一个arx程序,那它是怎么加载的?毕竟它在被加载之前无法自己加载自己。跟踪发现,答案是acad.exe直接调用了
?loadModule@AcRxImpDynamicLinker@@UAE_NPB_W_N1@Z这个函数。





评分

参与人数 1明经币 +1 金钱 +30 收起 理由
highflybird + 1 + 30 很给力!

查看全部评分

 楼主| 发表于 2023-12-8 11:11 | 显示全部楼层
e2002 发表于 2023-12-8 10:29
https://zhuanlan.zhihu.com/p/670913056

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

是的,电子管是我用了20多年的网名
发表于 2023-12-8 10:29 | 显示全部楼层
https://zhuanlan.zhihu.com/p/670913056

请问楼主,这个账号是你吧?昨天刚好看到。
发表于 2023-12-8 08:36 | 显示全部楼层
这只不过是acad自己的规则,然而,这又有何用呢?如何能创新呢?
发表于 2023-12-7 15:15 | 显示全部楼层
太牛了,感谢分享学习
发表于 2023-12-7 15:49 | 显示全部楼层
专业,感谢分享
发表于 2023-12-7 16:02 | 显示全部楼层
谢谢分享经验
发表于 2023-12-7 20:53 | 显示全部楼层
谢谢提供分享学习了
发表于 2023-12-8 00:11 | 显示全部楼层
大佬研究的东西太牛了~
发表于 2023-12-8 10:10 | 显示全部楼层
大佬研究的透彻,期待后续好工具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-7 18:10 , Processed in 0.286754 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表