首页
论坛
课程
招聘
[旧帖] [原创]AutoCAD教育版打印戳记破解日记 0.00元
2010-5-13 00:01 5267

[旧帖] [原创]AutoCAD教育版打印戳记破解日记 0.00元

2010-5-13 00:01
5267

  经常用AutoCAD的朋友可能遇到过“AutoCAD教育版打印戳记”的问题,虽然不会有大的影响,频繁出现的警告窗口和出图时加上的戳记,还是让人有些烦。网上有很多有关“去除AutoCAD教育版打印戳记”的网页,其原理基本上都是通过转换为DXF格式,再转换为DWG文件而实现的。
  通过跟踪AutoCAD的运行,找到直接破解的方法。破解的过程如下(以WinXP、AutoCAD2007英文版为例):
  1、打开一个带有“教育版打印戳记”的DWG文件,AutoCAD会出现教育版的警告窗口(如图一所示)。此时,不要先作出任何选择。

  2、打开Ollydbg,“附加”到AutoCAD,然后“查看\窗口”中打到“AutoCAD Alert”,在右键菜单中选择“跟随ClassProc”(如图二所示)。

  3、在“堆栈”窗口中,从底部往上查找到第一个“Educational plot stamp detected...”(即警告窗口中的内容,如图三所示),并由此找到调用显示警告窗口的函数(此处需返回的地址即为调用函数的下一行)。

  4、在“反汇编窗口中跟随”此函数(如图四所示),可看到反汇编结果(如图五所示)。



   0045FE76  |.  E8 97546500   CALL <JMP.&acdb17.?isEMR@AcDbDatabase@@QBE_NXZ>
   0045FE7B  |.  84C0          TEST AL,AL
   0045FE7D  |.  74 51         JE SHORT acad.0045FED0
   0045FE7F  |.  8D4C24 50     LEA ECX,DWORD PTR SS:[ESP+50]
   0045FE83  |.  FF15 3CB7B600 CALL DWORD PTR DS:[<&MFC80U.#293>]                 ;  MFC80U.78305C6D
   0045FE89  |.  50            PUSH EAX
   0045FE8A  |.  68 914E0000   PUSH 4E91
   0045FE8F  |.  C68424 341500>MOV BYTE PTR SS:[ESP+1534],8
   0045FE97  |.  E8 44012F00   CALL acad.0074FFE0
   0045FE9C  |.  66:0FB6D0     MOVZX DX,AL
  5、由0045FE9C向前查看,在0045FE7D处找到第一个条件跳转指令,测试指令前刚好有一个CALL指令。于是,大胆推测acdb17.?isEMR@AcDbDatabase@@QBE_NXZ(简记为isEMR)就是判断DWG文件中是否含有“教育版打印戳记”的函数。
  6、先分析一下这段代码,由TEST和JE指令可知,函数isEMR的返回值存放在AL中,AL=0则跳转,不显示警告窗口(即无打印戳记);AL≠0则显示警告窗口(即有打印戳记)。
  7、“跟随”进入函数isEMR,代码如下:
   64567730 >  8B41 04         MOV EAX,DWORD PTR DS:[ECX+4]
   64567733    33C9            XOR ECX,ECX
   64567735    3988 DC070000   CMP DWORD PTR DS:[EAX+7DC],ECX
   6456773B    0F95C1          SETNE CL
   6456773E    8AC1            MOV AL,CL
   64567740    C3              RETN
  8、由CMP指令可知,[EAX+7DC]的值是否为0,代表了文件中是否有打印戳记。为了验证上面的猜想,下面将进行一些测试。
  9、由于AutoCAD已运行至显示警告窗口,需要在Ollydbg中重新载入AutoCAD。为了对比,先在Ollydbg中直接运行,注意其结果;然后再重新载入AutoCAD,在“可执行模块\acdb17.dll”中定位至地址6456773E处,将“MOV AL,CL”改为“MOV AL,1”后运行。比较两次运行的结果:第一次运行时,AutoCAD新建一个未命名的DWG文件,没有弹出教育版的警告窗口;第二次运行时,多了教育版的警告窗口(如图一所示)。由此可见,上面的猜测得到了部分的验证。
  10、为什么是部分验证呢?因为刚才的测试,只是通过修改函数isEMR,将全部DWG文件(无论有还是没有打印戳记)都认为是有打印戳记的。而我们的目标确刚好相反,那么将“MOV AL,CL”改为“MOV AL,0”后再试一试呢?结果程序在打开文件的过程中就发生异常了,什么原因?由于我也是菜鸟,不知道!望有高手指点!有兴趣的朋友可以来共同探讨这个问题!

[公告]请完善个人简历信息,好工作来找你!

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (5)
雪    币: 94
活跃值: 活跃值 (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tengte 活跃值 2010-5-14 12:16
2
0
没有人支持呀!自己顶一下!
雪    币: 268
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GUX 活跃值 2010-5-14 12:27
3
0
我菜鸟来支持一下, 但是回答不了你问题, 抱歉
雪    币: 94
活跃值: 活跃值 (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tengte 活跃值 2010-5-20 00:07
4
0
邀请码已收到,多谢版主支持!
雪    币: 94
活跃值: 活跃值 (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tengte 活跃值 2010-6-1 23:35
5
0
  (续)经过进一步的研究,最终完全完成了此任务。
  11、将“MOV AL,CL”改为“MOV AL,0”,然后在此行击右键,选择“复制到可执行文件\所有修改\全部复制”(如图六所示),在新窗口中击右键,选择“保存文件”(如图七所示),把修改保存到acdb17.dll。


  12、在Ollydbg中重新载入AutoCAD并运行,结果出现错误(如图八所示)。由此推测,软件中有保护措施。如何破解呢?后面的操作前述的类似,具体过程如下。

  13、“查看\窗口”中找到“Fatal Error”,在右键菜单中选择“跟随ClassProc”。在“堆栈”窗口中,从底部往上查找到第一个“DBX CAS 0”(即警告窗口中的内容),并由此找到调用显示警告窗口的函数(此处需返回的地址即为调用函数的下一行)。
   0012FC58   0012FC64  UNICODE "DBX CAS 0"
   0012FC5C   64B3B334  UNICODE "Fatal Error"
   0012FC60   00000000
   0012FC64   00420044  acad.00420044
   0012FC68   00200058
   0012FC6C   00410043  acad.00410043
   0012FC70   00200053
   0012FC74   00000030
   0012FC78   058CEBFF
   0012FC7C   0012FCC8
   0012FC80   64B1109B  acdb17.64B1109B
   0012FC84   058CEDCB
   0012FC88   64524FEC  返回到 acdb17.64524FEC 来自 acdb17.648F7EB0
  14、在“反汇编窗口中跟随”此函数(地址64524FEC),可看到反汇编结果。
   64524FC1    8B5424 08       MOV EDX,DWORD PTR SS:[ESP+8]
   64524FC5    52              PUSH EDX
   64524FC6    E8 45000000     CALL acdb17.?isAnObjectDBXModule@@YAHPAU>
   64524FCB    83C4 04         ADD ESP,4
   64524FCE    83F8 01         CMP EAX,1
   64524FD1   /75 12           JNZ SHORT acdb17.64524FE5
   64524FD3   |8B4424 24       MOV EAX,DWORD PTR SS:[ESP+24]
   64524FD7   |8346 08 01      ADD DWORD PTR DS:[ESI+8],1
   64524FDB   |8946 04         MOV DWORD PTR DS:[ESI+4],EAX
   64524FDE   |5E              POP ESI
   64524FDF   |83C4 1C         ADD ESP,1C
   64524FE2   |C2 0400         RETN 4
   64524FE5   \6A 00           PUSH 0
   64524FE7    E8 C42E3D00     CALL acdb17.648F7EB0
   64524FEC    83C4 04         ADD ESP,4
  15、由64524FEC向前查看,在64524FD1处找到第一个条件跳转指令,测试指令前刚好有一个CALL指令。于是,大胆推测acdb17.?isAnObjectDBXModule@@YAHPAU>就是保护校验的函数。“跟随”进入此函数,发现代码很长,分析其详细功能很困难。于是,直接NOP掉跳转指令(即在64524FD1处用9090替代7512),并将修改保存到acdb17.dll。
  16、直接运行AutoCAD,打开一个带有“教育版打印戳记”的DWG文件,教育版的警告窗口没有出现,打印时四周也没有教育版的相关字样了。由此可宣布破解成功了!(全文完)
上传的附件:
雪    币: 15
活跃值: 活跃值 (122)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yaoguen 活跃值 2012-2-19 15:55
6
0
学习了
谢谢分享!
游客
登录 | 注册 方可回帖
返回