经常使用软件注册机机器码破解方法及教程
不知不觉,接触软件逆向破解已经N个年头了,从当初的门外汉到小白再到如今略有所成,这个过程只有经历过才知道其中的苦与乐;
有无知、困惑、痛苦、惊喜、彻悟、欣慰……有无助的软件脱壳,茫然的代码分析,有无趣的反复测试;
有人说破解不该该程序员干的事,我回复我不是程序员;
有人说.NET程序太没难度了,去破安卓,后来我真开始研究起安卓来;
虽然很忙,时间少,但天天晚上都要抽些时间来关注逆向开发技术网;虽然并无从破解中获取物质利益,但我愿意将本身的心得或做品分享给你们。无论怎样,它将做为个人一门兴趣爱好继续发展下去。
本文为详细分析,新手们也能够尝试着作一下。程序员
工具/原料
-
对象描述: 几年前的一款地图下载软件,如今估计已经没有人使用了;
-
操做系统: Win7 64位原版(因为笔记本配置太差,虚拟机都没装)
-
使用工具:de4dot (脱壳).NET Reflector(主要分析工具)、Reflexil(修改,它是.NET Reflector插件)、ILSpy(调试)、VS(辅助分析、写注册机)
-
免责声明:本教程仅供研究学习;
方法/步骤
-
安装试用去官网下载安装,在帮助文档的说明中,分别说明了共了免费版、标准版、专业版和企业版,其功能与价格成正比。算法
-
试用,它是试用版,有功能限制,好比下载的等级、数据量大小等,这是通常的商业软件模式。在试用过程当中,发现其限制的地方,为后面的寻找关键做好准备。数据库
-
软件脱壳脱壳是实际上一个有难度的活,因为我如今仍是工具党,还用的脱.NET壳神器de4dot,(你们还有没有好的脱壳神器或手动脱壳的教程,分享一下呗)它的成功率应该有60%-70%左右。若是把它放在.NET Reflector中出现"索引超出了数组界限"数组
-
它的脱壳结果有三种:一是脱壳后代码没有了混淆,程序能够运行,这是最好的结果;二是脱壳后代码仍是有部分混淆,程序能够运行,这个结果也勉强能接受;三是脱壳后代码没有混淆,程序不能够运行,这也是最痛苦的(这多半要手动来脱壳)。本程序遇到了两个关键文件AZMap.exe属于第一种, AZMap.Core.dll属于第三种,也就是说我不能对AZMap.Core.dl修改,只能修改AZMap.exe。函数
-
寻找关键将脱壳后的AZMap.exe加到.NET Reflector,使用go to entry point和search是两种经常使用的入手方法,前者能够到达程序的main函数,而后可一步一步往下分析,后者找出与限制相关的地方,而后可一 一分析。工具
-
Main函数中,没有什么异样,直接进入便可。想一下,下一步,程序主界面出现后就知道你是试用版仍是其余版本,这说明在主界面出现的过程当中一定有函数或方面来检测版本问题,而MainForm里只有两个函数存在这样的效果:构造函数和Load函数(其余程序破解也有相似规律)学习
-
果真,MainForm的构造函数中调用了InitLicense方法,赶快标记起来,可能有用测试
-
分析InitLicense方法中的代码,其中RegisterProduct枚举有Control,Desktop,Server三个。flex
-
OK,咱们显然要进入SN.Registered看看它具体是什么。等一下,想一下,以我之前的脾气,我会直接让这个方法返回想要的类型值,直接暴破,但这里SN类是AZMap.Core.dll中,咱们不能修改,因此本程序破解的方式是分析它的算法,SN类的Registered是咱们要分析的关键。(这句话提及来简单,这也是我尝试过好几回获得的结论和方面,平时处理过程当中,新手应该不会这么快就得出这样的结果,可能也找了好久才找到关键,并且还不必定是真正的关键,因此要有耐心!)加密
-
代码分析新手入门都是暴破,这样来得快,我此次也是无可奈何(不会脱壳,高手勿喷)才来分析它的算法的。下面这个过程可能有点让人痛苦:SN.Registered函数是读取许可文件的,其关键还在于调用的另一个函数Register
-
修改调试下面是在VS中生成示例注册码用到的函数,给你们参考一下:
-
用VS生成了一个注册码,进行注册后,终于显示成功,有点小激动!
-
测试程序猜中了开头,没有猜中故事的结局,重启后出现这个警告,而且企业版又变回了试用版,点击肯定后,程序关闭。
-
搜索"非法受权"关键字,找到了SN.OnlineCheck()函数(在不能修改的AZMap.Core.dll文件中),认识英文的都知道,它是联网查询数据库检查是否存在 这个SN,接下来怎么办?黑数据库?……return MySQLHelper.CheckMCExisted(R.smethod_0());开个玩笑,咱们接下来分析一下,它出现的位置。
-
柳暗花明又一村,这是在AZMap.exe中调用的,这就好办了,修改判断啊,来个狠一点,这个timer的Tick事件一直会检测SN是否合法,检查加密狗是否插入、拔出、合法,直接全删除!
-
终于写完了,效果图!
END