⑴ 什么是android apk加固
加固的过程中需要三个对象:1、需要加密的Apk(源Apk)2、壳程序Apk(负责解密Apk工作)3、加密工具(将源Apk进行加密和壳Dex合并成新的Dex)主要步骤:我们拿到需要加密的Apk和自己的壳程序Apk,然后用加密算法对源Apk进行加密在将壳Apk进行合并得到新的Dex文件,最后替换壳程序中的dex文件即可,得到新的Apk,那么这个新的Apk我们也叫作脱壳程序Apk.他已经不是一个完整意义上的Apk程序了,他的主要工作是:负责解密源Apk.然后加载Apk,让其正常运行起来。
⑵ 应用加固对DEX文件,SO文件是如何保护的
您好,NAGA·IN娜迦信息科技加固平台的服务挺不错的。可以对APP文件/APK应用进行dex加壳、 乱序保护、so加壳、虚拟机指令保护等多重保护,有效的对存储数据进行加密保护、保护APP安全,是APP安全加固的优秀企业。
⑶ 怎么加固安卓软件
加固安卓软件一般要达到以下效果:
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 层虚拟机解释执行,防止逆向分析。
⑷ 如何给so文件加壳
在 Android 环境中,Native 层的加壳主要是针对动态链接库 SO,SO 加壳的示意图如下:
加壳工具、loader、被保护SO。
SO: 即被保护的目标 SO。
loader: 自身也是一个 SO,系统加载时首先加载 loader,loader 首先还原出经过加密、压缩、变换的 SO,再将 SO 加载到内存,并完成链接过程,使 SO 可以正常被其他模块使用。
加壳工具: 将被保护的 SO 加密、压缩、变换,并将结果作为数据与 loader 整合为 packed SO。
加固可以在一定程度上保护自己核心代码算法,提高破解/盗版/二次打包的难度,缓解代码注入/动态调试/内存注入攻击等,但也对应用的兼容性有一定影响,加壳技术不行的话,还会影响程序运行效率.
目前市面上有很多第三方加固的平台, 如果新应用发布前需要扫描或者加固的话,可以先试试免费的,例如腾讯御安全,建议自己先去扫加固试下。
⑸ 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文件,发到第三方结构进行了安全检测,这项目我入职前就已经快完成的阶段,我后面基本是维护和小更新.比较坑的是之前的哥们连混淆都没有,更不要说加固了,最后扫出了30多个漏洞,看到检测报告都懵逼了.
自己对混淆和加固之前也只是知道皮毛没有深究,这次修复漏洞踩了不少坑,都是边上网搜资料边踩坑,总算搞定了,写出来防止后人踩坑 ,这里主要讲加固签名的坑,混淆这里不说了(自己对混淆还不熟)
很容易理解,ture是已签名,false是未签名,都为true的话说明v1,v2都成功签名了.
然后把两个md5的值进行比对,如果一致说明你的签名没用错秘钥 - -||
4.手动进行签名操作:
java -jar apksigner.jar sign --ks /Users/xxxx/Desktop/key.jks --ks-key-alias test --ks-pass pass: 123456 --key-pass pass: 123456 --out /Users/xxxx/Desktop/签名后的安装包.apk /Users/xxxx/Desktop/需要进行签名的安装包.apk
上面的命令会执行同时执行v1,v2签名
注意仔细看上的命令行:进了黑色加粗的文字需要替换成实际的信息
说个小插曲,我们的项目找的是一个规模很大的公司进行检测,开始用了网上的免费的加固工具加固拿去检测,别人拿去测试之后全部都脱壳了,说这种免费的加固安全没有保障,要用他们的加固服务可以解决,要收费..呵呵,因为项目比较特殊只能答应了,打包签名了apk,发到他们那边进行了加固后他们把apk发回来让我重新签名,签名后apk用不了,闪退....老板说别人大公司应该不会出现这种小问题,是我的问题.恩,自己也怀疑是我的错. 当天折腾到凌晨才下班,经历了上面的一顿折腾后发现v1,v2都签名了,并且md5值也没问题. 这时就有底气的去质问那家公司,最后发现是他们的加固出问题.
一般来说进行了上面的方法重新签名并且检查md5值没错,应该不会出问题了这时候可以去质疑一下加固方的问题.
github参考链接1
github参考链接2
先写这些记录一下,后面有需要再更新,有什么问题可以在下面留言讨论.
⑺ 什么软件可以查看安卓程序是否加固,是什么加固
下载Mt管理器,即可查看软件是否被加固以及加固类型。在Mt管理器中找到软件安装包的位置,点击软件安装包,在弹出的窗口中找到加固一栏,上面就标注着是否加固以及加固的类型。
希望我的答案能够帮助到你,满意请采纳哦。满意请给5星好评,谢谢。
⑻ Android Studio自定义加固插件
Gradle自定义插件
我们新建一个名为JiaguPlugin的Mole
调整build.gradle为如下所示(这里我使用Kotlin开发)
创建一个JiaguPlugin类
然后创建resources目录并创建插件的配置文件
配置文件的内容如下:
1)创建一个扩展
这里我们创建的扩展名为jiagu,这个就好像app下build.gradle中的android扩展一样
我们扩展中的参数是JiaguParams中的参数
2)添加监听
添加一个读取完配置信息后的回调
然后我们先将我们的插件上传到Maven仓库,也就是执行插件build.gradle的这个Task,这里我上传到了项目下的Plugins文件夹下
然后我们在项目的build.gradle文件里引入
加固的任务类JiaguTask如下,这里的命令是参照文章开头360加固的help文件:
4)配置加固信息
我们在build.gradle文件中配置好我们的加固信息
5)进行加固
首先我们先make一下项目,生成apk文件
https://gitee.com/itfitness/jiagu-plugin
⑼ 安卓apk应用如何进行安全加固
1、首先登陆腾讯云,选择“云产品”------“应用加固”,在弹出的页面中选择“立即使用”;
2.使用app加固对安卓软件进行加固,可以保护我们的隐私,而且腾讯云的应用加固使用也非常的简单,能够有效的对存储数据进行加密保护;拥有防调试、恶意代码植入保护;反编译和环境监测保护等功能。
3.准备好app应用后,选择“申请加固”,在弹出的窗口中上传自己需要加固的apk应用程序,这里注意下:apk应用程序必须小于100M;
4.待上传解析完毕后,就可以进行加固了,这里我们选择默认即可,也可以根据自己的需求自定义:
目前支持以下三种格式:
1.method com.test.ClassName *
表示需要加固com.test.ClassName类下的所有方法
2.method * onCreate
表示需要加固所有类的onCreate方法
3.method com.test.ClassName onCreate
表示需要加固com.test.ClassName类下的onCreate方法
5.稍等片刻后,就会加固成功,然后下载加固后的app应用,重新签名后就可以发行使用了,非常的简单。
类似的应用加固平台还有很多,比如娜迦,爱加密等等,都能有效的保护app应用,防止一些恶意代码的写入和逆向破解。