最近破解上瘾了,昨天干到3点多,今天又花了一中午把deskzilla,一个bugzilla的桌面客户端)破解了。 这次破解花了很长时间,一是因为代码编译后被混淆了,找关键代码的时候着实花了不少时间。另一方面这个软件的license验证不是使用常见的布尔判断,而是用异常。这意味着必须仔细研究方法的调用栈,于是这次用了一个比较偷巧的方法:在代码中抛出并捕捉异常。在Java中,无论在代码何处抛出异常,JVM都会生成一个从程序入口到抛出异常方法的调用栈,这个机制在需要调用关系的场合非常有用,比如log4j,就是使用这种机制记录log的方法、行数、类名等等信息的。但是,这种机制是非常消耗资源的,因为调用栈里的每一个element都记录着方法、类、甚至行数(如果编译时打开“debug”开关)等信息,而这些信息都是通过反射机制从class文件里直接获得的。 通过对一堆类似huv、dww、dtg、gjt的混淆后的类的分析,终于找出了几个关键类: package z; public class dza extends hwn { // … static { l = epv.a(“Application.License.FULL”, “Single-user license”); m = epv.a(“Application.License.EVAL”, “Evaluation license”); n = epv.a(“Application.License.EAP”, “EAP license”); o = epv.a(“Application.License.OS”, “License for open-source projects”); p = epv.a(“Application.License.INVALID”, “License is INVALID”); r = epv.a(“Application.License.FLOATING”, “Floating license”); s = epv.a(“Application.License.PERSONAL”, “Personal license”); t = read more
烫手的
- 生活,就是一个期待跟着一个期待 - 被踩了 6,379 脚
- 悼念该悼念的,记住该记住的,知道该知道的 - 被踩了 1,570 脚
- 解决android 2.2下无法更新gmail、voice search、google search、street view - 被踩了 1,230 脚
- 关于 - 被踩了 1,113 脚
- 死于青春 - 被踩了 1,057 脚
近期评论
- CSDN这回一石激起千层浪了 | 拈花微笑 发表在《请教新浪》
- 牛肉丝 发表在《Sina,I服了U》
- 牛肉丝 发表在《一路走好》
- CSDN这回一石激起千层浪了 | 拈花微笑 发表在《猜想:互联网ID,“死号”判定与回收》
- CSDN这回一石激起千层浪了 | 拈花微笑 发表在《Sina,I服了U》
