① 怎么让android studio的编译的aar防止反编译
1、 简述
在比较大的 Android 项目的开发中,我们经常会遇到工程、jar 包等等之间相互引用的方式。一般我们通过在 gradle 文件中配置依赖来解决
通用配置
Gradle 的一些基本依赖配置方式如下:
compile fileTree(dir: 'xxx', include: ['*.jar', "*.xxx"]):将某个目录下所有符合扩展名的文件作为依赖;
compile 'com.xx.xx:ProjectName:Version':配置Maven` 库作为依赖;在 Maven 库中心 可以搜索自己想用的库进行依赖;
compile project(':AnotherMole'):配置另一个 Mole 作为本 Mole 的依赖,被依赖的 Mole 必须被导入到当前工程中;
compile files('xxx.jar'):配置某个 jar 包作为依赖。
看起来不错,基本通用的配置都已经存在了。一般对于中等小型的工程,这种开发方式完全没有问题。但是有时候 A 和 B 两个工程,想同时引用另一个公共的 Mole C,而这个 Mole 可能是一个比较复杂的 Android Mole,可能包含了一些主题、UI 、资源文件等等,这时候,如果用 Mole 依赖的方式来配置,不免有些困难,因为 A 和 B 都要导入 C,而且要随时关注 C 的更改。
好在 Android Studio 提供了 aar 库的打包方式,我们可以把 C 作为 library 进行打包,输出 aar 文件,然后在 A 和 B 中,配置 aar 库依赖,就可以解决。
2、aar 文件简介
要输出 aar 文件,必须将 Mole 配置为 library
输出 aar : apply plugin: 'com.android.library';
输出 apk :apply plugin: 'com.android.application'。
将 Mole 配置为 library 后,构建输出一个 aar 文件,根据渠道和 BuildType 的不同,在相应的目录下可以找到。比如对 BuildType 为 debug 的配置,输出为:[MoleName]/build/outputs/aar/[MoleName]-debug.aar。一份 aar 文件其实就是一份 zip 包,和 jar 不同的是,它将一些资源文件、第三方库文件、so 文件等等都打包在内,而代码文件编译后压缩在在 classes.jar 中。
3、导入 aar 的方式引用
这种方式比较简单,打开 Project Structure,添加一个新 Mole,然后选择 Import *.JAR or *.AAR Package 的方式导入
导入后,在你的工程下面,会生成一个文件夹,里面是 aar 文件以及 Android Studio 的配置文件。
接着可以在 gradle 中配置依赖了,其他 Mole 可以引用这个 Mole 了,依赖方式使用 compile project 的方式即可。
缺点:被依赖的 aar 无法 F3 跟进去,无法看到资源文件内容以及目录层级等等缺陷。
4、使用配置依赖的方式引用
gradle 其实还有另一种依赖可以引用 aar:
compile(name: 'xxx', ext: 'aar')。
首先需要将 aar 文件放入引用 Mole 的 libs 目录下,和一般的 jar 文件类似。然后在 gradle 配置文件中把 libs 目录加入依赖:
repositories
flatDir {
dirs 'libs'
}
}
接着在 gradle 的依赖配置中加入 compile(name: 'xxx', ext: 'aar') 这一句,依赖即可关联完毕。构建一下工程,在 Mole 的build/intermediates/exploded-aar 目录下,可以看到有一些临时文件生成
被导入 aar 生成的临时文件
Android Studio 安装反编译插件后,可以通过 F3 跟进到 class 文件里面,如果你有被依赖 Mole 的源代码的话,还可以 Attach Source 关联源代码查看。另外,可以很方便的查看 aar 中的资源文件。
另外,这种依赖方式更新 aar 后,生成的临时文件也会随之变动,不用担心改动不同步的问题。
② android apk怎么防止反编译
没有好的方式,只能混淆apk,防止反编译后很容易被破解
③ Android APP的破解技术有哪些如何防止反编译
Android APP破解主要依靠利用现有的各种工具,如下:
1)APKtool
2)dex2jar
3)jd-gui
4)签名工具
防止反编译,介绍一种有效对抗native层代码分析的方法——代码混淆技术。
代码混淆的学术定义如下:
代码混淆(code obfuscation)是指将计算机程序的代码,转换成一种功能上等价,所谓功能上的等价是指其在变换前后功能相同或相近。其解释如下:程序P经过混淆变换为P‘,若P没有结束或错误结束,那么P’也不能结束或错误结束;而且P‘程序的结果应与程序P具有相同的输出。否则P’不是P的有效的混淆。
目前对于混淆的分类,普遍是以Collberg 的理论为基础,分为布局混淆(layout obfuscation)、数据混淆(data obfuscation)、控制混淆(control obfuscation)和预防混淆(preventive obfuscation)这四种类型。
腾讯御安全保护方案提供了以上所述四种混淆分类的多维度的保护,布局混淆方面,御安全提供了针对native代码层中的函数名进行了混淆删除调试信息等功能;数据混淆方面,御安全提供了针对常量字符串加密及全局变量的混淆的功能;控制混淆方面,御安全针对代码流程上,提供了扁平化,插入bogus 分支以及代码等价变换等功能;预防混淆方面,御安全在混淆过程中加入了针对主流反编译器的预防混淆的代码,能够有效地抵抗其分析。御安全还对应用开发者提供不同等级的保护力度及多种混淆方式的功能的选择,用户可以根据自己的需求定制不同的混淆功能保护。
同时,御安全保护方案除了提供代码混淆保护方面的技术,还提供代码虚拟化技术及反逆向、反调试等其他安全保护方案,综合使用多种保护方案可以有效地提高代码安全。
④ 怎么防止android软件被反编译,破解
开发软件中有对应功能,打包加密就可以了!
⑤ Android APP的破解技术有哪些如何防止反编译
由于Android系统的开放性,导致Android
APK很容易被他人破解或是反编译,下面给大家介绍常用的APP破解工具和技术要求。同时根据自己以往的防破解经验,跟大家分析下如何防止反编译。
Android
APK运行环境依赖的文件/文件夹
res、DEX、主配文件Lib
只是简单的加密甚至没有任何保护措施。APKtool(一种反编译工具)可轻易将其轻松破解,再配合其他各种工具基本可以做到:源码暴露(代码混淆也几乎起不到任何安全作用)、资源文件裸奔、主配文件可任意修改、核心SO库暴露、暴力破解恶意利用等。部分大公司会对其应用APK包进行防二次打包和防APKtool破解,但其代码都是写在java层,另外APKtool的可升级导致其安全保护级别也是非常低的。
⑥ 如何防止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 大功告成,正常的编译签名后就可以防止代码被反编译了。
⑦ android 怎么防止dex反编译
防止Android apk被反编译的方法:
1、判断apk签名是否与原版签名是否一致。
2、代码混淆,将混淆的级别设置高点,混淆出来以后代码全部变乱。
3、使用NDK编程,将核心算法用c/c++来编写,打包成so库供java层调用。
⑧ eclipse android apk防止反编译 怎么做
proguard.config 后面指定一个确定的文件,比如你工程中默认生成的 proguard-project.txt。
然后在 proguard-project.txt中进行混淆配置,并使用 android tool-> Export signed ...导出签名的发布包apk,这样的apk包就可以防止反编译了。