當前位置:首頁 » 安卓系統 » android源碼加密

android源碼加密

發布時間: 2022-08-05 15:21:13

① 求解釋這段安卓代碼中的AES加密流程

AES加密過程涉及到 4 種操作,分別是位元組替代、行移位、列混淆和輪密鑰加。

1.位元組替換:位元組代替的主要功能是通過S盒完成一個位元組到另外一個位元組的映射。

2.行移位:行移位的功能是實現一個4x4矩陣內部位元組之間的置換。


4.輪密鑰加:加密過程中,每輪的輸入與輪密鑰異或一次(當前分組和擴展密鑰的一部分進行按位異或);因為二進制數連續異或一個數結果是不變的,所以在解密時再異或上該輪的密鑰即可恢復輸入。

5.密鑰擴展:其復雜性是確保演算法安全性的重要部分。當分組長度和密鑰長度都是128位時,AES的加密演算法共迭代10輪,需要10個子密鑰。AES的密鑰擴展的目的是將輸入的128位密鑰擴展成11個128位的子密鑰。AES的密鑰擴展演算法是以字為一個基本單位(一個字為4個位元組),剛好是密鑰矩陣的一列。因此4個字(128位)密鑰需要擴展成11個子密鑰,共44個字。

② Android gradle怎麼加密代碼

Android Studio和Eclipse能做到的是代碼混淆,Android項目的代碼混淆都是通過配置項目properties文件中的proguard.config屬性完成的,
如:proguard.config=proguard.cfg,那混淆的邏輯就寫在了proguard.cfg這個文件中。
至於proguard.cfg怎麼寫,要根據你的具體情況來做了(你想混淆哪些代碼由你自己定義)
下面是一個proguard.cfg的例子:

-optimizationpasses 5 # 指定代碼的壓縮級別
-dontusemixedcaseclassnames # 是否使用大小寫混合
- # 是否混淆第三方jar
-dontpreverify # 混淆時是否做預校驗
-verbose # 混淆時是否記錄日誌
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆時所採用的演算法

-keepattributes SourceFile,LineNumberTable

-dontwarn org.apache.**
-dontwarn com.appsflyer.**

#四大組件不能混淆
-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 * extends android.view.View {*;}

-keepclasseswithmembernames class * {
native <methods>;

}

-keepclassmembers class * {
public <init>(org.json.JSONObject);
}

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keepattributes *Annotation*,EnclosingMethod
-keepclasseswithmembers class * {
public <init>(android.content.Context, Android.util.attributeSet, int);
}

# Google Play Services library
-keep class * extends java.uti.ListResourceBundle{
protected Object[][] getContents();
}

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable{
public static final *** NULL;
}

-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable{
public static final ** CREATOR;
}

③ 安卓加密的安卓開發術語

1.混淆源碼。代碼混淆(Obfuscatedcode)亦稱花指令,可以藉助一些工具,市場有很多高級混淆代碼工具。花指令的基本原理是由設計者特別構思一些指令,可以使反匯編的時候出錯,讓破解者無法清楚正確地反匯編程序的內容,迷失方向。文件夾混淆是利用Android系統環境下的文件夾名的特殊性來對源碼文件夾進行混淆,讓混淆後的文件夾在Window看起來失去原有的邏輯性,但是完全不影響其在Android系統上的運行。Android技術驗證的原理是在代碼啟動的時候本地獲取簽名信息後對簽名信息進行檢驗來判斷自己的應用是否是正版,如果簽名信息不是正版則提示盜版或者直接崩潰。
2.使用偽加密保護方式,通過java代碼對APK(壓縮文件)進行偽加密,其修改原理是修改連續4位位元組標記為」PK0102」的後第5位位元組,奇數表示不加密偶數表示加密。偽加密後的APK不但可以防止PC端對它的解壓和查看也同樣能防止反編譯工具編譯。
3.通過標志尾添加其他數據從而防止PC工具解壓反編譯,這樣處理後把APK看做壓縮文件的PC端來說這個文件被破壞了,所以你要對其進行解壓或者查看都會提示文件已損壞,用反編譯工具也會提示文件已損壞,但是它卻不會影響在Android系統裡面的正常運行和安裝而且也能兼容到所有系統
4.對DEX、RES、SO庫等主要文件進行加密保護。Dex文件是APK中最重要、最需要保護的,因為dex中存放了代碼的信息,如果是一個沒有做過任何保護的APK,破解者通過使用dex2jar和jd-gui簡單幾步就可以查看到源碼。同樣,SO庫文件是APK的核心代碼,一旦被破解,APK就很容易被破解了。不過這方面對開發者的技術要求很高,想要簡單的話,就藉助類似於愛加密這種第三方工具。通過使用加殼技術,對dex文件做了一層保護殼,這樣破解者就無法通過正常手段反編譯出代碼文件,從而保護代碼的安全。

④ 怎樣防止Android apk被反編譯,用什麼加密方法來保護dex源碼文件不被注入惡意代碼杜絕二次打包的出現

防止Android apk被反編譯的方法:

  1. 判斷apk簽名是否與原版簽名是否一致

  2. 代碼混淆,將混淆的級別設置高點,混淆出來以後代碼全部變亂

  3. 使用NDK編程,將核心演算法用c/c++來編寫,打包成so庫供java層調用

⑤ 問一下,給android加密哪些加密方式最好最有效

朋友你好,很高興為你解決問題。

android加密的最佳加密方式可採用安卓應用APK加密工具,一鍵集成DEX加密、SO文件加密、DLL文件加密、內存保護、反調試、防二次打包等功能。

可以有效避免核心代碼被破解,請求協議被偽造,被植入惡意代碼後重打包等諸多安全風 險!

有效五個杜絕:

• 杜絕APP包被植入病毒或廣 告,竊 取用戶隱 私信息,推送垃 圾廣 告;

• 維持應用原有的純凈度和企業信譽度。

• 杜絕競 爭對手逆向分析應用核心技術,竊 取企業勞動成果;

• 杜絕攻 擊者挖掘應用漏洞,發起惡意攻 擊行為。

• 杜絕應用廣 告代碼被刪除,影響經 濟收 益;

• 杜絕應用廣 告代碼被篡改,廣 告收 益被攻 擊者竊取。

希望以上解答能夠幫助到你,參考資料:http://www.kiwisec.com/proct/apkEncrypt.shtml。

祝:開心每一天。

⑥ android 加密方式有哪些

安卓APP加密的方法主要分成三類:源碼加密、數據安全和應用保護,而每一類又分成好幾個小項。 源碼加密包括:Dex文件保護、防二次打包、so文件保護、資源文件保護。以Dex文件保護為例,Dex文件保護又包括:高級混淆、DEX文件加殼、DEX文件加花、。可以看看安卓巴士的教程:http://www.apkbus.com/thread-312020-1-1.html

⑦ android 程序怎麼加密,不讓別人反編譯

代碼混淆(code obfuscation)是指將計算機程序的代碼,轉換成一種功能上等價,所謂功能上的等價是指其在變換前後功能相同或相近。其解釋如下:程序P經過混淆變換為P『,若P沒有結束或錯誤結束,那麼P』也不能結束或錯誤結束;而且P『程序的結果應與程序P具有相同的輸出。否則P』不是P的有效的混淆。


目前對於混淆的分類,普遍是以Collberg 的理論為基礎,分為布局混淆(layout obfuscation)、數據混淆(data obfuscation)、控制混淆(control obfuscation)和預防混淆(preventive obfuscation)這四種類型。

1. 布局混淆

布局混淆是指刪除或者混淆軟體源代碼或者中間代碼中與執行無關的輔助文本信息,增加攻擊者閱讀和理解代碼的難度。軟體源代碼中的注釋文本、調試信息可以直接刪除,用不到的方法和類等代碼或數據結構也可以刪除,這樣即可以使攻擊者難以理解代碼的語義,也可以減小軟體體積,提高軟體裝載和執行的效率。軟體代碼中的常量名、變數名、類名和方法名等標識符的命名規則和字面意義有利於攻擊者對代碼的理解,布局混淆通過混淆這些標識符增加攻擊者對軟體代碼理解的難度。標識符混淆的方法有多種,例如哈希函數命名、標識符交換和重載歸納等。哈希函數命名是簡單地將原來標識符的字元串替換成該字元串的哈希值,這樣標識符的字元串就與軟體代碼不相關了;標識符交換是指先收集軟體代碼中所有的標識符字元串,然後再隨機地分配給不同的標識符,該方法不易被攻擊者察覺;重載歸納是指利用高級編程語言命名規則中的一些特點,例如在不同的命名空間中變數名可以相同,使軟體中不同的標識符盡量使用相同的字元串,增加攻擊者對軟體源代碼的理解難度。布局混淆是最簡單的混淆方法,它不改變軟體的代碼和執行過程。

2. 數據混淆

數據混淆是修改程序中的數據域,而對代碼段不作處理。常用的數據混淆方式有合並變數、分割變數、數組重組、字元串加密等。

合並變數是將幾個變數合並為一個數據,原來的每個變數占據其中一個區域,類似於一個大的數據結構。分割變數則是將一個變數分割為兩個變數,對分割前後提供一種映射關系,將對一個變數的操作轉化為對分割後兩個變數的操作。

數組重組有數組的分割、合並、折疊和平滑等幾種方式。分割是將一個數組分成2個或多個相同維度的數組;合並則相反;折疊是增加數組的維數;平滑則是相反。

在ELF文件中,全局變數和常量字元串存放在數據段中,反匯編工具可以輕易查找到字元串與代碼之間的引用關系。在軟體破解中,通過一些字元串提示可以很方便的找到代碼關鍵語句,從而破解軟體。字元串加密則可以對這些明顯的字元串進行加密存儲,在需要時再進行解密。

3. 控制混淆

控制混淆也稱流程混淆,它是改變程序的執行流程,從而打斷逆向分析人員的跟蹤思路,達到保護軟體的目的。一般採用的技術有插入指令、偽裝條件語句、斷點等。偽裝條件語句是當程序順序執行從A到B,混淆後在A和B之間加入條件判斷,使A執行完後輸出TRUE或FALSE,但不論怎麼輸出,B一定會執行。

控制混淆採用比較多的還有模糊謂詞、內嵌外聯、打破順序等方法。

模糊謂詞是利用消息不對稱的原理,在加入模糊謂詞時其值對混淆者是已知的,而對反混淆者卻很難推知。所以加入後將干擾反匯編者對值的分析。模糊謂詞的使用一般是插入一些死的或不相關的代碼(bogus code),或者是插入在循環或分支語句中,打斷程序執行流程。

內嵌(in-line)是將一小段程序嵌入到被調用的每一個程序點,外聯(out-line)是將沒有任何邏輯聯系的一段代碼抽象成一段可被多次調用的程序。

打破順序是指打破程序的局部相關性。由於程序員往往傾向於把相關代碼放在一起,通過打破順序改變程序空間結構,將加大破解者的思維跳躍。

4. 預防混淆

預防混淆一般是針對專用的反編譯器設計的,目的就是預防被這類反編譯器反編譯。他是利用特定的反編譯器或反混淆器的弱點進行專門設計。預防混淆對於特定的反編譯器非常有效,所以在使用時要綜合利用各種反編譯器的特點進行設計。

熱點內容
清oracle緩存 發布:2022-09-27 14:54:41 瀏覽:460
移動loid密碼是多少 發布:2022-09-27 14:53:16 瀏覽:232
oracle資料庫原理 發布:2022-09-27 14:53:09 瀏覽:244
戰艦少女文件夾 發布:2022-09-27 14:53:03 瀏覽:383
數控車床c軸怎麼編程 發布:2022-09-27 14:51:47 瀏覽:485
編程貓顏色值 發布:2022-09-27 14:46:52 瀏覽:223
我的世界如何讓伺服器在地獄 發布:2022-09-27 14:46:51 瀏覽:362
編程火箭發射 發布:2022-09-27 14:45:18 瀏覽:660
我的世界躲貓貓伺服器172 發布:2022-09-27 14:45:14 瀏覽:575
如何配置電腦運行安卓 發布:2022-09-27 14:45:12 瀏覽:758