當前位置:首頁 » 編程軟體 » app反編譯混淆的代碼

app反編譯混淆的代碼

發布時間: 2025-05-07 12:48:30

『壹』 android代碼混淆以及怎麼判斷一個apk代碼是否被混淆過

1、proguard原理
java代碼編譯成二進制class文件,這個class文件也可以反編譯成源代碼,除了注釋外,其他的code基本都可以看到。為了防止重要code被泄露,我們往往需要混淆,即把方法名,變數名,類名,包名等這些java元素的名稱改成讓人意想不到的名稱,這樣代碼結構就沒有變化,還可以運行,但是想弄懂代碼的架構卻很難。proguard就起到了這樣的作用:
一、它可以分析一組class的結構,根據用戶的配置,然後把這些class文件中可以混淆的java元素進行混淆

二、刪除無效的代碼

三、對代碼進行優化(使用adt插件導出的apk,還進行zipalign優化)

預設情況下,proguard會混淆所有代碼,但是下面幾種情況是不能改變java元素的名稱,否則就會導致程序出錯。
一、用到反射的地方(android中的api常用@hide注釋掉,開發者在調用相應的方法時,需要用到反射)

二、當app的代碼要依賴於系統的介面時,如被系統代碼調用的回調方法,這種方法比較復雜

三、java元素名稱是配置文件中配置好的

所以在使用proguard時,我們需要有個配置文件告訴proguard,哪些java元素是不能混淆的。

2、proguard配置

-dontwarn預設proguard會檢查每一個引用是否正確,但是第三方庫里往往有些不會用到的類,沒有正確引用,如果不配置的話,系統就會報錯。

-keep指定的類和類成員被保留作為入口

-keepclassmembes指定的類成員被保留。

-keepclasswithmembers指定的類和類成員被保留,假如指定的類成員存在的話。

『貳』 Android 反編譯之後的源代碼類名被混淆了,類名變為a-z毫無意義的名字,有什麼辦法可以找到原始的類名嗎

沒辦法 就是這樣 不然源代碼隨便改 就亂了

『叄』 Android如何代碼混淆,防止apk程序被反編譯

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

熱點內容
全民農場伺服器關閉什麼時間開啟 發布:2025-05-08 01:29:20 瀏覽:674
msde資料庫下載 發布:2025-05-08 01:21:53 瀏覽:286
海鷗優化演算法 發布:2025-05-08 01:12:52 瀏覽:972
威綸通exob禁止反編譯設置 發布:2025-05-08 01:06:05 瀏覽:286
天津建經加密狗 發布:2025-05-08 01:06:04 瀏覽:208
filecoin幣與分布式存儲 發布:2025-05-08 00:55:22 瀏覽:178
取存儲過程結果集 發布:2025-05-08 00:53:04 瀏覽:53
android木馬遠控 發布:2025-05-08 00:47:18 瀏覽:151
linuxusb工具 發布:2025-05-08 00:43:43 瀏覽:741
宅吧伺服器地址 發布:2025-05-08 00:43:32 瀏覽:263