App加密那点事&浅探爱加密原理

先来说一下一些常用的加密方法:

  • 伪加密

伪加密是Android4.2.x系统发布前的加密方式之一,通过java代码对APK(压缩文件)进行伪加密,其修改原理是修改连续4位字节标记为”P K 01 02”的后第5位字节,奇数表示不加密偶数表示加密。

虽然伪加密可以起到一定防破解作用,但也会出现问题,首先使用伪加密对其APK加密后市场无法对其进行安全检测,导致部分市场会拒绝这类APK上传;其次,伪加密的加密方式和解密方式也早已公布导致它的安全程度也大大降低;再次,Android4.2.x系统无法安装伪加密的APK;最后伪加密只是对APK做简单保护,在java层源码加壳保护、核心so库、资源文件、主配文件、第三方架包方面却没有任何保护处理。注意:高版本不支持这样的方法,所以还是不要尝试使用这样的加密方式了。

  • 混淆保护

把原来有具体含义的类名,变量名,方法名,修改成让人看不懂的名字,例如方法名getUserName编程了方法名

破解:耐心

  • 运行时验证

运行时验证,主要是指在代码启动的时候本地获取签名信息然后对签名信息进行检验来判断自己的应用是否是正版,如果签名信息不是正版则提示盗版或者直接崩溃。当然你可以把必要的数据放在服务器端。

破解:找到smali文件中,判断是否相等的部分。改为常量true,即失效。

总之,反编译一些apk之后,只要是java代码写的总会有smil文件。对于smil文件,如果耐心读的话,还是可以查看到一些关键代码的。

相较于应用来说,游戏apk因为采用cocos2d-x
或者 unity3D,采用的是c++ 和c# 编写的跨平台程序,在apk采用JNI的方式。所以没有smali,可以防止静态被破解apk包。

当然游戏包apk
在运行的时候,会把.*so加载到内存中。动态也是可以在内存中抓取相应的数据。只不NDK 相对于smali破解来说,根部不是一个层级的关系。

难道真的就没有好的加密方式吗。想做一个应用非要把核心部分使用ndk这么复杂的东西嘛。

其实,我们完全可以借助第三方工具。比如爱加密(http://www.ijiami.cn/)以我上次使用gameChange.apk为例。

这是我在爱加密官网申请的加密程序。

该classes.dex是我原来的代码。没有混淆,没有任何的加密保护。反编译的话,真的是一丝不挂的漏了出来。

该classes.dex是经过爱加密处理之后的,反编译之后发现莫名其妙的代码。其实这两个类是,运行使用jni加载so库的代码。

NativeApplication
类,加载exec.so和execmain.so ,里面应该是固定的代码,是对源码

  1. package com.shell;
  2. import android.app.Application;
  3. public class NativeApplication
  4. {
  5. static
  6. {
  7. System.loadLibrary("exec");
  8. System.loadLibrary("execmain");
  9. }
  10. public static native boolean load(Application paramApplication, String paramString);
  11. public static native boolean run(Application paramApplication, String paramString);
  12. public static native boolean runAll(Application paramApplication, String paramString);
  13. }

复制代码

SuperApplication继承自Application,程序主入口:

  1. package com.shell;
  2. import android.app.Application;
  3. import android.content.Context;
  4. public class SuperApplication extends Application
  5. {
  6. protected void attachBaseContext(Context paramContext)
  7. {
  8. super.attachBaseContext(paramContext);
  9. NativeApplication.load(this, "com.example.gamechange");
  10. }
  11. public void onCreate()
  12. {
  13. NativeApplication.run(this, "android.app.Application");
  14. super.onCreate();
  15. }
  16. }

复制代码

在加密之后的apk包中,多了一个assets目录,该目录下,有一些ijiami.dat,其实这个就是我们原来的classex.dex

基本原理是在jni层, 使用DexClassLoader动态加载技术完成对加密classex.dex的动态加载,内存中解密classex.dex,完成动态加载。

PS:使用DexClassLoader动态加载技术

可以使用Android DexClassLoader完成DEX的动态加载,DEX文件可以附属在assert或raw目录也可以运行时从网络下载。

我们知道DexClassLoader加载的类是没有组件生命周期的,也就是说即使DexClassLoader通过对APK的动态加载完成了对组件类的加载,当系统启动该组件时,还会出现加载类失败的异常。为什么组件类被动态加载入虚拟机,但系统却出现加载类失败呢?

通过查看Android源代码我们知道组件类的加载是由另一个ClassLoader来完成的,DexClassLoader和系统组件ClassLoader并不存在关系,系统组件ClassLoader当然找不到由DexClassLoader加载的类,如果把系统组件ClassLoader的parent修改成DexClassLoader,我们就可以实现对apk代码的动态加载。

总结一下,爱家密的加密步骤:

  • 把原来的classex.dex 用未知的加密算法实现加密成assets/ijiami.dat
  • 把事先写好的jni代码和相应的classex.dex替换到原有的位置
  • 程序安装完运行起来以后,先运行爱加密的加壳程序,在jni里面动态加载原来的classex.dex代码,从而达到加壳保护的目的.
  • 源classex.dex 隐藏起来了,在静态的时候就没有办法对其破解。
  • 至于动态运行,最好还是在自己代码里面下工夫了。比如内存加密啦。

由于申请加密之后,爱加密需要增加自己资源(两个so,一个classex.dex文件和三个bin文件)只增加了198.1KB的容量,对于我们动辄上百MB的游戏app而言,这点都不算事儿。

原文地址:http://blog.csdn.net/chengyingzhilian/article/details/38372601

App加密那点事&浅探爱加密原理

时间: 2024-10-18 04:22:13

App加密那点事&浅探爱加密原理的相关文章

山寨App“暗算”屡禁不止!势头凶猛,爱加密安卓App加密防护!

目前,盗版.数据篡改和山寨问题严重威胁手机App的安全,之前小编也已经给大家介绍了山寨App盛行的原因.山寨App通过打法律擦边球以破解或者仿冒市场上一些热门App软件的方式,赚取软件使用费或广告费,此类行为严重危害了App市场的良性健康发展. 山寨App"暗算"用户屡禁不止,需重拳防护 爱加密(ijiami)安全工程专家表示,移动互联网繁荣表象背后的安全问题已经越来越突出:App破解牵扯出的一系列利益逻辑,如将相关App破解后,推出非官方App作为一种广告分发载体:德邦物流App开发

黑客可借App漏洞攻击手机银行客户端,爱加密为移动支付App提供安全防护!

安卓系统安全问题一直以来被业界所诟病.近日有安全报告指出,安卓手机系统漏洞严重威胁网民支付安全.利用安卓系统漏洞,黑客可以对手机银行客户端实施注入攻击,截获用户银行账号密码,造成财产损失.进行测试的16款手机银行客户端均未能防御此类攻击.    据中国互联网络信息中心(cnnic)的数据显示,由于中国手机支付用户规模成倍增长(同比增长126.9%),截止2013年12月已达1.25亿,移动支付成为大趋势.而伴随这一趋势产生的移动支付安全问题也"水涨船高".近年来,由于遭受木马.恶意插件

爱加密CEO接受创业邦独家专访:打造App运营的安全平台

摘要:近日,爱加密CEO高磊接受了由美国国际数据集团(IDG)和清科集团共同投资设立的创业邦的独家专访.目前,移动应用市场上破解版App.盗版App盛行,严重损害了开发者和用户的利益,爱加密移动安全平台为App安全提供一站式全方位保护,对盗版现象零容忍. APP开发者们(特别是Android开发者)大部分都有过这样的经历,辛辛苦苦做好的APP上架应用商店后,没过多久就遭遇"打包党"盗取源码.植入恶意病毒.添加广告SDK,然后眼睁睁地看着自己的应用被二次打包盗版"李鬼"

安卓App安全检查平台、爱加密App安全加密!

2014年6月初,爱加密高调推出免费自动化App安全检测平台,这是国内首家自动化App安全检测平台,也是爱加密推出的一个重磅产品.作为国内首家免费自动化App安全检测平台,在目前整个互联网行业,包括移动互联网行业还没有这样的服务平台出现,行业前景相当乐观.www.ijiami.cn 只需一键,专业简单,让风险漏洞无处遁形 爱加密漏洞分析平台的推出旨在打造一个服务于移动互联网开发者的安全服务平台,同时也给整个移动互联网安全领域带来一份保障.目前移动应用开发者越来越多,他们不知道自己的应用是否安全,

爱加密提供专业Android加固,做最好的App安全服务平台!

随着时代的进步,科技的发展,电子产品越来越多,也越来越先进,手机也逐渐的从之前的打电话的大哥大到可以发短信,发彩信,手写 上网,等等,到现在我们连银行支付都去用手机去支付,越来越多的人习惯性把自己的个人信息放在那个巴掌大的手机里,于是各种问题也渐渐的显现出来,例如由于盗版软件而带来的话费无缘无故被扣,流量无缘无故减少,个人信息泄露等,这对于个人信息高级集中的人来说,可以说是一个不小的打击. 有数据显示,今年前三个月,针对安卓智能手机的病毒呈现大幅增加的趋势,而第三方应用成为各种恶意软件"附体&q

App漏洞分析,爱加密全网首推智能安全检测

2014年6月初,爱加密高调推出免费自动化App安全检测平台,这是国内首家自动化App安全检测平台,也是爱加密推出的一个重磅产品.作为国内首家免费自动化App安全检测平台,在目前整个互联网行业,包括移动互联网行业还没有这样的服务平台出现,行业前景相当乐观. 文章参考:www.ijiami.cn 只需一键,专业简单,让风险漏洞无处遁形 爱加密漏洞分析平台的推出旨在打造一个服务于移动互联网开发者的安全服务平台,同时也给整个移动互联网安全领域带来一份保障.目前移动应用开发者越来越多,他们不知道自己的应

爱加密出席2014可信云服务大会,协力打造移动App安全环境

2014年7月15日和7月16日,在工业和信息化部指导下,2014可信云服务大会在北京国际会议中心第一会议厅隆重召开.中国通信标准化协会秘书长杨泽民.中央国家机关政府采购中心主任王力达.工信部电信研究院院长曹淑敏.工信部总工程师张峰.工信部通信发展司副司长陈家春.财政部政府采购管理办公室主任王瑛等出席会议. 目前,云计算在国内已经进入快速发展阶段,用户对于云服务的接受程度也大幅提高,产业具有良好的发展前景.在该产业蓬勃发展的同时,云计算市场也存在鱼龙混杂,服务质量参次不齐,导致用户不信任,给云计

APP安全环节缺失,爱加密助手游开发者克服APK破解难题

2013年手游行业发展势头开始越显强劲,手游开发者的规模与收入均实现了大幅增长.但是,在手游高速发展的同时,由于手游行业的快速的发展,一些问题,例如手游App破解.盗版也日益凸显.手机游戏软件被破解后注入恶意代码.盗取用户财产.窃取用户设备信息的现象屡见不鲜.2014年1月,台湾易游网络有限公司旗下代理的金庸授权武侠手机游戏<神雕侠侣>在香港地区透过打怪掉落领取到的7-Eleven$20(港币)电子现金券,3小时内被黑客恶意刷走价值20万港元的货品.同年2月,一个名为Ethical Spect

防止Android手游apk遭破解, 爱加密安卓App加固保安全!

现如今手机App的开发者无论是个人还是企业,在开发过程中,许多App应用开发商的技术不够成熟,因此在App中会留有漏洞.再加上有些市场对恶意App无法进行识别!导致许多垃圾的应用程序非常容易出现在用户的手机上,如果只是伤害手机系统,那问题还不那么严重.但是威胁到个人信息和财产安全,结果就损失惨重,所以提醒大家下载App应用时多注意点. 目前手游App很火,用户量很多,但是想找到一款免费的手游并不容易.很多手游要么就是一大堆植入的广告,要么就是挂着免费的幌子,下载后一打开还要收费的.而游戏本身的体