当前位置:首页 » 安卓系统 » 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. 预防混淆

预防混淆一般是针对专用的反编译器设计的,目的就是预防被这类反编译器反编译。他是利用特定的反编译器或反混淆器的弱点进行专门设计。预防混淆对于特定的反编译器非常有效,所以在使用时要综合利用各种反编译器的特点进行设计。

热点内容
xp系统开机密码怎么设置 发布:2024-05-02 06:49:48 浏览:759
柱加密区公式 发布:2024-05-02 06:40:19 浏览:4
java字节转换 发布:2024-05-02 06:40:11 浏览:687
用c语言做的程序 发布:2024-05-02 06:26:10 浏览:325
解压用流量 发布:2024-05-02 06:21:46 浏览:316
云购源码系统 发布:2024-05-02 06:12:52 浏览:105
电脑如何进行安卓升级 发布:2024-05-02 06:10:08 浏览:37
元龙第5集免费看完整版缓存 发布:2024-05-02 06:03:47 浏览:668
脚本宣传片 发布:2024-05-02 05:56:26 浏览:570
有线投屏安卓手机如何设置 发布:2024-05-02 05:43:26 浏览:896