zoukankan      html  css  js  c++  java
  • 字节码暴力破解censum(老版本)

      声明  

      事先声明,本文仅提供破解方法以供个人及读者们学习Java字节码,不提倡破解程序。

      本文是个人学习掘金小册张师傅的《JVM字节码从入门到精通》后,作为一个实践的记录,并无恶意。

      

      关于censum

      censum是什么呢,其实我还没有真正的用过该软件,临时去官网看了一下介绍。

      

      其核心工作就是帮助我们从繁琐的JVM设计中解放出来,借助可视化工具方便的监控和查看自己的Java程序是否存在

    内存泄漏,有时候应用程序突然卡顿是为什么等问题。对censum刚兴趣的同学可以去官网下载来看看。

      Censum官网

      

      相关工具

      字节码反编译工具:jd-gui

      修改16进制工具:winhex

      解压压缩工具:7z

      破解原理

      最简单的暴力破解,修改字节码之后重新打包(等我学习了java agent破解之后就没这么暴力了)。

      

      破解过程

    • 下载censum老版本

       censum下载

       下载之后先直接双击运行看看

       


       可以看到现在是不能用的,提示license过期。

    • 用jd-gui查看反编译后的字节码

       

        在里面找代码,这是一个可能很浩大的工程,因为可能class文件特别多。但是只要jar包没有被特意混淆过,就是能找到的。

        我由于看了文章,里面直接指出了哪个class文件是校验过期的文件,所以就直接定位啦。。。<~<_>~>

        定位到CensumStartupChecks.class这个文件:

      

    看一遍代码逻辑,挺简单的,而且其中校验Year、Month等都是写死在了代码里面。

    那么,现在我们已经知道了应该修改哪些代码,怎么去修改呢?首先我们要解压jar包。

    • 通过7z解压jar包

       为什么我要通过7z来解压呢?我最开始用的winrar来解压和打包,发现打包出来的文件比之前少了差不多1M,运行报错。

       后来了解到jar包实质上可以等同于zip包,所以要用zip的格式解压和打包。由于我用的win10不支持zip命令,所以下了7z这个

       工具,7z本身是支持zip格式的。

       

        解压之后是这样的:

    • 借助winhex修改16进制

    找到要修改的类文件CensumStartupChecks.class,然后使用winhex工具打开:

    看到了预料之中的16进制,然后我们搜索一下我们要修改的关键字符,2016。为什么找2016呢,因为我们要修改

    年份,把2016修改成2030就可以了。

    搜索要使用winhex搜索hex字符的功能:

    我们要搜索的是2016,2016的16进制多少呢:

    拿到了,7E0,在winhex里面搜索一下:

    我擦嘞,威慑搜索不到呢。

    仔细看了一下里面的16进制格式,都是两个两个的,所以就在前面补一个0:07E0

    搜索到了,哈哈

    然后就是修改,先看下2030的16进制:

    7EE,同样的补0就得到了07EE。对比下2016的十六进制:07E0,所以我们只需要修改最后一个。

    点击到需要的修改的字符上,右键edit -> modifydata

    修改成E,然后保存即可:

     

    • 用7z打包

    经历了上面一系列骚操作,我们就可以打包了:

    注意打包的后缀为jar,压缩格式为zip:

    打包完成:

    双击运行,哈哈成功啦!!!

      参考链接

    winhex

    jd-gui

    7-Zip

      破解 jar 包之直接修改 .class 文件方式

      破解软件-用直接修改字节码的方式

      跟我一起用 ASM 实现编译期字节码插桩

    特别推荐

    推荐张师傅的《JVM字节码从入门到精通》

     

      

  • 相关阅读:
    hive创建ES外部表过程中的问题
    Hive 与 ElasticSearch 的数据类型对照
    ambari启动hive服务失败
    calcite 1.22新特性
    自动化打包工具gulp
    js中数组的用法
    JavaScript的基础语法
    node.js初体验
    函数的执行过程和闭包
    Ajax -Asynchronous Javascript And XML(异步 JavaScript 和 XML)
  • 原文地址:https://www.cnblogs.com/alinainai/p/12176493.html
Copyright © 2011-2022 走看看