jar包防止反編譯工具
『壹』 有哪些防止反編譯 java 類庫 jar 文件的辦法
java本就是開源的,你加密感覺怪怪的。
想防止反編譯,最簡單的方法就是你可以向Jar注入無效代碼。比如建一個類,建一個沒有意義的方法private class Invalid{ },然後輸出為jar。用解壓縮軟體打開這個jar,以文本方式找到那個類的class,然後將那個方法名的一個字母刪掉,然後更新入壓縮文件中。用jd-gui反編譯提示錯誤。這種方式不能用於android中。
還有種方法就是混淆代碼,加密class和高級加密class,方式比較復雜,可以自行網路。
『貳』 java的打包後jar包裡面的class文件都能被反編譯成為源碼嗎
jd-gui這個工具可以進行反編譯的操作。 不過反編譯的質量隨著混淆的程度而定。
特別復雜的代碼(如加密演算法)反編譯一般都有問題。可以建議用 javap -c -p 來看位元組碼。然後參考jvm指令。
一般編譯的文件,都可以反編譯為源碼,但如果是經過加密、以及代碼異常復雜,是很難恢復全部的源碼。
『叄』 幾種java反編譯軟體的安裝以及使用總結
下面是在網上找的幾種反編譯軟體的安裝以及使用:
一、JD-JUI
官網下載鏈接:http://jd.benow.ca/
下載之後解壓,
點擊「jd-gui.exe」運行:
直接將".jar"文件拖入進去即可查看里邊的「.class」文件,如上圖所示。
二:Luyten
官網下載鏈接:https://github.com/deathmarine/Luyten/releases/tag/v0.5.3
點擊「luyten-0.5.3.exe」下載,下載之後點擊運行,運行後的界面如圖所示,同樣也是講「.jar」文件拖入進入即可。
三、在eclipse中安裝反編譯工具
准備工作:
「jad.exe」下載:https://varaneckas.com/jad/
「net.sf.jadclipse_3.3.0.jar」下載:https://sourceforge.net/projects/jadclipse/files/
jad.exe」下載:
「net.sf.jadclipse_3.3.0.jar」下載:
然後將「net.sf.jadclipse_3.3.0.jar」拷貝到eclipse的plugins目錄下,再刪除eclipse的configuration目錄下「org.eclipse.update」文件,這一步很重要!
重啟eclipse,點擊window->Preference->Java,你會發現里邊多了一個插件「JadClipse」,
選中這個插件,將下圖中紅圈圈的地方的地址填寫為你 「jad.exe」文件的地址
還沒有配置完,先不要close,
點擊General->Editors->File Associations 後,進入下邊的界面
設置.class 文件默認打開方式:
設置.class without source文件的默認打開方式,
需要注意的是,「JadClipse Class File Viewer」這個一開始是沒有的,需用添加,如下圖所示:
接下來在eclipse中查看反編譯後的代碼:(這種方法可能不合適,但是能夠查看)
新建一個EJB project,右鍵「import」,選中"EJB JAR file",導入你的jar包,Finish
在項目下找你要查看的反編譯的文件即可,如果你遇到了下邊的這種情況
關閉這個文件後再次打開,就可以查看了(我的是這樣,所以我感覺這個方法不太好,但別的方法又不知道怎麼查看):
有錯誤或者有更好的方法,希望大家在下邊留言指出
『肆』 被混淆的jar包如何反編譯
暫時想到的只有將jar文件解壓,用反編譯工具反編譯相關類,修改,編譯成類替換原文件,再打包成。
『伍』 如何在MyEclipse10中配置Jad反編譯工具
第一種:在eclipse外部打開jar文件
JavaDecompiler.exe,該軟體可以打開整個jar包,功能很強大。
二、在MyEclipse內部打開jar文件
第一步:
下載jad.exe文件
下載jadeclipse插件
第二步:
(1)將jad.exe解壓到java的jdkin目錄下
(2)將jadeclipse插件net.sf.jadclipse_3.3.0.jar
拷貝到myeclipse安裝目錄GenuitecCommonplugins目錄下。
(3)
在myeclipse安裝目錄下的dropins中創建eclipse文件夾,然後在eclipse文件夾中分別創建features、plugins文
件夾,將
net.sf.jadclipse_3.3.0.jar分別拷貝到features和plugins文件夾中。
(4)重新啟動myeclipse後,配置jadeclipse插件
1)在eclipse窗口下,點擊Window>Preferences>Java>JadClipse
>Pathto
Decompiler。(設置jad的絕對路徑,如
C:javaJadjad.exe)。UseEclipsecodeformatter(overridesJad
formatting
instructions)選項打勾,與格式化出來
的代碼樣式一致。
2)在eclipse窗口下,點擊Window>Preferences>Java>JadClipse
>Misc,將ConvertUnicodestringsinto
ANSI
strings選項打勾,避免反編譯後可能出現的中文亂碼。
『陸』 android app怎麼防止反編譯
APK在PC上面就被看作一個壓縮格式文件,在手機上面它就算一個可執行格式文件。兩種格式對它的讀取要求也有區別,所以說利用這個區別來實現偽加密。對PC端來講偽加密的APK沒法被解包無法被反編譯,但是對android系統來說它完全不會影響正常的安裝運行(對4.2以前的系統)。
偽加密的原理:讀取APK的位元組,找到連續4位位元組標記為」P K 01 02」的後第5位位元組,如果是0表示不加密,如果是1就表示加密(偽加密就強行改成1 反偽加密就是把1改成0就可以了)。
2
偽加密前和偽加密後的對比圖如下:
偽加密前:
3
偽加密後:
END
使用第三方平台加密
步驟如下:
登錄/注冊→上傳APK→等待系統加密→完成後下載APK→給APK簽名→完成!
2
愛加密作為移動安全行業的第三方平台,為Android APP移動應用提供專業的加固保護方案,包括DEX文件保護、資源文件保護、XML主配文件保護、防二次打包保護、so文件保護、內存保護、高級混淆等,全方位保護Android App,防止被反編譯、破解等,維護廣大開發者朋友的切身利益!
『柒』 java反編譯工具有哪些
1、 Java反編譯插件—Jadclipse
JadClipse是Jad的Eclipse插件,是一款非常實用而且方便地Java反編譯插件,我們只需將下載的插件包復制到eclipse的plugins目錄下,然後修改window -> Preferences -> Java -> JadClipse 下的Path to decompiler ,如:C:\pin\jadnt158\jad.exe,最後在Windows -> Perference -> General -> Editors -> File Associations中修改「*.class」默認關聯的編輯器為「JadClipse Class File Viewer」 即可。
2、 Java反編譯工具 —jad
jad是一款使用非常廣泛地Java反編譯工具,上面這款Jadclipse就是基於jad的反編譯插件,JAD 文件包含 MIDlet 套件的標題信息,例如開發應用程序的公司、應用程序名稱和大小。
3、 Java 反編譯器—JD-GUI
JD-GUI 是一個用 C++ 開發的 Java 反編譯工具,由 Pavel Kouznetsov開發,支持Windows、linux和蘋果Mac Os三個平台。而且提供了Eclipse平台下的插件JD-Eclipse。JD-GUI不需要安裝,直接點擊運行,可以反編譯jar,class文件。
4、 Java反編譯器—jdec
jdec是一個Java反編譯器。它能夠把出現在一個.class文件中的位元組碼還原成Java源代碼,反編譯的結果幾乎與原始Java文件相同。它還自帶一個利用swing開發的用戶操作界面。
5、 uuDeJava
uuDeJava是Java Class文件的反編譯工具。反編譯的Java源程序被輸出到Class的相同目錄。內部使用jad.exe。反編譯Class文件時,可以直接點擊Class文件(關聯後),或者選中文件或目錄發送到uuDeJava的快捷方式。還可以拖動文件或目錄到uuDeJava的主窗口。
6、 Java 反向工程軟體—Minjava
Minjava 是一個 Java 反向工程軟體,可幫助理解已存在一些 Java 軟體的架構和行為。
7、 Java Decompiler
這款反編譯器叫 「Java Decompiler」, 由 Pavel Kouznetsov開發,目前最新版本為0.2.5. 它由 C++開發,並且官方可以下載 windows、linux和蘋果Mac Os三個平台的可執行程序。
參考資料:http://www.kiwisec.com/news/detail/592e90c09a3e7a3fddc62db7.shtml
『捌』 如何對java的jar包反編譯
使用現有的反編譯工具或者自己寫一個,jar包實際上是class文件打包的,class文件是二進制文件,使用流將class文件讀入,然後轉為字元再寫入到文件中就完成反編譯了。不過經過混淆過的jar包好像不能反編譯。
『玖』 如何把 jar 文件加密
1,打開一個要加密的文本文檔。
2,確保一下裡面的內容都保存好了後,關閉退出。
3,返回存放這個文本文檔的地方,然後選中它,右鍵一下,在彈出來的列表中我們選擇「重命名」選項。
4,接著就可以對這個jar檔轉換一下格式,比如可以把它轉換成表格或者word文檔,即把後綴改成「.doc」等格式,然後轉換成文檔後,這時就知道文檔裡面是加密功能的。
『拾』 Android項目里如何混淆自己打的jar包或者防止被反編譯
Android之防止反編譯技巧:
1. 判斷程序是否運行在模擬器上
boolean isRunningInEmualtor() {
boolean qemuKernel = false;
Process process = null;
DataOutputStream os = null;
try{
process = Runtime.getRuntime().exec("getprop ro.kernel.qemu");
os = new DataOutputStream(process.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
os.writeBytes("exit\n");
os.flush();
process.waitFor();
// getprop ro.kernel.qemu == 1 在模擬器
// getprop ro.proct.model == "sdk" 在模擬器
// getprop ro.build.tags == "test-keys" 在模擬器
qemuKernel = (Integer.valueOf(in.readLine()) == 1);
Log.d("com.droider.checkqemu", "檢測到模擬器:" + qemuKernel);
} catch (Exception e){
qemuKernel = false;
Log.d("com.droider.checkqemu", "run failed" + e.getMessage());
} finally {
try{
if (os != null) {
os.close();
}
process.destroy();
} catch (Exception e) {
}
Log.d("com.droider.checkqemu", "run finally");
}
return qemuKernel;
}
2. 檢測keystore簽名,再與之前得做比較
public int getSignature(String packageName) {
PackageManager pm = this.getPackageManager();
PackageInfo pi = null;
int sig = 0;
try {
pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
Signature[] s = pi.signatures;
sig = s[0].hashCode();
} catch (Exception e1) {
sig = 0;
e1.printStackTrace();
}
return sig;
}
3. 檢測包名,版本名和版本號,然後做判斷:
private String getAppInfo() {
try {
String pkName = this.getPackageName();
String versionName = this.getPackageManager().getPackageInfo(
pkName, 0).versionName;
int versionCode = this.getPackageManager()
.getPackageInfo(pkName, 0).versionCode;
return pkName + " " + versionName + " " + versionCode;
} catch (Exception e) {
}
return null;
}
4. 把jpg圖片寫成是png格式得圖片 但是最新版本的apktool已經修復了
5. 花指令,影響jd-gui 但是最新版本的jd-gui已經修復
private static final char[] wJ = "0123456789abcdef".toCharArray();
public static String imsi = "204046330839890";
public static String p = "0";
public static String keyword = "電話";
public static String tranlateKeyword = "%E7%94%B5%E8%AF%9D";
在每個類裡面加入 如上欄位。。。。
https://***/ 一個第三方得」愛加密「網站 1.需要使用官方的打包key工具打包後上傳到"愛加密"網站進行處理,然後到網站上面下載,下載後還要用"愛加密"的打包工具再次進行打包即可。