美文网首页
实现Android深度加固:代码、资源、so库 加密隐藏。附免费

实现Android深度加固:代码、资源、so库 加密隐藏。附免费

作者: 这个我不知道诶 | 来源:发表于2022-12-19 21:09 被阅读0次

1.为什么做加固

因为不想辛辛苦苦做的东西,被别人拿去改成各种版,半路摘我的桃子。

2.怎么加固

2.1 简单的加固

三方加固,有些三方会有免费版本的加固服务
比如 腾讯加固

2.2 深度复杂加固,

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

3.自己做加固

花了些时间,参考各种资料,实现了代码APP加固。

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 加固工具

自定义加固工具
使用方法:
1.注册账号(全英文最好,一定要填写邮箱,加固完成后结果会发至邮箱)
2.点击右侧 “JiaGu-server”任务-》选择左侧“build with param....”
3.选择需要加固的apk文件,如果需要签名,则勾选签名,并选择对应的jks文件,填写 别名 密码。点击 开始构建

点击 开始构建 后,网页会出现加载进度卡死的现象,别着急,这是在上传文件。静静等待即可。

6 联系作者

期待你的点赞和关注!如有疑问,联系作者。


在这里插入图片描述

相关文章

  • 实现Android深度加固:代码、资源、so库 加密隐藏。附免费

    1.为什么做加固 因为不想辛辛苦苦做的东西,被别人拿去改成各种版,半路摘我的桃子。 2.怎么加固 2.1 简单的加...

  • so加固-加密特定section中的内容

    本文参考自:Android逆向之旅—基于对so中的section加密技术实现so加固,增加了自己的实践过程,以及一...

  • Android 数据安全

    代码混淆 & apk的加固 常用加固平台:爱加密、360加固、腾讯加固、梆梆加固 Android应用加固原理 网络...

  • Android安全

    Token 密钥 AES算法加密 Log信息管理 代码混淆 加固(如360加固) so加固 https 第三方安全检查

  • Android-JNI&NDK(一)入门

    [TOC] Android-JNI&NDK(一)入门 一. 前言 最近项目中要求要使用so库实现数据加密,来提高数...

  • Android加壳脱壳

    Android 加固与脱壳 加固与脱壳常用加固 so 文件特征分析 apk 加固动态调试分析 apk 加固-环境搭...

  • Tinker Android热补丁

    前言 Tinker简介 Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,...

  • 360 加固保应用加固

    360加固保专为开发者的应用提供免费安全加固服务,独创了多重防护方式,对应用程序深度加密处理;独有的程序文字信息加...

  • 微信热修复Tinker集成和使用(一)

    Tinker是什么 Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应...

  • IDA动态调试-没啥卵用的静态加固

    前几天学习了so加固相关的知识so加固-加密特定section中的内容、ELF中可以被修改又不影响执行的区域,于是...

网友评论

      本文标题:实现Android深度加固:代码、资源、so库 加密隐藏。附免费

      本文链接:https://www.haomeiwen.com/subject/hkcuqdtx.html