javaagent+asm破解censum


內容介紹

最近在學習字節碼相關知識,了解到通過ASM字節碼改寫技術來做破解一些軟件破解,非常感興趣,本文記錄一下破解

Censum的過程(僅個人學習使用)。

之前也寫過一篇暴力破解Censum的文章,采用的方式是將Censum的jar包解壓出來之后直接用工具改寫字節碼,然后重新打包,

這種方式呢,非常暴力,而且修改麻煩。今天采用的是javaagent+asm的方式,以一種相對優雅的姿態來破解Censum。

附上之前寫過的相關文章:

字節碼暴力破解censum(老版本)

Java虛擬機診斷利器

附上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域套接字。

可以參考下這篇文章:

Guide to Java Instrumentation


Asm

Asm一種非常流行的字節碼改寫技術,已經成為了字節碼改寫事實上的標准。

asm官網


Arthas

Arthas是阿里巴巴開源的Java診斷工具。

Arthas官網

我有過一篇使用Arthas的文章

https://mp.weixin.qq.com/s/Lo1YZagQU9kgIA0LM9R-XA


Censum

censum是一個用於查看JVM內存泄漏等問題的可視化工具。

censum官網


破解

以下是相關的破解過程,包含asm代碼編寫,字節碼查看等。


代碼

完整工程代碼鏈接:https://github.com/zhangxingr/CensumCrack


破解思路

看懂驗證邏輯

要破解一個程序,首先我們要知道這個程序的驗證邏輯,那么首先我們用jd-gui查看censum的jar包。

從一大堆反編譯過的字節碼中找到CensumStartupChecks.class這個文件


CensumStartupCheck.class文件

查看CensumStartupChecks的代碼邏輯,會發現真正用於判斷是否過期的邏輯在下面這個方法里面:


CanLoadState方法

實際上就是一個簡單的日期判斷,我們要破解該程序,就得改寫這一部分的字節碼,最簡單就是直接在CanLoadState方法最前面插入一行代碼

return CanLoadState.SUCCESS

改寫字節碼

通過ASM來改寫字節碼,核心代碼如下:


因為要修改方法中的邏輯,所以定義一個MethodVisitor

指定要修改的方法名

指定要修改哪個類

上面的圖片中,第二張和第三張都是套用的ASM使用的模板,只有第一張圖片里面是涉及到真實修改的邏輯:


onMethodEnter讓我們可以在剛進入一個方法的時候,插入一段邏輯

onMethodEnter中的邏輯翻譯成java代碼就是

return CanLoadState.SUCCESS;

何以見得呢?因為我是通過java代碼反推回來的。先准備好我們想要的代碼:


demo代碼

枚舉類

然后ide可以下載一個插件ASM Bytecode Outline,該插件可以生成ASM代碼


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM