androidapk加固
⑴ 【移动安全】腾讯乐固对apk文件加固失败
乐固官方问题描述模板:
1、小德通+com.idcvideo.xiaodetong【重要】
2、安卓6.0手机,进入应用页面后,加载业务so库后应用闪退【非常重要】
3、安卓6.0手机非必现(如需要登录,提供登录账号)【非常重要】
4、765871277(最好是QQ 方便沟通 快速解决问题)【重要】
5、目前只有加固后的apk(至少要提供加固后的apk)【非常重要】
6、日志文件见附件【重要】
7、问题复现环境:华为手机 MAL-AL10 安卓6.0 【非常重要】
乐固加固前后的apk包内。对比后很明显的看到,classes.dex文件,大小已经发生了很大的变化。同时多出了tencent_stub文件。猜测,classes.dex包是编译后的Android可执行,运行时加载。在65536个方法时,Mulitudex我们都是知道的,之前看《2018美团技术年报》,美团移动团队用python筛选方法,将常用方法放到一个dex文件中,减少ART切换dex的频率。
腾讯的乐固加固,大概是在dex文件中插入tencent_stub引用,同时对原dex内部的方法进行篡改,避免dex2-jar的反编译。这个做法的风险,就是动态加载失败。我觉得是这样,Android6.0是ART转正的版本,业务的so库在Android6.0机子出现问题。不加固的包没有so库问题。
另外说下乐固对签名的处理,我不认为乐固真的如简介中说,只在本地运行签名。我认为是有后台长传云端的,只是做的比较隐秘。
加固后启动崩溃,可查询应用加固后是否重签名并且与加固前签名保持一致。
——如何查看apk的签名信息?安装好java,并配置环境变量。在cmd中执行:keytool -printcert -jarfile *.apk即可看到apk的签名MD5字段信息。确认加固前后apk的签名信息是否一致。
移动应用安全MS 2019/7/31 18:20:44
提供下复现的操作步骤哈,例如是否需要登录,登录后如何操作,点击哪步出现闪退
您使用的是免费版乐固吗?目前免费版乐固不支持实时人工服务,您的问题和信息会提交技术测试并定位,但是需要排期解决的
您自查过加固后签名信息与加固前保持一致了么?
——如何查看apk的签名信息?安装好java,并配置环境变量。在cmd中执行:keytool -printcert -jarfile *.apk即可看到apk的签名MD5字段信息。确认加固前后apk的签名信息是否一致。
⑵ 怎么加固安卓软件
加固安卓软件一般要达到以下效果:
1、防逆向:通过DEX 文件加壳以及DEX 虚拟化等技术,防止代码被反编译和逆向分析。
2、防篡改:通过校验 APK 开发者签名,防止被二次打包,植入广告或恶意代码。
3、防调试:防止应用被 IDA、JEB 等工具调试,动态分析代码逻辑。
VirboxProtector安卓加固的核心技术一般有:
DEX 文件加密隐藏
对 DEX 文件加壳保护,防止代码被窃取和反编译。
SO 区段压缩加密
对 SO 库中的代码段和数据段压缩并加密,防止被 IDA 等工具反编译。
单步断点检测
在混淆的指令中插入软断点检测暗桩,防止native层run trace和单步调试。
防动态调试
防止应用被 IDA、JEB 等工具调试,动态分析代码逻辑。
开发者签名校验
对 APK 中的开发者签名做启动时校验,防止被第三方破解和二次打包。
SO 内存完整性校验
在 SO 库加载时校验内存完整性,防止第三方对 SO 库打补丁。
SO 代码混淆
对 SO 库中指定的函数混淆,通过指令切片、控制流扁平化、立即加密等技术手段,将 native 指令转换为难以理解的复杂指令,无法被 IDA 反编译,并且无法被还原。
SO 代码虚拟化
对 SO 库中指定的函数虚拟化,可以将 x86、x64、arm32、arm64 架构的机器指令转换为随机自定义的虚拟机指令,安全强度极高,可通过工具自定义配置,调整性能与安全性。
DEX 虚拟机保护
对 DEX 中的 dalvik 字节码进行虚拟化,转换为自定义的虚拟机指令,最后由 native 层虚拟机解释执行,防止逆向分析。
⑶ Android开发App如何进行加固
1.避
免技巧:使用内部API。即便我们总是建议不要这么做,但还是有一些开发者选择使用那些不支持或者内部的API。例如,许多开发者使用内部的亮度控制和蓝
牙切换API,这些API出现在1.0和1.1版本上。一个Bug——在Android
1.5上进行了修正——允许App在不需要请求权限的情况下使用这些API。结果,使用了这些API的App在1.5上挂掉了。如果你在App中使用了这
些内部API,你需要做的是:停止这一做法,更新你的程序。
2.避
免技巧:直接操作Settings。严格来讲,这一条不算,因为我们可以通过Android本身进行操作。但之所以我们加上了这一条,是因为一些开发者做
了一些调皮的事情:一些App悄无声息地修改了系统设定,而没有通知用户。例如,一些App没有询问用户就直接打开了GPS,而另外一些则可能直接打开了
数据传输。
因此,应用程序不能直接操作某个特定的系统设定值,即便是它们之前能这么做。例如,App不能直接打开或关闭GPS。不是说使
用会导致App崩溃,而是不应该使用这些API。代替的,App需要发出一个Intent来启动相应的Settings配置画面,这样用户可以手动地修改
这些设定。详细情况可以参考android.provider.Settings.Secure类,你可以在1.5_pre(和之后的)SDK文档中找
到。注意,只有那些移动到Settings.Secure类中设定受到影响。其它的,还会像Android 1.1那样有着相同的功能。
3.避
免技巧:过分布局。由于View渲染部分的变化,在布局中,过于深(超过10层左右)或过于多(超过30个左右)的View树层次可能会导致程序崩溃。过
于复杂的布局总归是有危险的,尽管你可以认为Android
1.5已经好于1.1。大多数开发者不需要对此担心,但如果你的App有着非常复杂的布局,你还是应该对其“瘦身”。你可以使用一些高级的布局类,如
FrameLayout和TableLayout,来简化你的布局。
4.避
免技巧:不好的硬件假设。Android
1.5支持软键盘,因此,不久就会有很多设备不再包含物理键盘。如果你的程序假设物理键盘存在(例如,如果你创建一个自定义的View,并接收键按下消
息),你必须保证在只有软键盘的设备上也工作正常。想了解更多关于这方面的信息,请继续关注这个Blog,我们将会有更多关于处理软键盘的详细资料。
5.避
免技巧:无意识的旋转。运行Android
1.5(及以上)的设备能够根据用户手持设备的方向自动地旋转屏幕。一些1.5的设备默认这么做,而其它的需要用户手动设置。应用程序自己的重定向在某种
程度上会导致不可预期的行为(不论是使用加速度计还是其它一些东西)。这种情况通常发生在应用程序假设有物理键盘时才能旋转;如果设备没有物理键盘,这些
App就不能进行重定向,而这明显就是个编码错误。开发者应该明确应用程序能在任何时间都能处理重定向。
同样,App可以使用加速度计做到与系统
相同的事情——直接重定向自己,这也会引发奇怪的结果。一些App使用加速度计来监测像晃动动作什么的,而又不将其方向锁定为垂直或水平,经常会导致在方
向上来回翻动。而这就会激怒用户。(你可以在manifest文件中使用android:screenOrientation特性来锁定App的方向为垂
直或水平。)
⑷ android发布应用必须apk加固吗
看应用市场的要求,有些是要求必须做加固,比如360。
⑸ APK加固原理是什么如何进行android apk加固
APK加固是对APK代码逻辑的一种保护,原理是将APK文件进行某种形式的转换,包括不限于隐藏、混淆、加等操作,进一步保护软件的利益不受损坏。
常见APK应用加固主要有DEX文件、SDK文件、SO文件加固这三类。DEX加固技术包括混淆代码、整体DEX加固、拆分DEX加固、虚拟机加固、Java2C加固,当前性能最强的加固方案是Java2c,将java指令转成c/c++指令,并做虚假控制流、字符串加密等处理,逆向难度最高。SO库文件一般存放着核心算法、重要协议等重要信息。SO加固大概可以分为有源保护和无源保护,有源保护分为自解密、混淆、源码VMP等,无源保护分为加壳、VMP保护。
APK加固后,可以降低被逆向破解风险,目前有些云安全平台提供系统的APP加固服务,如网易易盾、360加固、阿里云等,想要系统提升APK安全等级可以了解下。