对android的apk包加密

正文从编号开始

注:QQ群号 296733909

(背景介绍之类的跳过就好啦)开发android应用肯定免不了需要写java代码,然而用java写的应用并不安全,可以用android逆向助手之类的工具,很容易的反编译apk包,查看到该apk包的源代码,于是便有了混淆工具来混淆java代码。即便是混淆了,也不安全,混淆使你的代码变得难懂,但终究还是能读懂,而且混淆并不是那么容易的事,还要写文件来保证哪些需要混淆,哪些不需要混淆。

通过了解android的一些原理,可以知道安卓打包以后会生成一个classes.dex文件,而反编译工具反编译的就是此文件.于是只要把该文件加密即可。

爱加密是个不错的网站,把apk包传上去,他们会帮你加密apk包,等个1分钟到5天左右,如果通过了安全检测,就帮你加密好了,然后你下载下来,用反编译工具反编译之,你会发现原来的dex文件没有了,而在assets目录下多了一个ijiami,dat文件,此文件其实就是被加密过的dex。

然而你把包上传了,你总会担心些什么,是吧。而且加密所需时间不定,晚上传的包可能第二天才能看到结果,周末传的包可能周一才能看到结果。而且还要对你上传的包做安全检测,万一你的包。。。嗯,所以我们自己来加密吧。

(正文来啦)

我自己写了一个加密方法来加密dex文件,一起来试试看吧。

加密所需要的工具在百度网盘,地址:http://pan.baidu.com/s/1eQzssKE

1.运行你自己的项目,将bin目录下的生成的classes.dex复制到该文件夹下的tool目录下(当然你也可以解压apk包,取出class.dex文件拿来用)

2.右键编辑first.bat,修改dx命令所在的目录,dx命令在android-sdk\build-tools\x.x.x\下(照着我的路径改自己的路径就好了)

3.首先运行first.bat,会生成一个dex.jar

4.然后运行second.bat,会生成一个_rf.dat文件

5.打开eclipse,导入该文件夹下的androidEn项目(该项目为我测试通过的项目,里面的dex已加密,可以运行下看效果)

6.替换assets,res目录和AnroidMainfest.xml文件为你自己项目里的文件,合并libs文件夹,删除原项目的jar引用包

7.把刚才生成的_rf.dat文件放到assets目录下面

8.修改AnroidMainfest.xml文件,修改后如下:

<?xml version="1.0" encoding="utf-8"?>
...
    <application
        ...
        android:name="com.shell.AppApplication"> 

        <meta-data android:name="TO_RUN_ACTIVITY" android:value="android.app.Application"/>
	<!--
	上面两行为需添加的行,其中com.shell.AppApplication为加密后程序的入口,不得更改
	TO_RUN_ACTIVITY的值默认为android.app.Application,一般情况下也不用更改
	如果你有自己的Application,则修改value的值,如com.example.MyApplication
	当然你也可以把value的值修改为将启动的activity的值,如com.example.YourActivity
	--!>
        <activity
	...
        </activity>
    </application>
	...
</manifest>

9.运行项目,在手机上查看效果

10.若对以上步骤有疑问,或者项目无法运行、亦或想知道具体原理,可以加QQ群(群号296733909),询问相关人员,获取加密的源码自行研究。

原理简述:利用dexclassloader加载dex文件。用C或C++写dex文件的加密解密,利用jni,在C,C++代码里写dexclassloader的加载和运行,其中还涉及到反射问题等,想知道详细思路可以加群(296733909)讨论。

百度关键字:dexclassloader,jni

(觉得不错的话,欢迎转载哦!!转载请注明出处就好啦!

时间: 2024-10-11 07:11:23

对android的apk包加密的相关文章

记:Android 安装apk的代码实现

private void installApk(String fileUri) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse("file://" + fileUri), "application/vnd.android.package-archive"); startActivity(intent); this.finish();} 记:Androi

Cocos2d-x3.1下 Android,APK自动升级

项目要做Android的自动升级,对于我们之前做iOS的转Cocos开发做Android方面的功能..... 不对说了.这里记录下我的实现过程. 原文地址:http://blog.csdn.net/qqmcy/article/details/36713113 首先我们要先知道Cocos下Android有几个Activity,我推测是只有一个,如果不对的话请批评指正啊. 所以我们要在主Activity也就是AppActivity.java里面添加如下代码: static AppActivity a

Android实践APK一键反编译

1.需要软件:onekey-decompile-apk 2.软件功能: 1)集成apktool/dex2jar/jd-gui. 2)只需执行一步即可反编译出apk所有文件(资源文件和jar等等). 3)反编译完毕后自动打开jd-gui反编译jar文件. 3.使用方法: 1)将下载的 onekey-decompile-apk.zip解压缩. 2)将apk文件放到 onekey-decompile-apk目录下. 3)将apk文件拖拽到_onekey-decompile-apk.bat上. 4.执行

Android 下载APK 安装APK 打开APK

今天有了一个这样的需求 :下载一个apk文件,然后当你下载完成后,按钮的文字发生改变,变成点击安装,然后安装完成之后,变成打开. 这是下载apk的方法: /** * 后台在下面一个Apk 下载完成后返回下载好的文件 * * @param httpUrl * @return */ private File downFile(final String httpUrl) { new Thread(new Runnable() { @Override public void run() { try {

Android学习--apk打包过程

1. 使用aapt工具,给所有的res目录下的资源文件生成对应的id,id会被放进R.java文件中 2. JavaC编译器,将所有Java文件转换为Class文件,其中,内部类会分别生成.class文件,命名格式为MainActivity$内部类.class R$String.class等 3. 将class中的公共常量提取出来,生成dex文件 4. aapt将生成的menifest+dex+resource+程序签名打包成zip格式,其实就是apk格式.说明,META-INF是程序签名信息

将HTML5封装成android应用APK文件的几种方法(转载)

越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜欢在浏览器上输入复杂的网址:另一方面,Html5 Web App 存放在服务器端,在每次使用时需要进行数据传递,会造成流量浪费.有些开发者不想接触复杂的JAVA代码,那么,有什么办法,既可以使用HTMl5开发应 用,又可以将其简单封装成APK文件呢? 一.Android SDK中的WebView1.

关于Android文件Apk下载的那点事

1.Android文件Apk下载变ZIP压缩包解决方案 如果你的下载服务器为Nginx服务器,那么,在Nginx安装目录下的conf/mime.types文件的对应位置,加上以下一行语句,指定APK文件的MIME类型为 application/vnd.android.package-archive 即可: [html] view plaincopy application/vnd.android.package-archive     apk; 如果是java-web服务器 只需要修改web.x

Android实践--apk反编译

Android apk反编译一步到位 Andriod的apk在编译打包的时候将资源文件进行了二进制编译,.class文件编译成了.dex文件,经过了这几步之后,我们是无法查看资源文件和java文件,如果我们想看看市面上一些优秀app的设计和实现,我们就需要做一些工作了,具体有一下三个方面市面上有些app的布局设计的还是不错的,这时候你要借鉴参考一下,需要做一些工作了: 1.反编译资源文件:   需要apktool工具.apktool下载     Google code官方下载 2.反编译dex文

xmlns:android=&quot;http://schemas.android.com/apk/res/android的作用是

xmlns:android="http://schemas.android.com/apk/res/android的作用是 这个是xml的命名空间,有了他,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为语法文件.或者语法判断器什么的 这个主要作用是在运行的时候那些控件的属性都是通过它来识别的,如果上面你写错了,不会有任何问题,但是在运行的时候就会有问题,提示你没有指定宽度等什么.这个是不用联网的. Android 自定义的xmlns其实很简单,语法