.NET破解之太乐地图下载器【非暴破】
- 作者: 五速梦信息网
- 时间: 2026年03月05日 13:17
不知不觉,接触破解逆向已经三个月了,从当初的门外汉到现在的小白,这个过程只有经历过才知道其中的苦与乐:
有无知、困惑、痛苦、惊喜、彻悟、欣慰……
有无助的软件脱壳,茫然的代码分析,有无趣的反复测试,
有人说破解不应该程序员干的事,我回复我不是程序员;
有人说.NET程序太没难度了,去破安卓,后来我真开始研究起安卓来;
有人说能不能把支付宝破了,我没回答。
虽然很忙,时间少,但每天晚上都要抽些时间来关注52论坛,关注破解;虽然并没有从破解中获取物质利益,但我愿意将自己的心得或作品分享给大家。不管怎样,它将作为我的一门兴趣爱好继续发展下去。
本文为详细分析,新手们也可以尝试着做一下。
一、对象描述
作为GIS及相关专业,想必都接触过地图下载吧,市面上地图、影像下载工具都非常多,效果好的、差的,免费的、收费的……各有优劣。我曾经分析过一篇文章《那些年,我们用过的地图下载器》,需要的朋友可以去看看,今天我们的目标就是一个地图下载器——太乐地图下载器。
其官方网址是:http://www.arctiler.com/ ,最新版本是:太乐地图下载器 V4.9
还是那句老话:严格意义上来说,地图下载器已经触犯了地图服务商的权益(只不过别人没有来找你),有关方面不要给我留言或发邮件,如果这样,相当于干着侵权的事的人来指责其他侵犯自己的权益。
《计算机保护条例》中说了,单方面的免费声明是无效的,我还是要像地图下载器开发者一样做一个免责声明:本教程仅供研究学习,请在24小时之内删除相关软件、忘记相关内容。
二、环境说明
操作系统:Win7 64位原版(由于笔记本配置太差,虚拟机都没装)
使用工具:de4dot 3.1(脱壳).NET Reflector8.5(主要分析工具)、Reflexil1.9(修改,它是.NET Reflector插件)、ILSpy2.1(调试)、VS(辅助分析、写注册机)。这些工具网上都能找到,这里就不用提供了吧。
三、详细流程
还是以前的原则,破解程序的大致流程是:试用脱壳-寻找关键-分析修改-调试发布。
01.安装试用
去官网下载安装,在帮助文档的说明中,分别说明了共了免费版、标准版、专业版和企业版,其功能与价格成正比。

试用,它是试用版,有功能限制,比如下载的等级、数据量大小等,这是一般的商业软件模式。在试用过程中,发现其限制的地方,为后面的寻找关键作好准备。

02.软件脱壳
脱壳是实际上一个有难度的活,由于我现在还是工具党,还用的脱.NET壳神器de4dot,(大家还有没有好的脱壳神器或手动脱壳的教程,分享一下呗)它的成功率应该有60%-70%左右。如果把它放在.NET Reflector8.5中出现"索引超出了数组界限"

它的脱壳结果有三种:一是脱壳后代码没有了混淆,程序可以运行,这是最好的结果;二是脱壳后代码还是有部分混淆,程序可以运行,这个结果也勉强能接受;三是脱壳后代码没有混淆,程序不可以运行,这也是最痛苦的(这多半要手动来脱壳)。
本程序遇到了两个关键文件AZMap.exe属于第一种, AZMap.Core.dll属于第三种,也就是说我不能对AZMap.Core.dl修改,只能修改AZMap.exe。
03.寻找关键
将脱壳后的AZMap.exe加到.NET Reflector,使用go to entry point和search是两种常用的入手方法,前者可以到达程序的main函数,然后可一步一步往下分析,后者找出与限制相关的地方,然后可一 一分析。


Main函数中,没有什么异样,直接进入即可。想一下,下一步,程序主界面出现后就知道你是试用版还是其他版本,这说明在主界面出现的过程中必定有函数或方面来检测版本问题,而MainForm里只有两个函数存在这样的效果:构造函数和Load函数(其他程序破解也有类似规律)

果然,MainForm的构造函数中调用了InitLicense方法,赶快标记起来,可能有用。


分析InitLicense方法中的代码,其中RegisterProduct枚举有Control,Desktop,Server三个。
OK,我们显然要进入SN.Registered看看它具体是什么。等一下,想一下,以我以前的脾气,我会直接让这个方法返回想要的类型值,直接暴破,但这里SN类是AZMap.Core.dll中,我们不能修改,所以本程序破解的方式是分析它的算法,SN类的Registered是我们要分析的关键。(这句话说起来简单,这也是我尝试过好几次得到的结论和方面,平时处理过程中,新手应该不会这么快就得出这样的结果,可能也找了很久才找到关键,而且还不一定是真正的关键,所以要有耐心!)
04.代码分析
新手入门都是暴破,这样来得快,我这次也是迫不得已(不会脱壳,高手勿喷)才来分析它的算法的。下面这个过程可能有点让人痛苦:
SN.Registered函数是读取许可文件的,其关键还在于调用的另外一个函数Register

05.修改调试
下面是在VS中生成示例注册码用到的函数,给大家参考一下:

用VS生成了一个注册码,进行注册后,终于显示成功,有点小激动!
06.测试程序
猜中了开头,没有猜中故事的结局,重启后出现这个警告,并且企业版又变回了试用版,点击确定后,程序关闭。

搜索"非法授权"关键字,找到了SN.OnlineCheck()函数(在不能修改的AZMap.Core.dll文件中),认识英文的都知道,它是联网查询数据库检查是否存在 这个SN,接下来怎么办?黑数据库?……
return MySQLHelper.CheckMCExisted(R.smethod_0());
开个玩笑,我们接下来分析一下,它出现的位置。

柳暗花明又一村,这是在AZMap.exe中调用的,这就好办了,修改判断啊,来个狠一点,这个timer的Tick事件一直会检测SN是否合法,检查加密狗是否插入、拔出、合法,直接全删除!

终于写完了,效果图!

四、注意事项
01.本教程不提供最终成品,已分析了详细过程,不要因此而留言;
02.在分析和调试时AZMap.Core.dll应使用脱壳后的,在检查SN是否有效则使用原版AZMap.Core.dll;
相关文章
-
.net生成随机验证码图片
.net生成随机验证码图片
- 互联网
- 2026年03月05日
-
.net视频截图功能,没测试
.net视频截图功能,没测试
- 互联网
- 2026年03月05日
-
.net微信支付查询订单v3
.net微信支付查询订单v3
- 互联网
- 2026年03月05日
-
.NET平台开源项目速览(17)FluentConsole让你的控制台酷起来
.NET平台开源项目速览(17)FluentConsole让你的控制台酷起来
- 互联网
- 2026年03月05日
-
.NET平台和C#编程的总结
.NET平台和C#编程的总结
- 互联网
- 2026年03月05日
-
.NET枚举类型转为List类型
.NET枚举类型转为List类型
- 互联网
- 2026年03月05日



