大神论坛

找回密码
快速注册
查看: 546 | 回复: 0

[原创] AutoCAD 2023的逆向破解方法,追加AutoCAD2025的破解方法

主题

帖子

0

积分

初入江湖

UID
649
积分
0
精华
威望
0 点
违规
大神币
68 枚
注册时间
2023-10-14 10:43
发表于 2024-06-15 21:27
本帖最后由 fsjsyg 于 2024-06-15 21:27 编辑

AutoCAD 2023的逆向破解方法,追加AutoCAD2025的破解方法

开场白“故事的开始是,我电脑被分析pubg的辅助,把电脑干废了,重装了系统,什么软件也没有,然后呢又要处理工作上的事情,就下载了AutoCAD 2023安装一下,安装包是官网下载的,安装时候还会提示错误,要把电脑时间修改为2022年4月1日安装,就没有错误了,具体的安装过程就省略了,本来网上的注册机很多的,搜索了好几个网站,不是要关注公众号就是只说教程,没有下载地址。于是乎就开始想着自己破解一下,没想到居然成了,我就把过程给大家分享下。说真的,自从破解成功了几个小软件,遇到软件满脑子都是想破解,我觉得破解会上瘾。”
   接下来就开始进入主题吧!老样子,查壳,虽然大公司的软件都不会加壳,但是还是看一看吧。随便下载了一个Detect-It-Easy-3.09版本,丢入看看:

不出所料,看一下软件未注册提示什么吧,我们运行软件,运行后就提示用ID登录,或者输入系列号,还有使用网络许可。

直接关掉这个窗口,提示许可管理器不起作用或未正确安装,现在将关闭AutoCAD。

既然如此,直接丢进X64DBG,看一看,直到程序完全运行后,按alt+e,找到ACAD.EXE双击进入该模块,搜索当前模块下有用字符,然后我找呀早呀找,都是洋文,老样子,全部复制利用网络翻译,最后在00007FF7974B4D41处找到了一个initStartup,翻译结果是“初始化启动”,那么我就更进去看看。

00007FF7974B4D41     | 4C:8D05 505B3000         | lea r8,qword ptr ds:[7FF7977BA898]                       | 00007FF7977BA898:L"initStartup"

跟过去看了一下,发现这里了有很多个跳转,进过我的尝试,发现前面有一堆计算都跳转到了下面的一个CALL中,具体代码见下面:

00007FF7974B4CC9     | 75 23                    | jne acad.7FF7974B4CEE                                    |
00007FF7974B4CCB | 40:387424 50 | cmp byte ptr ss:[rsp+50],sil |
00007FF7974B4CD0 | 75 1C | jne acad.7FF7974B4CEE |
00007FF7974B4CD2 | FF15 18D12D00 | call qword ptr ds:[<&?theApp@AcApAppImp@@SAPEAV1@XZ>] |
00007FF7974B4CD8 | 48:8BC8 | mov rcx,rax |
00007FF7974B4CDB | FF15 EFCB2D00 | call qword ptr ds:[<&?initParamsImp@AcApAppImp@@QEAAAEAV |
00007FF7974B4CE1 | 48:8B40 28 | mov rax,qword ptr ds:[rax+28] |
00007FF7974B4CE5 | 66:3930 | cmp word ptr ds:[rax],si |
00007FF7974B4CE8 | 0F84 F44F0600 | je acad.7FF797519CE2 |
00007FF7974B4CEE | 41:38B6 68060000 | cmp byte ptr ds:[r14+668],sil |
00007FF7974B4CF5 | 75 65 | jne acad.7FF7974B4D5C |
00007FF7974B4CF7 | 40:3835 B3BF4600 | cmp byte ptr ds:[7FF797920CB1],sil |
00007FF7974B4CFE | 75 5C | jne acad.7FF7974B4D5C |
00007FF7974B4D00 | 40:387424 54 | cmp byte ptr ss:[rsp+54],sil |
00007FF7974B4D05 | 74 55 | je acad.7FF7974B4D5C |
00007FF7974B4D07 | 48:8D0D BAF62E00 | lea rcx,qword ptr ds:[7FF7977A43C8] | 00007FF7977A43C8:L"AcAutoLoader"
00007FF7974B4D0E | FF15 9CD62D00 | call qword ptr ds:[<&?acrxServiceIsRegistered@@YA_NPEB_W |
00007FF7974B4D14 | 84C0 | test al,al |
00007FF7974B4D16 | 74 44 | je acad.7FF7974B4D5C |
00007FF7974B4D18 | FF15 02972D00 | call qword ptr ds:[<&acrxSysRegistry>] |
00007FF7974B4D1E | 48:8B08 | mov rcx,qword ptr ds:[rax] |
00007FF7974B4D21 | 4C:8B41 40 | mov r8,qword ptr ds:[rcx+40] |
00007FF7974B4D25 | 48:8D15 7CF62E00 | lea rdx,qword ptr ds:[7FF7977A43A8] | 00007FF7977A43A8:L"DynamicLinker"
00007FF7974B4D2C | 48:8BC8 | mov rcx,rax |
00007FF7974B4D2F | 41:FFD0 | call r8 |
00007FF7974B4D32 | 48:8BC8 | mov rcx,rax |
00007FF7974B4D35 | E8 C2010000 | call acad.7FF7974B4EFC |
00007FF7974B4D3A | 48:8B08 | mov rcx,qword ptr ds:[rax] |
00007FF7974B4D3D | 4C:8B49 38 | mov r9,qword ptr ds:[rcx+38] |
00007FF7974B4D41 | 4C:8D05 505B3000 | lea r8,qword ptr ds:[7FF7977BA898] | 00007FF7977BA898:L"initStartup"这里时候我们搜索到的初始化启动位置
00007FF7974B4D48 | 48:8D15 79F62E00 | lea rdx,qword ptr ds:[7FF7977A43C8] | 00007FF7977A43C8:L"AcAutoLoader"
00007FF7974B4D4F | 48:8BC8 | mov rcx,rax |
00007FF7974B4D52 | 41:FFD1 | call r9 |
00007FF7974B4D55 | 48:85C0 | test rax,rax |
00007FF7974B4D58 | 74 02 | je acad.7FF7974B4D5C |
00007FF7974B4D5A | FFD0 | call rax |
00007FF7974B4D5C | 40:3835 79A84600 | cmp byte ptr ds:[7FF79791F5DC],sil |
00007FF7974B4D63 | 75 27 | jne acad.7FF7974B4D8C |
00007FF7974B4D65 | 48:8D0D 7C483000 | lea rcx,qword ptr ds:[7FF7977B95E8] | 00007FF7977B95E8:L"WM_AcSendWBHMessage"
00007FF7974B4D6C | FF15 5E8C2D00 | call qword ptr ds:[<&RegisterClipboardFormatW>] |
00007FF7974B4D72 | 8905 60A84600 | mov dword ptr ds:[7FF79791F5D8],eax |
00007FF7974B4D78 | 48:8D0D 61150200 | lea rcx,qword ptr ds:[7FF7974D62E0] |
00007FF7974B4D7F | FF15 B3B82D00 | call qword ptr ds:[<&?acedRegisterFilterWinMsg@@YA_NQ6A_ |
00007FF7974B4D85 | 44:883D 50A84600 | mov byte ptr ds:[7FF79791F5DC],r15b |
00007FF7974B4D8C | E8 67FB0100 | call acad.7FF7974D48F8 | 登录窗口
00007FF7974B4D91 | E8 D6910300 | call acad.7FF7974EDF6C |
00007FF7974B4D96 | 84C0 | test al,al |
00007FF7974B4D98 | 0F85 4F4F0600 | jne acad.7FF797519CED |
00007FF7974B4D9E | 49:8D8E B8010000 | lea rcx,qword ptr ds:[r14+1B8] |
00007FF7974B4DA5 | FF15 45342E00 | call qword ptr ds:[<&Ordinal#7893>] |
00007FF7974B4DAB | 84C0 | test al,al |
00007FF7974B4DAD | 74 05 | je acad.7FF7974B4DB4 |
00007FF7974B4DAF | E8 B0C80300 | call acad.7FF7974F1664 |
00007FF7974B4DB4 | FF15 7ECF2D00 | call qword ptr ds:[<&?instance@AcInCanvasToolbarUIServic |
00007FF7974B4DBA | 48:8D15 2F524500 | lea rdx,qword ptr ds:[7FF797909FF0] |
00007FF7974B4DC1 | 48:8BC8 | mov rcx,rax |
00007FF7974B4DC4 | FF15 76CF2D00 | call qword ptr ds:[<&?setUIHost@AcInCanvasToolbarUIServi |
00007FF7974B4DCA | 90 | nop |
00007FF7974B4DCB | 48:8D8C24 F8010000 | lea rcx,qword ptr ss:[rsp+1F8] |
00007FF7974B4DD3 | FF15 97FB2D00 | call qword ptr ds:[<&??1CAdUiRegistryDeleteAccess@@UEAA@ |
00007FF7974B4DD9 | 90 | nop |
00007FF7974B4DDA | 48:8D8C24 80010000 | lea rcx,qword ptr ss:[rsp+180] |

感觉代码不好看的,就看截图,有跳转的逻辑要好看一点,

我想着如果不要我输入系列号,不就可以了吗?我就直接把这个CALL给nop掉试试,然后修补文件后运行试试,结果决然可以使用了,没有弹出需要注册的窗口,接下来,我都把工作做完了,也没有什么异常的地方,功能完全正常。我觉得现在大公司的软件注册就是意思意思,不像那些搞辅助的,六亲不认呀。
   好了,谢谢大家耐心观看,补丁制作很简单,我就不演示了。




===================================================================================
   今天到了公司,立马安装了CAD2025,同样的方法试一下,前面有CAD2023的破解基础,重复的我就不说了,我直接按照上次搜索到的特征字符串“initStartup”这里去看一看。

在上图可以看到,在2025跳转的这里不再是call了,变成了下面的代码:

00007FF7F1967260     | 75 27                    | jne acad.7FF7F1967289                                    |
00007FF7F1967262 | 48:8D0D B7133200 | lea rcx,qword ptr ds:[7FF7F1C88620] | 00007FF7F1C88620:L"WM_AcSendWBHMessage"
00007FF7F1967269 | FF15 017A2F00 | call qword ptr ds:[<&RegisterClipboardFormatW>] |
00007FF7F196726F | 8905 D7084900 | mov dword ptr ds:[7FF7F1DF7B4C],eax |
00007FF7F1967275 | 48:8D0D A0A30100 | lea rcx,qword ptr ds:[7FF7F198161C] |
00007FF7F196727C | FF15 5EA62F00 | call qword ptr ds:[<&?acedRegisterFilterWinMsg@@YA_NQ6A_ |
00007FF7F1967282 | 44:883D C0084900 | mov byte ptr ds:[7FF7F1DF7B49],r15b |
00007FF7F1967289 | 48:8B05 F82C4900 | mov rax,qword ptr ds:[7FF7F1DF9F88] |
00007FF7F1967290 | 48:8B18 | mov rbx,qword ptr ds:[rax] |
00007FF7F1967293 | E8 9CCB0100 | call acad.7FF7F1983E34 |
00007FF7F1967298 | 48:85DB | test rbx,rbx |

这段代码首先从固定地址读取一个64位的值到RAX寄存器,然后通过这个值(作为地址)从内存中读取另一个64位的值到RBX寄存器,最后调用call acad.7FF7F1983E34这个函数,没事,我们跟进去这个CALL中一看究竟。

进来后我们看到,这里有一个“AcGetlicenseUI”,这里就是安装了许可UI,在段首运行call acad.7FF7F19843F0后,接下来有test al, al ,这个汇编语句是主要用于测试和设置标志位,但是不改变 al 的值。既然这样,我们直接把那么我们直接把[backcolor=rgba(27, 31, 35, 0.05)]test al, al修改为xor [backcolor=rgba(27, 31, 35, 0.05)]al, al。
[backcolor=rgba(27, 31, 35, 0.05)]这样一来,我们就把寄存器清零了,接下来的 jne acad.7FF7F19D00AC跳转就不会实现,这样就完成了破解,当然,把JNE修改成JMP也同样能达到效果。当然我是选择修改较少的方案,84→32,下面看运行截图吧,不然又有人说没有成功使用的截图。要做补丁的,直接上数据“>acad.exe  0000000000063E69:84->32”。

其实方法都差不多,大家也可以试一试。好了,开始搬砖了。谢谢大家观看!!


注:若转载请注明大神论坛来源(本贴地址)与作者信息。

返回顶部