Ⅰ android如何做到防止反编译,保护自己的资源图片拜托了各位 谢谢
1.进行源码保护检测。检测DEX文件保护,查看DEX文件是否做了保护,避免法分子 反编译得到程序源码,从而杜绝恶意插入广告、恶意植入扣费代码等行为,保证用户体验以及APP的功能完整。 2.源码混淆保护检测。该项目主要用来弥补程序开发人员利用混淆源码做程序的漏洞,因为混淆源码作为一种常见的基础保护措施,并不严密,如果被专业人士利用,还是会造成相当程度的破坏。 3.资源文件保护检测。APP程序中的各种音频、视频、图片、文字等文件资料如果缺乏有效的保护,很容易被恶意篡改、替换和盗窃。比如程序中的音频格式或文字内容,如果被篡改,做成广告画面或违禁色情图片等,也是对开发人员和用户的权益侵害。 4. Android主配文件保护检测。该免费源码检测平台可以有效对Android主配置文件中的各个组件进行安全保护,预防其他人员在XML文件中插入代码,破坏和盗取相关信息,篡改应用程序的功能设定。 5.APK防二次打包保护检测。二次打包就是程序人员对下载的程序进行解压,删除原有的签名,自己设定一个签名工具在安装包上签名,这是一种盗用行为,侵害了原版程序设计人员的权益和利益。通过免费检测平台,可以有效查看安装包签名是否有过改动,可以有效防止二次打包的出现。 6、so文件保护,防止APP应用被第三方修改打包。 7.爱加密http://www.ijiami.cn/
Ⅱ apk加固,apk加固怎么可以防止反编译,保护apk源代码安全
apk源代码可以加固的的,源代码是加壳之后把重要的那部分代码隐藏起来不被看到,在一定基础上可以达到保护源代码的目的。
Ⅲ Android项目里如何混淆自己打的jar包或者防止被反编译
Android之防止反编译技巧:
1. 判断程序是否运行在模拟器上
boolean isRunningInEmualtor() {
boolean qemuKernel = false;
Process process = null;
DataOutputStream os = null;
try{
process = Runtime.getRuntime().exec("getprop ro.kernel.qemu");
os = new DataOutputStream(process.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
os.writeBytes("exit\n");
os.flush();
process.waitFor();
// getprop ro.kernel.qemu == 1 在模拟器
// getprop ro.proct.model == "sdk" 在模拟器
// getprop ro.build.tags == "test-keys" 在模拟器
qemuKernel = (Integer.valueOf(in.readLine()) == 1);
Log.d("com.droider.checkqemu", "检测到模拟器:" + qemuKernel);
} catch (Exception e){
qemuKernel = false;
Log.d("com.droider.checkqemu", "run failed" + e.getMessage());
} finally {
try{
if (os != null) {
os.close();
}
process.destroy();
} catch (Exception e) {
}
Log.d("com.droider.checkqemu", "run finally");
}
return qemuKernel;
}
2. 检测keystore签名,再与之前得做比较
public int getSignature(String packageName) {
PackageManager pm = this.getPackageManager();
PackageInfo pi = null;
int sig = 0;
try {
pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
Signature[] s = pi.signatures;
sig = s[0].hashCode();
} catch (Exception e1) {
sig = 0;
e1.printStackTrace();
}
return sig;
}
3. 检测包名,版本名和版本号,然后做判断:
private String getAppInfo() {
try {
String pkName = this.getPackageName();
String versionName = this.getPackageManager().getPackageInfo(
pkName, 0).versionName;
int versionCode = this.getPackageManager()
.getPackageInfo(pkName, 0).versionCode;
return pkName + " " + versionName + " " + versionCode;
} catch (Exception e) {
}
return null;
}
4. 把jpg图片写成是png格式得图片 但是最新版本的apktool已经修复了
5. 花指令,影响jd-gui 但是最新版本的jd-gui已经修复
private static final char[] wJ = "0123456789abcdef".toCharArray();
public static String imsi = "204046330839890";
public static String p = "0";
public static String keyword = "电话";
public static String tranlateKeyword = "%E7%94%B5%E8%AF%9D";
在每个类里面加入 如上字段。。。。
https://***/ 一个第三方得”爱加密“网站 1.需要使用官方的打包key工具打包后上传到"爱加密"网站进行处理,然后到网站上面下载,下载后还要用"爱加密"的打包工具再次进行打包即可。
Ⅳ 怎样防止Android apk被反编译,用什么加密方法来保护dex源码文件不被注入恶意代码杜绝二次打包的出现
1、混淆java代码。增加无用代码,或者重命名,使反编译后的源代码难于看懂。
2、关键代码使用jni调用本地代码,用c或c++编写,相对于class文件,so相对比较难于反编译。 需要开发者熟悉如何写c或c++代码。
3、如果自身时间或者技术有局限的话,现在国内有第三方加密平台。最近有家叫做 爱加密的非常活跃建议一试而且是免费的。
总的来说APP加密保护是一项比较难精的技术,易学的安全性能不佳。技术也在不断的更新,是没有绝对安全的。到不如直接交给专业的处理。
Ⅳ 如何防止Unity3D代码被反编译
加密原理(无需Unity源码):
1. IDA Pro打开libmono.so, 修改mono_image_open_from_data_with_name为
mono_image_open_from_data_with_name_0,
2. 替换实现mono_image_open_from_data_with_name,
extern mono_image_open_from_data_with_name_0(...);
mono_image_open_from_data_with_name(...) {
MonoImage *img = mono_image_open_from_data_with_name_0(...);
//发现数据文件头不是DLL前缀则解密 img->raw_data, 相应修改img->raw_data_len
return img;
}
3. 重新打包libmono.so; 替换Unity3D中的android下的版本.
4. 另外写个加密的工具,植入构建环境(MonoDeveloper或VS,添加一个打包后Build Phase来加密DLL); (IOS下禁用JIT固采用AOT编译,DLL中没有逻辑代码,所以无需操心);
从AndroidManifest.xml中可以看出,腾讯的改造应该是修改并替换了入口的classes.dex,把以前的入口 UnityPlayerProxyActivity替换为com.tencent.tauth.AuthActivity. 然后去加载了自定义的几个so: libNativeRQD.so. 周全考虑,为了防止第三方委托libmono去做解密而做了防护措施. 具体实现我还没做深入分析, 应该也是老套路.
libmono.so中的mono_image_open_from_data_with_name也被替换成了mono_image_open_from_data_with_name_0.
解密(android):
方法一: ROOT android系统(最好是一部手机,别搞模拟器,慢死), 挂载LD_PRELOAD的API hook来实现.
方法二: 内存特征码提取,简单高效无敌; 机器能读,你就能读;
Ⅵ 如何阻止APK反编译查看源代码
apk如何防止反编,就用反编译工具来举例,例如dex2jar和JD-GUI。dex2jar是将APK中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
具体步骤:首先将APK文件后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;解压下载的
dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录(在DOS命令下CD
目录)。运行dex2jar.bat classes.dex生成classes.dex.dex2jar.jar
运行JD-GUI(jd-gui.exe),打开上面生成的jar包,即可看到源代码了。
apk如何防止反编,现在大多开发者已经意识到了App加密保护的重要性,爱加密正是顺应行业的发展,对APK进行加密保护,防止反编译,保护开发者的创意不再被剽窃的第三方加密服务平台。
加密原理:通过对源码进行加壳保护,然后生成类似虚像的DEX壳文件,即使反编译也无法看到APK包的源码,达到防止反编译的目的。
另外,爱加密的三层加密保护技术:DEX加壳保护,DEX指令动态加载保护,高级混淆保护,可以保证App的动态安全和静态安全,年前推出的SO库保
护,使C/C++层面的代码得到了专业保护,让APK包无懈可击。并且,不断加强对App的保护力度,强力遏制打包党的横行,净化Android应用市
场,打造一个绿色的移动互联网生态链。
Ⅶ Android上,怎么用16进制加密apk的dex文件让别人无法反编译或进内部查看原代码
可以在Dex文件头隐藏另一个DEX数据并在运行时加载附带DEX数据。
构建非规范的Dex文件
通过反射调用DexFile类的方法加载附带DEX数据
通过反射实际调用DexFile的openDexFile方法
该种方式允许通过byte[]解析dex数据,而无须在再把DEX数据存储在设备的某个文件。
可以从安装APK文件、内存或dalvik-cache等读取dex数据。
该种方式将给自动化分析工具带来一个问题,自动化工具会按照dex格式处理DEX文件而不会处理附带的dex数据。需要特定的工具、16进制编辑器或手工提取嵌入的dex数据。
我们可以采用各种不同的方式增加嵌入数据的提取难度,比如:
对嵌入的DEX数据进行加密;
嵌入的DEX数据加密后在对其进行ZIP压缩;
使用native代码解密,直接从内存加载;
......等等
该种隐藏方式可以通过判断Dex文件头长度是否大于0x70检测。
Ⅷ android 代码混淆、压缩文件破解真能防反编译
很早以前安卓是很容易被破解的,后来谷歌意识到了这个问题,就多了一个proguard.cfg文件,就是用来混淆代码的,这在一定程度上阻止了apk被反编译。不过现在的反编译越来越厉害了,普通的代码混淆对于APK反编译没有效果了。现在要真正做到做apk反编译,要保护dex文件、so库文件、以及防止内存数据被静态、动态抓取等等,一般都是通过密码算法给dex加壳隐藏、对源码使用高级混淆、签名效验、使用花指令、对so文件使用算法加密等。这些单独一项可能还达不到较安全的保护,但是综合起来就会达到一个相对很高的安全层次。如果觉得麻烦,可以尝试用一下第三方APP加密如爱加密,今天上传,第二天就能拿到加固后的apk,很方便的。
Ⅸ Android APP的破解技术有哪些如何防止反编译
由于Android系统的开放性,导致Android
APK很容易被他人破解或是反编译,下面给大家介绍常用的APP破解工具和技术要求。同时根据自己以往的防破解经验,跟大家分析下如何防止反编译。
Android
APK运行环境依赖的文件/文件夹
res、DEX、主配文件Lib
只是简单的加密甚至没有任何保护措施。APKtool(一种反编译工具)可轻易将其轻松破解,再配合其他各种工具基本可以做到:源码暴露(代码混淆也几乎起不到任何安全作用)、资源文件裸奔、主配文件可任意修改、核心SO库暴露、暴力破解恶意利用等。部分大公司会对其应用APK包进行防二次打包和防APKtool破解,但其代码都是写在JAVA层,另外APKtool的可升级导致其安全保护级别也是非常低的。