注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

IronWorks .NET Application V1.2.1 注册分析  

2011-12-17 15:49:59|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

原分析者日志来自:http://www.cnblogs.com/midea0978/articles/99838.html
这个程序说主要是自动生成操作数据库的代码的,缩短了软件开发的周期。

现在还没有用什么数据库,这个程序没有任何保护,抄起Reflector一分析就能到RegisterForm,关心一下下面的方法:
    private void btnregister_Click(object sender, EventArgs e)
方法体下面的
    this.isregistered = this.keyGen.ValidateKey(str);
语句很重要,点击KeyGen就会到达KeyGen类的定义下,然后该类有几个方法:
    public string GenerateNextKey();
    public void SetKeyGenerationSeed(long seed);
    public bool ValidateKey(string key);
顾名思义可知第一个为获取下一个Key,SetKeyGenerationSeed是设置Key生成种子,最后一个是校验Key的合法性了。
现在对第三个下手。使用ReflexIL插件重写该方法,直接将 public bool ValidateKey(string key);的方法体改为:
    return true;
则无论怎么校验都是合法的注册码了……然后保存一下,并替换原文件夹下的KeyGen.dll文件,运行程序,胡乱输入都可以注册,这应该算是非典型的爆破了。如果是修改关键跳的话,涉及到了字节的分析,稍微有点麻烦,这也体现了ReflexIL的强大功能了。
当然,破解的高级阶段应该是写出注册机了,由于注册的方法都写出来了,即GenerateNextKey(),我们只要在自己的注册机中重用一下KeyGen类的实现就可以了。不过有两个地方需要注意:
1.初始种子值是多少呢?通过查看RegisterForm的构造函数,可以发现this.keyGen = new KeyGen(0x1221982L),因此种子应该是0x1221982L,这也是我一开始忽略的地方,每次计算出来之后输入进去都没有通过校验,算出的注册码是错误的。
2.有其他因素的影响吗?例如随机数问题?事实上这个问题的答案是否定的,通过计算发现每次的注册码都是一样的,也没有在代码中看到Random之类的类或者实例,注册过程中的Company Name选项可以随便填写。
写个程序跑一下,注册码马上就出来了:

IronWorks .NET Application V1.2.1 注册分析 - Castor - 趁年轻,多折腾

 破解后记:

测试了一下这个软件,用起来还是不错的,只是最近没有做数据库方面的工作,所以暂时用不上。生成注册码和校验注册码的算法还是可圈可点的,值得学习一下。但是这个破解算是入门的了,软件开发者对安全方面的不重视,导致程序瞬间被破解。没有强名称,没有流程混淆,没有加密或者加壳。另外,注册算法可逆,本来打算分析 ValidateKey方法来写出自己的算法,构造合法的注册码,结果发现居然自己提供了计算方法。最后,就是程序集太松散,而且注册的动态链接库文件居然就叫做KeyGen.dll,这纯粹是勾引别人去逆向分析,不光提供了程序,还给别人提供了注册机……总之,软件的保护太弱了,我们也要引以为戒。

  评论这张
 
阅读(821)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016