android混淆so
1. 什麼是代碼混淆andriod和android-studio工程如何啟用代碼混淆功能
代碼混淆有兩種重要功能。其一,混淆代碼。其二,優化代碼。
進行代碼混淆的程序被稱為代碼混淆器(混淆工具)。進行代碼混淆的意義主要在於對代碼進行一定程度的加密。
在android 2.3之後,sdk中就已經集成了混淆器proguard(目錄在sdk\tools\proguard),所以我們可以很方便的直接在工程中開啟代碼混淆。
eclipse android工程開啟混淆功能,我們需要手動在項目文件.properties(我的是project.properties文件)中添加下面的代碼
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
某些方式創建的項目中可能已經有如上兩行了,只是默認被注釋掉了,只要把proguard.config這一行解注釋就好了。這樣代碼混淆功能就開啟了,在打簽名包時,項目會自動進行代碼混淆。
2. 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 大功告成,正常的編譯簽名後就可以防止代碼被反編譯了。
3. android studio怎麼混淆代碼
Android Studio上混淆打包apk方法:
//混淆,新版本是ninifyEnabled不再是runproguard
minifyEnabled true
//載入默認混淆配置文件及自定義混淆 配置
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard.cfg'
設置minifyEnabled true,就會在打包的時候進行代碼混淆處理. 其中proguard-android.txt不用管,在sdk目錄裡面,主要是配置了proguard.cfg文件。
直接在android studio創建項目不會有這個文件,而是 proguard-rules.pro文件,其實一樣的,因為項目是從eclipse遷移過來的,之前在eclipse上混淆是 proguard.cfg文件.
4. Android之如何混淆代碼和相關配置
項目發布之前混淆是必不可少的工作,混淆可以增加別人反編譯閱讀代碼的難度,還可以縮小APK包。
使用步驟:
1、修改project.properties文件:
Java代碼 收藏代碼
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
去掉proguard.config一行前面的#注釋;
2、配置proguard-project.txt文件:
這個是主配置文件,裡面配置哪些需要混淆,哪些不需要混淆的選項;
提供給外部的類、方法、變數等名字不能混淆;
在AndroidManifest中配置的類(Activity、Service等的子類及Framework類默認不會進行混淆)
不混淆Parcelable的子類,防止android.os.BadParcelableException
Jni中調用的類
反射用到的類
項目中的實體類
3、導出項目:
export簽名項目。
4、查看是否混淆成功:
用反編譯工具反編譯並對比未混淆的代碼;
5、運行ProGuard及其生成的文件介紹
在以release模式下打包apk時會自動運行ProGuard,這里的release模式指的是通過ant release命令或eclipse project->android tools->export signed(unsigned) application package生成apk。在debug模式下為了更快調試並不會調用proguard。
如果是ant命令打包apk,proguard信息文件會保存於<project_root>/bin/proguard文件夾內;如果用eclipse export命令打包,會在<project_root>/proguard文件夾內。其中包含以下文件:
mapping.txt表示混淆前後代碼的對照表,這個文件非常重要。如果你的代碼混淆後會產生bug的話,log提示中是混淆後的代碼,希望定位到源代碼的話就可以根據mapping.txt反推。
mp.txt描述apk內所有class文件的內部結構
seeds.txt列出了沒有被混淆的類和成員
usage.txt列出了源代碼中被刪除在apk中不存在的代碼
目前市面上有很多第三方應用加固的平台, 如果新應用發布前需要掃描或者加固的話,可以先試試免費的,例如騰訊御安全,建議自己先去加固測試下。
5. 如何混淆android代碼以及注意事項
系統自帶的proguard就可以了,注意事項主要是在proguard配置文件中忽略一些不能被混淆的類,
還有就是用到jni的話就要慎用proguard了,記得忽略這些類的混淆,以防止找不到native方法
http://blog.csdn.net/binyao02123202/article/details/18940715
6. android 混淆so怎麼辦
SO文件不能混淆,不然無法調用
7. android 混淆 什麼意思
Android代碼混淆,是為了你的apk被他人反編譯之後拿到源碼,如果你混淆了,那反編譯後的apk所有的java類都被改成了a.java/c.java之類的文件名,類裡面的屬性也變成abc之類的了,想拿到你的源碼就不可能了,直接在gradle(app)文件的android節點下加上下邊代碼。
buildTypes{
release{
minifyEnabledfalse
('proguard-android.txt'),'proguard-rules.pro'
}
}