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

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

本帖最后由 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++写的。它的代码反汇编一下是这样的:https://pic4.zhimg.com/80/v2-4905c54c452f958d99ed62ecad435253_720w.webp可以看出,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这个函数。




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

e2002 发表于 2023-12-8 10:29
https://zhuanlan.zhihu.com/p/670913056

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

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

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

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

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

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

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

不一样地设计 发表于 2023-12-7 15:15:04

太牛了,感谢分享学习

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

专业,感谢分享

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

谢谢分享经验

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

太牛了

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

谢谢提供分享学习了

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

大佬研究的东西太牛了~

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

不明觉厉!

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

大佬研究的透彻,期待后续好工具
页: [1] 2
查看完整版本: 【原创】AutoCAD中的arx文件是如何加载的