1. 程式人生 > >使用javassist對已經編譯好的class檔案進行修改

使用javassist對已經編譯好的class檔案進行修改

javassist使用教程
javassist使用教程(jar破解)
Javassist是一個開源的java位元組碼操作工具,主要是對已經編譯好的class檔案進行修改和處理,這裡我寫了一個簡單的說明,複雜的請去看www.javassist.com的官方文件。

首先說明的是我不是不尊重作者的成果,有時候需要給客戶選擇的時候不可能使用者沒看就要花錢買,可以先破解了讓使用者看效果,效果好自然會買的.

1. 首先下載開源的程式碼,或者直接使用它的jar,開源的程式碼裡有simple,可以構建工程執行。

下載回來的檔案結構如下,如果你想構造工程的話,先檢視你的windows的classpath是否引入了java的tools.jar,沒有的話你需要在工程裡引入,這個jar在JDK的lib目錄下面,主要作用是提供JDI的使用。

[img]http://dl.iteye.com/upload/attachment/0083/4148/23121653-a7a4-3883-90b0-be58906518a1.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0083/4152/47d81d7d-eee0-3e49-a69d-6cdf06d557c2.jpg[/img]


2. Javassist下面有很多例子,包括的方法名字的修改,許可權的修改和引數的修改等等,可以自己看,我主要說明一下jar破解方面的。

(1) 首先準備你要破解的jar,我現在要破解的是chart.ext.jar

[img]http://dl.iteye.com/upload/attachment/0083/4154/7bd1f17f-fcdd-379d-aa32-e37b7d306bbb.jpg[/img]


(2) 先用反編譯工具,檢視一下你需要修改程式碼的位置,反編譯出來可能有錯誤,但是類名和方法名一般可以反編譯正確,如果jar的加密混淆達到了類名和方法名都混淆掉的話,這個方法就不能用了(一般不會出現這麼牛的混淆工具)。

[img]http://dl.iteye.com/upload/attachment/0083/4158/25e09a49-2a3e-39fb-92fc-e5c22a29faef.jpg[/img]


(3) 經過分析反編譯的jar檔案,我們找到a.class這個類,這個類是在圖上繪製版權的,去掉他就可以了(有的jar的授權是時間的,原理差不多,找到判斷時間的關鍵跳轉就可以了)

(4) 開始寫程式碼,很簡單的幾句話

///////入口啟動函式

publicstaticvoid main(String[] args) throws Exception {

//這個是得到反編譯的池

ClassPool pool = ClassPool.getDefault();

//取得需要反編譯的jar檔案,設定路徑

pool.insertClassPath("E:""crack""chart.ext.jar");

//取得需要反編譯修改的檔案,注意是完整路徑

CtClass cc1 = pool.get("com.objectplanet.chart.a");

try {

//取得需要修改的方法

CtMethod method = cc1.getDeclaredMethod("a");

//插入修改項,我們讓他直接返回(注意:根據方法的具體返回值返回,因為這個方法返回值是void,所以直接return;)

method.insertBefore("{if(true) return ;}");

//寫入儲存

cc1.writeFile();

} catch (NotFoundException e) {

e.printStackTrace();

}

}

執行後會在工程下生成一個新的class檔案,反編譯開啟檢視,會發現

if (1 != 0)

return;

這個就不會執行繪製了

[img]http://dl.iteye.com/upload/attachment/0083/4160/057d9b77-b6ee-3133-b8d2-1791951a37d3.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0083/4167/5f3988e1-330d-3ab2-9a31-1e38a9416932.jpg[/img]


(6) 把原有的用winrar解壓開
[img]http://dl.iteye.com/upload/attachment/0083/4169/f11ccda8-bae4-3b4d-ba94-34e03bc1c57c.jpg[/img]


(7) 把修改的class覆蓋原有的class
[img]http://dl.iteye.com/upload/attachment/0083/4171/76d630a4-bc7d-3d13-9ffb-ef28a1e76d4d.jpg[/img]

(8) 用winrar把解壓出來的重新壓縮,主要要選擇壓縮格式為zip

[img]http://dl.iteye.com/upload/attachment/0083/4173/e116949d-fe64-36e5-ac42-040669d3cafb.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/0083/4175/fc5b2d9e-42d6-3d33-97b1-96f8d4798334.jpg[/img]


(10) 把生成的壓縮檔案chart.ext.zip修改為chart.ext.jar,完工。

相關推薦

使用javassist已經編譯class檔案進行修改

javassist使用教程javassist使用教程(jar破解)Javassist是一個開源的java位元組碼操作工具,主要是對已經編譯好的class檔案進行修改和處理,這裡我寫了一個簡單的說明,複雜的請去看www.javassist.com的官方文件。首先說明的是我不是不

專案報找不到某個已經編譯class錯誤

今天下午做專案,剛從git上更新了程式碼,然後一更新就報找不到某個class的錯誤,這些class全是我自己的類,但是就是找不到,build也不讓,也是報錯,生氣之下,讓我把所有視窗都關了,專案也關閉了,再重啟之後,突然變好了,真是神奇。   好了之後,繼續創作專案,然後又rebuil

mysql 基礎-一個已經編譯的mysqld,如何檢視編譯引數?如何看是32/64位環境編譯的?如何確認mysqld程式依賴哪些庫?

可以通過./bin/mysqlbug| grep ‘config ‘檢視編譯引數。 \s  可以檢視是在在32還是64位機器上編譯。 ldd ./libexec/mysqld 可檢視mysqld以來的庫。

.Net,Dll掃盲篇,如何在VS中調試已經編譯的dll?

技術分享 操作系統 鏈接 作者 怎麽辦 框架 好的 常見 pac 什麽是Dll? DLL 是一個包含可由多個程序同時使用的代碼和數據的庫。 例如,在 Windows 操作系統中,Comdlg32 DLL 執行與對話框有關的常見函數。因此,每個程序都可以使用該Dll中包含的功

使用kotlinc命令將kt檔案編譯class檔案

kotlin的配置 聽說google谷歌宣佈 kotlin成為安卓開發的一級語言之後,作為安卓程式設計師怎能淡定。但是網上關於kotlin的資料又少之又少,後來在網上找到了一本

Java編譯(二) Java前端編譯:Java原始碼編譯Class檔案的過程

Java編譯(二)Java前端編譯: Java原始碼編譯成Class檔案的過程               在上篇文章《Java三種編譯方式:前端編

一、OpenCV環境搭建(採用官方已經編譯的)

一、下載OpenCV安裝包: 到OpenCV的官網(http://opencv.org/)下載最新版本的OpenCV安裝包,由於OpenCV針對不同平臺都有安裝程式,所以我們只需要根據當前開發環境選擇合適的平臺版本即可,這裡我們是在win7 64bit作業系統下進行開發,所以應該下載Open

如何使用python資料夾中的檔案進行批量改名(增、刪、改字串欄位)

【時間】2018.10.12 【題目】如何使用python對資料夾中的檔案進行批量改名(增、刪、改字串欄位)   【問題描述】今天需要對資料夾中的檔案進行批量改名,主要是因為名字中多出了自己不想要的字元段“data”想要將其刪除。這裡便以刪除名字中的字元段為例,至於增、改道理類

Keras 使用:載入已經訓練的模型進行預測

使用Keras訓練好的模型用來直接進行預測,這個時候我們該怎麼做呢?【我這裡使用的就是一個圖片分類網路】 現在讓我來說說怎麼樣使用已經訓練好的模型來進行預測判定把 首先,我們已經又有了model模型,這個模型被儲存為model.h5檔案 然後我們需要在程式碼裡面進行載入 mode

解決從私庫下載下來已經編譯的項目核心部分,改變其編譯後的靜態資源後無法打包進改變部分的問題

直接 clean 解壓 進行 cat 工作目錄 運行 第一次 解決 首先,本人使用 idea開發。     情景:在idea上改變從公司私庫下載下來的公司產品,核心部分已經是編譯後下載下來的,其中包含所有靜態資源。      在idea中改變靜態資

資料夾中的檔案進行分別壓縮並加密

呼叫系統的winRAR工具對檔案進行壓縮和加密 1 import zipfile as zf 2 import platform as pf 3 import subprocess 4 import os 5 import os.path 6 7 rootdir = r'' #設定檔

django分頁查詢及已經分頁的資料進行查詢,條件查詢後的資料再次分頁

#適用於妹子UI的分頁前端,其他的也沒問題,稍做修改即可 #對已經分頁的資料進行查詢,對查詢後的資料再次進行分頁 #思路:url請求除了需要帶current page 還需要帶查詢的內容,以此判斷是否查詢後的資料分頁 直接上程式碼: pages:包含兩個類1. Pagination表示對全部

【Linux】為什麼root無法檔案進行修改

檔案許可權為:-rw-rw-r--,無法用root許可權修改。嘗試方法: 1. chomd 666 檔名,失敗。 2. chattr –i 檔名,失敗。提示lsattr: Inappropriate

Focusky教程 | 已經輸出的EXE檔案再次編輯

Focusky(以下簡稱“FS軟體”)釋出輸出成EXE後還是可以重新編輯修改的哦! 具體的操作方法請看下面的步驟: 1.找到FS軟體釋出後的Exe檔案,然後把副檔名.exe改成.zip;(如圖1) 【圖1▲】 注意:如果電腦系統設定了副檔名(即字尾名)為隱藏狀態的需先設定顯示拓

linux新增環境變數/etc/profile檔案進行修改過後導致命令用不了

在使用java的時候,要新增環境變數。一般我們是export一些變數,比如: export JAVA_HOME=.... export PATH=$PATH:$JAVA_HOME/bin 但是,當我們在export PATH的時候忘記在等號右邊加紅色的$PATH:

【shell】指定資料夾中檔案進行過濾,並修改檔案內容的shell指令碼

編寫shell指令碼,對某個資料夾內搜尋指定檔案並對檔案內容進行更改: 在桌面建立shell_test資料夾  進入shell_test資料夾,建立5個測試檔案 在shell_test資料夾中再建立一個666資料夾,繼續再建立5個檔案,如圖: 分

python3----專案-在windows系統下指定資料夾的檔案進行更改格式並隱藏檔案(或恢復正常)os、win32api、win32con、platform

python3—-專案-在windows系統下對指定資料夾內容的檔案進行更改格式並隱藏檔案(或恢復正常)os、win32api、win32con、platform 1、目標資料夾與檔案 C:\te

單個java檔案編譯為.class檔案的方法

由於本人不懂java,又需要修改jar包內容,故使用反編譯,並將所需要jar包按照轉載文章中方法講單個java檔案進行編譯,最終得到了想要的結果。 此次修改cordovan外掛barcodescanner,預設橫屏修改為豎屏,需要的jar包為外掛中包含ja

怎樣加Java檔案編譯class檔案

首先,需要配置好java的環境變數(保證javac檔案可以執行)1.開啟cmd,找到jdk安裝的bin目錄下,如圖2,然後找到要編譯的Java檔案,我的Java檔案在E:\workspaces\portal_one\JUnit_Test\src\main\java\com\b