RIGUZ Lee
skin
2016-07-22 / Programing / Hack

我始终认为数据库设计在系统设计中是一个很重要的工作,然而一直没有比较好的ER建模工具。使用过MySQL Workbench和Power Designer两种工具,但都存在很多不喜欢的地方,直到遇到DbSchema后眼前一亮,这才是一个Nice的工具嘛。 很可惜对于我们这种屌丝来说,是不舍得花钱去购买一个license的,试用期15天到了怎么办呢?当时也没发现有可用的破解版,因为它是基于Java的,这对破解来说减小了难度,于是趁着辞职后在家没事的空档来研究了一下破解。其实也就上午花了一会时间就搞定了。记录下破解的过程。 首先是找到dbschema.jar,这是程序的主要jar包,其他是一些第三方的jar包和jdbc驱动等,于是它就是破解的关键。利用jd-gui反编译这个jar包,首先把源码都保存下来。

顺藤摸瓜,首先打开dbschema的注册窗口,根据里面的关键字搜索,比如Registration,然后一个个去找,这时,发现一个对话框:

public class RegistrationDialog
...
JButton localJButton1 = new JButton(getAction("register"));

这不就是注册的按钮么?然后就看它的action:

112行开始有点意思,其实大概能猜到是干什么,反正是算剩余天数的,那么这个int i = g.b();就是最核心的东西了:

看到这,我们其实已经拿到了计算key的方法,只不过这是一个验证的函数,如果我们要计算出key,需要反向推倒出来,这里就不具体解释了,最终反向出来的代码其实很简单,我做了一个C++版本的:

于是我们就有了一个key生成器了,完整的key生成器源码在Github。