字节码暴力破解censum(老版本)
声明
事先声明,本文仅提供破解方法以供个人及读者们学习Java字节码,不提倡破解程序。
本文是个人学习掘金小册张师傅的《JVM字节码从入门到精通》后,作为一个实践的记录,并无恶意。
关于censum
censum是什么呢,其实我还没有真正的用过该软件,临时去官网看了一下介绍。
其核心工作就是帮助我们从繁琐的JVM设计中解放出来,借助可视化工具方便的监控和查看自己的Java程序是否存在
内存泄漏,有时候应用程序突然卡顿是为什么等问题。对censum刚兴趣的同学可以去官网下载来看看。
相关工具
字节码反编译工具:jd-gui
修改16进制工具:winhex
解压压缩工具:7z
破解原理
最简单的暴力破解,修改字节码之后重新打包(等我学习了java agent破解之后就没这么暴力了)。
破解过程
- 下载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:
打包完成:
双击运行,哈哈成功啦!!!
参考链接
特别推荐
推荐张师傅的《JVM字节码从入门到精通》
字节码暴力破解censum(老版本)的更多相关文章
- Java字节码中对应的JDK版本
Java class vs. JDK version mapping Java SE 9 = 53,Java SE 8 = 52,Java SE 7 = 51,Java SE 6.0 = 50,Jav ...
- javaagent+asm破解censum
内容介绍 最近在学习字节码相关知识,了解到通过ASM字节码改写技术来做破解一些软件破解,非常感兴趣,本文记录一下破解 Censum的过程(仅个人学习使用). 之前也写过一篇暴力破解Censum的文章, ...
- JVM 内部原理(七)— Java 字节码基础之二
JVM 内部原理(七)- Java 字节码基础之二 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java ...
- 字节码增强技术-Byte Buddy
本文转载自字节码增强技术-Byte Buddy 为什么需要在运行时生成代码? Java 是一个强类型语言系统,要求变量和对象都有一个确定的类型,不兼容类型赋值都会造成转换异常,通常情况下这种错误都会被 ...
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 防止暴力破解密码、提高大型信息系统安全
几十万人使用的系统.覆盖全国.每天营业额上好几个亿的.若信息安全方面太薄弱了.那将会是致命的打击.甚至威胁到企业的正常运转.从国家层面到企业级别大家都在重视信息的安全.可控. 运行速度慢一点点可以忍受 ...
- XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解
XAMPP的安装和使用 一.什么是XAMPP? XAMPP是最流行的PHP开发环境. XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache.MariaDB.PHP和Perl. 类似 ...
- DVWA Brute Force:暴力破解篇
DVWA Brute Force:暴力破解篇 前言 暴力破解是破解用户名密码的常用手段,主要是利用信息搜集得到有用信息来构造有针对性的弱口令字典,对网站进行爆破,以获取到用户的账号信息,有可能利用其权 ...
- 开源服务专题之------ssh防止暴力破解及fail2ban的使用方法
15年出现的JAVA反序列化漏洞,另一个是redis配置不当导致机器入侵.只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/roo ...
- Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码--转载
在本系列的最后三篇文章中,我展示了如何用 Javassist 框架操作类.这次我将用一种很不同的方法操纵字节码——使用 Apache Byte Code Engineering Library (BC ...
随机推荐
- Linux+Jenkins自动构建服务器包
何时使用: 测试过程中我们需要持续构建一个软件项目,为避免重复的手动下载.解压操作,我们需要搭建一个能够自动构建的测试环境,当代码有更新时,测试人员只需点一下[构建]即可拉取最新的代码进行测试(也可设 ...
- 从String中移除空白字符的多种方式!?
字符串,是Java中最常用的一个数据类型了.我们在日常开发时候会经常使用字符串做很多的操作.比如字符串的拼接.截断.替换等. 这一篇文章,我们介绍一个比较常见又容易被忽略的一个操作,那就是移除字符串中 ...
- Mysql业务设计(逻辑设计)
逻辑设计 数据库设计三大范式 数据库设计第一大范式 数据库表中所有的字段都只具有单一属性 单一属性的列是由基本数据类型所构成 设计出来的表都是简单的二维表 数据库设计的第二大范式 要求表中只有一个业务 ...
- java 检查进程是否存在
以nginx进程为例子 private final static String NAME_STRING = "nginx.exe"; //传入进程名称processName pub ...
- jzoj 3431. 【GDOI2014模拟】网格
Description 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标为B(n, m),其中n >= m.现在从A(0, 0)点出发,只能沿着街道向正右方或者正上方行走,且不能经过 ...
- Appium之定位元素
常用的appium元素定位工具: (1)Android SDK 中提供的元素定位工具uiautomatorviewer: (2)AppiumDesktop提供的元素定位工具Appium Inspec ...
- linux下redis安装部署
1.获取redis资源 进官网下载https://redis.io/download最新版本后将文件移到linux环境中 或者直接wget http://download.redis.io/relea ...
- JVM初认识
运行时数据区域 程序计数器:程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节 ...
- redis实现计数器
用redis实现计数器 社交产品业务里有很多统计计数的功能,比如: 用户: 总点赞数,关注数,粉丝数 帖子: 点赞数,评论数,热度 消息: 已读,未读,红点消息数 话题: 阅读数,帖子数,收藏数 统计 ...
- 容器云平台No.3~kubernetes使用
今天是是第三篇,接着上一篇继续 首先,通过kubectl可以看到,三个节点都正常运行 [root@k8s-master001 ~]# kubectl get no NAME STATUS ROLES ...