实现Android深度加固:代码加密隐藏、资源加密隐藏、so库加密隐藏。附免费加固工具地址。兼容unity引擎。

这篇具有很好参考价值的文章主要介绍了实现Android深度加固:代码加密隐藏、资源加密隐藏、so库加密隐藏。附免费加固工具地址。兼容unity引擎。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.工具最终效果

0.1.可自动批量循环改包

改包包括:自动换包名(可选),自动改类,清单处理等
使用场景:原包为母包,争取处理出来的包没有容易被标记的地方

0.2.可自动批量循环加固,改包后自动加固

使用场景:原包为母包,争取处理出来的包每个包都不一样

0.3 改包加固效果

原包代码不可见,原包so不可见,原包assets不可见,原包resource不可见
每次加固结果,代码,so,assets,代码运行逻辑都不一样.
安全性增加,签名校验,运行环境检测.

0.4防标记,防报毒

对原android工程,进行下列操作(工具里支持一键自动)
自动混淆类名和方法名
自动生成不会垃圾类垃圾代码,
自动插入运行垃圾代码,
自动插入生成不会运行的垃圾方法,
每次代码运行逻辑不一样.

这样生成的包差异性就会很大.再进行加固,就会非常安全和唯一了

1.为什么做加固

因为不想辛辛苦苦做的东西,被别人拿去改成各种版,半路摘我的桃子。
所以需要将原包的一些核心东西进行加密影藏。
市面上比较好的解决方案就是进行加固,能提升apk安全性。

2.怎么加固

2.1 简单的加固

三方加固,有些三方会有免费版本的加固服务
比如 腾讯加固
免费版简易加固,只进行了代码加密影藏,资源和so库都没有处理

2.2 深度复杂加固,

为啥要深度复杂加固呢,因为三方的免费版的简单加固只会对代码进行加固,资源和so库还是一目了然的放在那里。
如果想将资源和so库加固,可以使用三方付费版,
当然也可以自己做
为啥要自己做呢?
因为贵啊,n * W/年/APP,一个应用一年就要几万。

3.自己做加固

花了些时间,参考各种资料,实现了代APP深度加固。
实现效果:
代码加密隐藏:原包代码加密隐藏不可见。
资源加密隐藏:原包资源加密隐藏不可见,包括res下和assets下的资源。当然,清单文件引用的资源无法隐藏。
so库加密隐藏:原包so库加密隐藏不可见。

3.1 主要原理

3.1.1 代码加固

Android能够使用apk文件或dex文件动态加载Classloader
实现原理:将代码dex加密,使用时解密,然后加载成Classloader使用。

/**
     * 将dex注入dexElements数组中
     * @param context
     * @param str
     * @throws ClassNotFoundException
     * @throws NoSuchFieldException
     * @throws IllegalAccessException
     */
    public static void changeAppClassLoader(Context context, String str) throws Throwable {
        PathClassLoader pathClassLoader = (PathClassLoader) context.getClassLoader();
        PathClassLoader classLoader = new PathClassLoader(str,null,context.getClassLoader());
        Object a = combineArray(getDexElements(getPathList(pathClassLoader)), getDexElements(getPathList(classLoader)));
        Object a2 = getPathList(pathClassLoader);
        setField(a2, a2.getClass(), "dexElements", a);
    }
3.1.2 资源加固

Android同样提供了api,开发者能使用apk路径加载成resource
实现原理:将资源apk加密,使用时解密,然后加载成Resource使用

private Resources preloadResource(Context context, String apkFilePath) {
        try {
            Class<? extends AssetManager> AssetManagerClass = AssetManager.class;
            AssetManager assetManager = AssetManagerClass.newInstance();
            @SuppressLint("DiscouragedPrivateApi")
            Method addAssetPathMethod = AssetManagerClass.getDeclaredMethod("addAssetPath", String.class);
            addAssetPathMethod.setAccessible(true);
            addAssetPathMethod.invoke(assetManager, apkFilePath);
            Resources baseResources = new Resources(assetManager, context.getResources().getDisplayMetrics(), context.getResources().getConfiguration());
            return baseResources;
        } catch (Throwable e) {
        }
        return null;
    }
3.1.3 so库加固

实现原理:将so加密,使用时解密。需要动态替换应用so路径为解密后的so路径

    private void changeFilePath(Context context, String newSoPath) {
        try {
            Class<?> contextImplClass = classNamefor("android.app.ContextImpl");
            Class<?> loadedApkClass = classNamefor("android.app.LoadedApk");
            Object mPackageInfo = getFieldValue(contextImplClass, "mPackageInfo", context);
            ApplicationInfo mApplicationInfo = null;
            mApplicationInfo = (ApplicationInfo) getFieldValue(loadedApkClass, "mApplicationInfo", mPackageInfo);
            mApplicationInfo.nativeLibraryDir = newSoPath;
        } catch (Throwable emApplicationInfo) {

        }
    }  

3.2 整体实现

将真实的apk(子包)进行加密,壳包启动时,动态根据子包apk解密,加载出Classloader和Resource,并获得so路径(可以将so库单独抽出来)
将系统的Classloader,Resource,so路径替换为生成的。

4 总结

目前已实现,并在多个包上使用这套技术。

5 加固工具

自定义加固工具-Mac版-下载地址-下载速度快

自定义加固工具-Mac本地版-百度网盘下载地址-下载速度看是否有会员

本地软件版,不会上传原包任何信息至服务器,本地处理。提供自动化脚本调用。

使用方法:

1.打开工具,账号设置,注册账号(注,注册的新账号为测试账号,加固的包有运行时效限制,勿正式发布)
2.点击选择需要加固的包(路径不能包含空格等特殊字符)
3.没有签名就勾选自动签名

点击 begin 会出现加载图片卡死的现象,别着急,这是在进行加固。静静等待即可。

mac打开App遇到恶意软件的处理方式

1.下载打开压缩包.
2.双击加固App,Apple会提示"无法打开,恶意软件字样"
3.打开电脑系统设置-隐私与安全性-安全性:会有刚才打开软件的提示,点击仍然打开就行.

App环境部署.

App需要Python3 和 openjdk的环境,
如果电脑已经装好,可以直接使用,如果没有,可以安装.
上述下载地址的百度网盘下载地址,里面有我使用的jdk版本,可以下载使用.
上述下载地址的百度网盘下载地址,里面有apk查看工具,可以查看对比加固前后apk的信息.

6 联系作者

期待你的点赞和关注!如有疑问,联系作者。文章来源地址https://www.toymoban.com/news/detail-447573.html

到了这里,关于实现Android深度加固:代码加密隐藏、资源加密隐藏、so库加密隐藏。附免费加固工具地址。兼容unity引擎。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 反编译APK获取代码&资源

    \\\"反编译Apk\\\",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以

    2024年02月10日
    浏览(27)
  • 使用 ClassFinal 对SpringBoot jar加密加固并进行机器绑定

    写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢! 如果我的博客对你有帮助,欢迎进行评论✏️✏️、点赞👍👍、收藏⭐️⭐️,满足一下我的虚荣心💖🙏🙏🙏 。 为避免源码泄漏或字节码被反编

    2024年01月20日
    浏览(29)
  • 基线扫描tomcat安全加固-检查是否支持HTTPS等加密协议

    背景:基线扫描时,docker镜像中的tomcat在检查是否支持HTTPS等加密协议这一项上未通过。 思路:先通过JDK自带的keytool工具生成证书,再从tomcat的server.xml配置文件中增加配置。 我不确定不同版本的JDK生成的证书是否可以通用,所以我使用镜像自带的jdk生成证书, 因为我使用的

    2024年01月23日
    浏览(36)
  • 金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 金豺(GJO)优化算法是2022年由Nitish Chopra 等人提出,GJO 的灵感来自金豺 (Canis aureus) 的协作狩猎行为。算法的三个基本步骤是 猎物搜索、包围和突袭 。 该算法主要是由雄雌豺狼带领各个豺狼对猎物进行

    2024年02月02日
    浏览(43)
  • 【信号隐藏】基于LSB实现音频水印嵌入提取附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月24日
    浏览(30)
  • 【Matlab信号隐藏】基于LSB实现音频水印嵌入提取附代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月24日
    浏览(31)
  • 【ios】【android】3DES_CBC_PKCS5Padding加密、解密问题(附完整代码)

    问题一:加密结果不一致 一、问题描述 实现了android的蓝牙对接后开始着手ios的蓝牙对接,出现了ios加密结果与在线加密的结果一致,而android的加密结果与甲方公司的结果一致的问题。 1.android部分代码如下: 2.ios部分代码如下: 二、问题解决 重新看了一遍android加密调用部

    2023年04月18日
    浏览(34)
  • C语言中的 RSA加密和解密算法: 深度探索与实现

    RSA加密算法是一种非对称加密算法,即公开密钥加密,私有密钥解密。在公开密钥加密和私有密钥解密的过程中,密钥是不同的,这是与其他加密算法的主要区别。RSA算法的安全性依赖于大数分解,随着计算机的发展,对于大数的分解能力越来越强,RSA算法的密钥长度也在不

    2024年02月03日
    浏览(32)
  • 深度强化学习与人工智能:如何实现高效的资源分配

    深度强化学习(Deep Reinforcement Learning, DRL)是一种人工智能技术,它结合了深度学习和强化学习两个领域的优点,以解决复杂的决策问题。在过去的几年里,DRL已经取得了显著的成果,例如在游戏、机器人控制、自动驾驶等领域的应用。在资源分配方面,DRL可以帮助企业更有效地

    2024年02月21日
    浏览(50)
  • Android APK加固原理

    一、前言 Android作为开源框架,开放之余,所要面临的就是安全问题,世间之事,有正就有邪,有攻就有守,作为开发者虽然不需要进入专业安全领域,但还是需要掌握基本的安全常识和原理。 二、加壳 加壳最初用于windows平台可执行程序,后被Andriod平台采用用于apk加固,可

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包