當前位置:首頁 » 編程軟體 » classfinal防止反編譯

classfinal防止反編譯

發布時間: 2022-02-09 08:03:35

『壹』 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工具打包後上傳到"愛加密"網站進行處理,然後到網站上面下載,下載後還要用"愛加密"的打包工具再次進行打包即可。

『貳』 反編譯java核心類 能不能反編譯java核心類,比如java.lang.String,再編寫自己的代碼放到裡面去

我估計你是想重編譯String.class文件並覆蓋吧,這個目前行不通,據說像HotSpot這種商業JVM內部都存有一張關於核心類庫的裝載信息表專供根載入器使用,這個表內容是以通過硬寫在JVM底層C\C++程序中的方式存在的,在裝載核心類庫的.Jar文件時不僅要比對其中.class文件的有效性,還要比較.Jar文件的SHA1哈希值與裝載信息表中的記錄是否一致!(或許哈希弱無碰撞演算法出現時會有希望,呵呵)同時JVM會運行各種安全沙箱機制(比如裝載約束、訪問許可權等等)來保護運行環境的安全性,所以除非重編譯JVM否則目前沒有什麼好方法。

『叄』 如何防止Android程序被反編譯

下面具體說一說怎麼樣讓SDK2.3下的proguard.cfg文件起作用,先來看看android-sdk-windows\tools\lib\proguard.cfg的內容: -optimizationpasses 5 -dontusemixedcaseclassnames - -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keepclasseswithmembernames class * { native ; } -keepclasseswithmembernames class * { public (android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public (android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } 從腳本中可以看到,混淆中保留了繼承自Activity、Service、Application、BroadcastReceiver、 ContentProvider等基本組件以及com.android.vending.licensing.ILicensingService,並保留了所有的Native變數名及類名,所有類中部分以設定了固定參數格式的構造函數,枚舉等等。)讓proguard.cfg起作用的做法很簡單,就是在eclipse自動生成的default.properties文件中加上一句「proguard.config=proguard.cfg」就可以了完整的default.properties文件應該如下: # This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file must be checked in Version Control Systems. # # To customize properties used by the Ant build system use, # "build.properties", and override values to adapt the script to your # project structure. # Project target. target=android-9 proguard.config=proguard.cfg 大功告成,正常的編譯簽名後就可以防止代碼被反編譯了。

『肆』 JAVA中Method類為final,其設計為什麼不讓繼承!

不僅僅Method,其它的Constructor、Parameter、Field都是final的。

1. 類在運行期是緩存的,如果不用final保護,被改動了怎麼辦?Method對象和class文件不一致了。
2. Method類依賴Class類,如果要改Method,就要動類載入。Class是很底層的類,基本都是native方法,用戶自己有沒有這個能力改動?
3.從邏輯上將,Method已經完成了所有的工作,沒有派生關系,也沒有繼承的必要性。

jdk的反射機制已經很完善了,整個體系不需要用戶去動,一般也沒這個能力。一般要擴展也只需要一些工具類就足夠滿足需求。

『伍』 我用java反編譯工具把.class文件轉為.java文件,其中有些這種字元,請問一下這種是怎麼回事啊

不會! if ((l3 = (System.currentTimeMillis() - l2) + 10L) < 62L)
try
{
Thread.sleep(62L - l3);
}
catch (Exception )
} while (true);
if (a_byte == 1)
b();
a_Bobby.notifyDestroyed();
}

private final void d()
{
byte abyte0[] = a();
boolean flag = false;
String s1 = "BC5Data";
a a1 = this;
try
{
RecordStore recordstore;
(recordstore = RecordStore.openRecordStore(s1, false)).setRecord(1, abyte0, 0, abyte0.length);
recordstore.closeRecordStore();
return;
}
catch (Exception )
try
{
RecordStore.deleteRecordStore(s1);
}
catch (Exception )
······

看到了吧~這就是格式!匯編語言!!!
編譯連接之後,再用txt打開~就只能看到亂碼啦。

『陸』 為什麼JD Decompiler只可以看class文件,可以直接修改class文件嗎,怎麼修改


網頁
問問
科學
知識
更多

搜索
為什麼JD Decompiler只可以看class文件,可以直..._約109個回答_搜狗知識
為什麼JD Dec...修改?
[最佳答案] class文件是二進制編碼怎麼修改!!!先反編譯成java源文件然後再編譯成class文件就行了
搜狗問問
2011-06-03
用DJ Java Decompiler處理過的class生成java文件,怎...
搜狗問問
2016-05-31
搜狗知識
查看更多
為什麼JD Decompiler只可以看class文件,可以直接修改class..._CSDN博客
class文件直接修改_反編譯修改class文件變數_weixin_30825199的博...
所以只能直接修改Java class文件. 記錄一下修改步驟: 1.下載JClassLib_windows(後面用到),下載jd-gui-1.4.0.jar,用來反編譯class文件的,IDEA也可以反編譯class文件; 找到需要修改文件的變數...

2017-12-15
如何修改編輯jar包中class文件呢?? - Sun_Ru的博客 - CSDN博客
2016-11-21
CSDN博客
查看更多
反編譯-直接修改class文件可以嗎?——CSDN問答頻道
我用編輯器直接打開class文件,找到13這個字元串,改成14,保存,替換掉原來的class文件,還是... http://java-decompiler.github.io/2.WinR java 修改 class 文件 指定內容 7863 2018-04-07 在java 中可以...
ask.csdn.net
如何利用反編譯軟體打開並修改class文件-網路經驗
1/6
打開反編譯軟體jd-gui,如圖:
2/6
打開文件夾,選中自己要打開的文件...
3/6
選中自己要修改的文件後,先全選(...
4/6
之後打開myeclipse,將復制內容粘...
5/6
修改自己要修改的代碼,並發布這個...
6/6
最後在自己安裝的tomcat中找到對應...
查看更多
網路經驗
破解 jar 包之直接修改 .class 文件方式_知乎

8 - 一、常規 JAVA 軟體破解流程先講一下常規jar包的破解流程.1. 快速定位.1) 通過procmon監控相關軟體,查看程序都訪... 結構體後面多餘的位元組就可以直接刪除了.現在大功告成,將修改後的 .class 文件替換原來的就可以了.需要注意的細節坑1...


知乎
2017-08-23
怎麼修改jar 裡面的class文件?-CSD...
好像只能查看class文件不能修改,我上網搜 有人說 eclipse 有插件的直接都可以看到反編譯後的東西... 我們想看的是Java文件,當然網上有反編譯工具,但是為了一勞永逸,我們可以安裝jd-eclipse-site-1....
topic.csdn.net
能把*. class文件反編譯成*.java文件嗎?-CSDN論壇
class文件反 編譯 成.java 經修改後再 編譯成 .class Java Decompiler【 java 反編譯 】:開發了 反編... 把jar包直接拖進這個軟體就能夠看到代碼了。當然jd-gui不... 像*. exe之類的很難 反編譯 ,比如使用...
topic.csdn.net
class文件反編譯_class文件怎麼打開
[圖文] class文件全名稱為Java class文件,主要在平台無關性和網路移動性方面使Java更適合網路.它在平台無關性方面的任務是:為Java程序提供獨立於底層主機平台的二進制形式的服務.class文件徑打破了...
m.pc6.com
class文件怎麼打開_搜狗指南
class 文件 2019.02.28 如何查看java class文件 2019.03.24 怎麼找到Eclipse中生成的.class文件 2019.... java文件怎樣編譯成.class文件 2019.03.23 如何將class文件轉換成java文件 2019.02.28 iso文件怎麼...
搜狗指南
電腦javaclass文件查看與修改工具_class怎麼編輯查看,javaclass修改...
發布時間:2013-03-04
能對電腦中的java類class文件進行查看與修改的工具

download.csdn.net
下一頁

使用搜狗搜索APP
不管搜多長,我都能幫你忙
立即體驗

搜索
首頁-導航- 免責-用戶反饋
© 2020 SOGOU.COM

『柒』 Java中final一個method或者一個class會導致什麼

final修飾符可以修飾類、方法、變數。
1、被final修飾的類不可以被繼承;
2、被final修飾的方法不可以被重寫;
3、被final修飾的變數不可以被再次賦值。

『捌』 final class怎麼調用

在特定環境下通過源代碼調用。

『玖』 如何防止代碼被反編譯

由於apk是Android虛擬機載入的,它有一定的規范,加密apk後Dalvik無法識別apk了。完全避免是不可能的,總有人能夠破解你的代碼。但是有幾種方式來提高被反編譯取代碼的難度。
1 關鍵代碼使用jni調用本地代碼,用c或者c++編寫,因此相對比較難於反編譯

2 混淆java代碼。混淆是不改變代碼邏輯的情況下,增加無用代碼,或者重命名,使反編譯後的源代碼難於看懂。 網上開源的java代碼混淆工具較多,一般是用ant的方式來編譯的。

1 . 在工程文件project.properties中加入下proguard.config=proguard.cfg , 如下所示:
target=android-8
proguard.config=proguard.cfg
Eclipse會通過此配置在工程目錄生成proguard.cfg文件

2 . 生成keystore (如已有可直接利用)
按照下面的命令行 在D:\Program Files\Java\jdk1.6.0_07\bin>目錄下,輸入keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore
參數意義:-validity主要是證書的有效期,寫100000天;空格,退格鍵 都算密碼。
命令執行後會在D:\Program Files\Java\jdk1.6.0_07\bin>目錄下生成 android.keystore文件。

3. 在Eclipce的操作
File -> Export -> Export Android Application -> Select project -> Using the existing keystore , and input password -> select the destination APK file

經過混淆後的源代碼,原先的類名和方法名會被類似a,b,c。。。的字元所替換,混淆的原理其實也就是類名和方法名的映射。
但4大組件並沒有混淆(所有在清單文件定義的組件不能被混淆),因為系統需要通過清單文件來查找和運行應用程序。

proguard.cfg 文件代碼解讀
-optimizationpasses 5 ->設置混淆的壓縮比率 0 ~ 7
-dontusemixedcaseclassnames -> Aa aA
- ->如果應用程序引入的有jar包,並且想混淆jar包裡面的class
-dontpreverify
-verbose ->混淆後生產映射文件 map 類名->轉化後類名的映射

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* ->混淆採用的演算法.

-keep public class * extends android.app.Activity ->所有activity的子類不要去混淆
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
native <methods>; -> 所有native的方法不能去混淆.
}

-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
-->某些構造方法不能去混淆
}

-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

-keepclassmembers enum * { -> 枚舉類不能去混淆.
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable { -> aidl文件不能去混淆.
public static final android.os.Parcelable$Creator *;
}

熱點內容
蘇州數控編程培訓 發布:2025-01-11 05:42:51 瀏覽:855
編程式控制制小船 發布:2025-01-11 05:35:05 瀏覽:756
螢石雲清理緩存 發布:2025-01-11 05:34:29 瀏覽:779
怎麼在電腦上傳照片 發布:2025-01-11 05:30:20 瀏覽:487
python3哪個版本好 發布:2025-01-11 05:07:29 瀏覽:864
手機怎麼訪問外網 發布:2025-01-11 05:07:27 瀏覽:532
財務信息伺服器搭建 發布:2025-01-11 04:48:09 瀏覽:875
演算法實現過程 發布:2025-01-11 04:43:45 瀏覽:458
瞄準下載ftp 發布:2025-01-11 04:43:44 瀏覽:573
校園電影腳本 發布:2025-01-11 04:32:08 瀏覽:437