文档库 最新最全的文档下载
当前位置:文档库 › 去除 AutoCAD 教育版打印戳记

去除 AutoCAD 教育版打印戳记


去除 AutoCAD 教育版打印戳记 - [软件调试]

一年前从他人那里拷贝了一份图纸电子档,是DWG格式(AutoCAD文件),文件打开时提示“检测到教育版打印戳记”,没有理会,只是打印时会在图纸四周印上“由AUTODESK教育版产品制作”的戳记,不能通过设置来取消,但感觉没多大影响。

网上提供了几种方法去除该戳记,核心思想是格式转换,如转换成外部交换文件后再转回,或者转换成低版本的文件(如R14)再转回。

今日虽然比较忙,但仍乘着休息时间分析了一下。AutoCAD 2008通过“acdb17.dll”的输出函数“AcDbDatabase: isEMR”来判断是否存在教育版打印戳记,该函数代码如下:

62076CB0 > 8B41 04 mov eax, [ecx+4]
62076CB3 33C9 xor ecx, ecx
62076CB5 3988 24080000 cmp [eax+824], ecx
62076CBB 0F95C1 setne cl
62076CBE 8AC1 mov al, cl
62076CC0 C3 retn

即[eax+824]处的值,“1”为存在教育版戳记,“0”则不存在该戳记。暂没分析出如何直接从“DWG”文件取得该戳记,只对DLL文件作简单修改便可去除该戳记:

62076CB5 3988 24080000 cmp [eax+824], ecx
=>
62076CB5 8988 24080000 mov [eax+824], ecx

这时打开含教育版戳记的DWG文件,不会再提示,保存后便可去除该戳记了。

要注意的是,只是这样更改“acdb17.dll”文件是不可行的,自身会调用“isAnObjectDBXModule”来判断:

62035481 . 8B5424 08 mov edx, [esp+8]
62035485 . 52 push edx
62035486 . E8 45000000 call isAnObjectDBXModule
6203548B . 83C4 04 add esp, 4
6203548E . 83F8 01 cmp eax, 1
62035491 . 75 12 jnz short 620354A5

暂没空具体分析,只是作个简单修改:

62035491 . 75 12 jnz short 620354A5
=>
62035491 . 90 nop
62035492 . 90 nop

仅修改了三个字节,AutoCAD可以正常运行了,打开带教育版打印戳记的DWG文件再重新保存一下,就成功去除了该戳记,完事后再还原DLL文件。AutoCAD 2006使用的是“acdb16.dll”,稍有不同,但更改也很容易。

经测试,60Mb左右的“DWG”文件都能顺利去除教育版打印戳记。有机会再做个程序,如果一直改来改去也累。

[2009-05-18]
花了二个晚上,编了个修改“教育版打印戳记”的程序(内存补丁)。
下载地址:本地下载
简要说明:先运行AutoCAD,再运行“EduPlotStamp.exe”,应用所需功能,如选择了“强制去除教育版打印戳记”,此时再打开带该戳记的DWG文件不会有提示了,保存后也会去除该戳记标识。关闭AutoCAD后功能便自动失效。
测试环境:Windows XP SP3;AutoCAD 2006
[2009-05-19]
在AutoCAD 2008中文版下测试成功!

相关文档
相关文档 最新文档