javaagent+asm破解censum
内容介绍
最近在学习字节码相关知识,了解到通过ASM字节码改写技术来做破解一些软件破解,非常感兴趣,本文记录一下破解
Censum的过程(仅个人学习使用)。
之前也写过一篇暴力破解Censum的文章,采用的方式是将Censum的jar包解压出来之后直接用工具改写字节码,然后重新打包,
这种方式呢,非常暴力,而且修改麻烦。今天采用的是javaagent+asm的方式,以一种相对优雅的姿态来破解Censum。
附上之前写过的相关文章:
附上censum的jar包用于破解
https://download.csdn.net/download/fututadeyoushang/12100233
相关技术
Asm, Javaagent,Java字节码
相关工具
Arthas, Asm, ASM Bytecode Outline, jd-gui
Javaagent
Javaagent一般是一个jar文件,可以在java命令启动程序的时候通过参数-javaagent指定jar文件的位置,然后在class文件加载到JVM之前,javaagent的程序可以对指定的class或者指定的方法进行改写。
javaagent程序的有两种写法,一种是premain,这种方式会在class被加载到JVM之前就会修改字节码;另外一种方式是agentmain,是在要代理的程序启动之后通过JDK提供的attach api来远程代理,通信方式可能是信号或者Unix域套接字。
可以参考下这篇文章:
Asm
Asm一种非常流行的字节码改写技术,已经成为了字节码改写事实上的标准。
Arthas
Arthas是阿里巴巴开源的Java诊断工具。
我有过一篇使用Arthas的文章
https://mp.weixin.qq.com/s/Lo1YZagQU9kgIA0LM9R-XA
Censum
censum是一个用于查看JVM内存泄漏等问题的可视化工具。
破解
以下是相关的破解过程,包含asm代码编写,字节码查看等。
代码
完整工程代码链接:https://github.com/zhangxingr/CensumCrack
破解思路
看懂验证逻辑
要破解一个程序,首先我们要知道这个程序的验证逻辑,那么首先我们用jd-gui查看censum的jar包。
从一大堆反编译过的字节码中找到CensumStartupChecks.class这个文件
查看CensumStartupChecks的代码逻辑,会发现真正用于判断是否过期的逻辑在下面这个方法里面:
实际上就是一个简单的日期判断,我们要破解该程序,就得改写这一部分的字节码,最简单就是直接在CanLoadState方法最前面插入一行代码
return CanLoadState.SUCCESS
改写字节码
通过ASM来改写字节码,核心代码如下:
上面的图片中,第二张和第三张都是套用的ASM使用的模板,只有第一张图片里面是涉及到真实修改的逻辑:
onMethodEnter中的逻辑翻译成java代码就是
return CanLoadState.SUCCESS;
何以见得呢?因为我是通过java代码反推回来的。先准备好我们想要的代码:
然后ide可以下载一个插件ASM Bytecode Outline,该插件可以生成ASM代码
maven打包
mvn clean package
启动censum程序的同时指定代理
java -javaagent:censum-crack.jar -jar censum-full.jar
这样一整个过程下来之后,如果没有其他错,就完成了破解啦!!!
Arthas验证字节码被改写
之后可以通过arthas把CensumStartupChecks类给dump下来查看是否被改写啦。。。
关于arthas的使用可以参考我之前写过的文章
https://mp.weixin.qq.com/s/Lo1YZagQU9kgIA0LM9R-XA
参考资料
https://juejin.im/book/5c25811a6fb9a049ec6b23ee/section/5c2ca222f265da611c271646
https://juejin.im/book/5c25811a6fb9a049ec6b23ee/section/5c2ca217e51d4534402a493e
https://juejin.im/book/5c25811a6fb9a049ec6b23ee/section/5c2ca1f051882543871d8d4a
https://juejin.im/book/5c25811a6fb9a049ec6b23ee/section/5c2ca2306fb9a04a0604faa8
https://www.cnblogs.com/alinainai/p/12176493.html
https://mp.weixin.qq.com/s/Lo1YZagQU9kgIA0LM9R-XA
javaagent+asm破解censum的更多相关文章
- 字节码暴力破解censum(老版本)
声明 事先声明,本文仅提供破解方法以供个人及读者们学习Java字节码,不提倡破解程序. 本文是个人学习掘金小册张师傅的<JVM字节码从入门到精通>后,作为一个实践的记录,并无恶意. 关于c ...
- 仅仅使用Google就完成了人生第一次破解
2021年2月6日21:17:09 begin 起因 在异乡的打工人,不善言谈,幸有一老同学,周末常邀吃饭,感恩之心铭记于心.她结婚时,为表心意欲做视频,视频需要制作字幕,搜索之,偶遇一字幕软件,但是 ...
- JVM插码之五:Java agent+ASM实战--监控所有方法执行时间
本文建立在对instrumentation和agent有初步的了解的前提下阅读,关于这2个类的讲解在其它文章中. 这是一个maven项目,pom中需要的配置,lib中有asm的jar包 pom.xml ...
- idea破解方式 附jar包
在安装了idea之后 去安装目录找到安装目录的 idea.exe.vmoptions 和 idea64.exe.vmoptions 两个文件在文件最后面追加上 -javaagent:C:/破解补丁的名 ...
- JAVA堆外内存
JVM可以使用的内存分外2种:堆内存和堆外内存. 堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误. 使用 ...
- 曹工说Spring Boot源码(25)-- Spring注解扫描的瑞士军刀,ASM + Java Instrumentation,顺便提提Jar包破解
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- 对抗密码破解 —— Web 前端慢 Hash
(更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...
- GJM : 使用浏览器的计算力,对抗密码破解 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- Jrebel6.3.3破解,配置图文教程
JRebel是个很好的开发工具,我在网上找了好久都没有找到很详细的教程,破解与配置教程千篇一律,步骤不详细.编写这篇教程,综合网络上的知识,加上了自己的理解与详细图文步骤. 安装 一般最新的插件是没有 ...
随机推荐
- 跟着尚硅谷系统学习Docker-【day01】
day01-20200710 p1.基础知识 鲸鱼背上有一些集装箱 学习docker得基础知识 1.强制:熟悉Linux命令和相关背景知识 2.建议有maven和git的相关知识 ...
- shell小技巧(2)查找文件时,排除几种类型文件
代码: find -type f ! -name "*.jpg" ! -name "*.png" ! -name "*.jpeg" ! -n ...
- 转载:记录一次MySQL两千万数据的大表优化解决过程
地址:https://database.51cto.com/art/201902/592522.htm 虽然是广告文,但整体可读性尚可.
- Java获取Linux上指定文件夹下所有第一级子文件夹
说明:需要只获得第一级文件夹目录 package com.sunsheen.jfids.studio.monitor.utils; import java.io.BufferedReader; imp ...
- 理解Spring AOP的实现方式与思想
Spring AOP简介 如果说IOC是Spring的核心,那么面向切面编程就是Spring最核心的功能之一了,在数据库事务中,面向切面编程被广泛应用. AOP能够将那些与业务无关,却为业务模块所共同 ...
- 2020重新出发,JAVA高级,JVM种设计模式
Java的23种设计模式全面解析 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性.稳健 ...
- Java I/O流 复制文件速度对比
Java I/O流 复制文件速度对比 首先来说明如何使用Java的IO流实现文件的复制: 第一步肯定是要获取文件 这里使用字节流,一会我们会对视频进行复制(视频为非文本文件,故使用之) FileInp ...
- python 入门,最基础语法集合100行!!
月开始一直咸到现在,博客难产 心里特别特别愧疚,如此懈怠,怎么对的起我那六个粉丝呢!!!他们一定正日夜翘首以盼,等着我更新博客呢.于是我赶紧到盘里找找看以前的存货 不好意思,拿错了,是这个 我pyth ...
- Unit1:Android
unit1 1.安卓版本 最新数据访问维基百科 2008年,android1.0 2011年,android3.0,平板失败 同年10月,android4.0,无差别使用 2014年,android5 ...
- 教你怎么"白嫖"图床
本次白嫖适用于有自己域名的. 访问 又拍云,注册 注册好后,访问又拍云联盟 按照说明申请即可 结束 静等通过即可,经过我与又拍云联系核实他们审核通过都会在每周五的下午18:00统一发送审核结果邮件通知 ...