返回

Android APK 加固技术探究(三)

Android

引言

紧随上一篇文章《Android APK 加固技术探究(二)》,在文章里,我们已经完成一个shell.a文件。接下来,我们通过创建Shared 模块生成另一个Shell库。

创建 Shared 模块

  1. 在 Android Studio 中,创建一个新的 Android 库项目,并将其命名为 "Shared"。
  2. 在 build.gradle 文件中,添加以下依赖项:
dependencies {
    implementation 'com.android.support:appcompat-v7:28.0.0'
}
  1. 在 src/main/java 目录下,创建一个名为 Shared.java 的类,并添加以下代码:
package com.example.shared;

public class Shared {

    public static String getMessage() {
        return "Hello from Shared!";
    }

}
  1. 在 build.gradle 文件中,添加以下代码以启用 NDK:
android {
    externalNativeBuild {
        ndkBuild {
            path "src/main/jni/Android.mk"
        }
    }
}
  1. 在 src/main/jni 目录下,创建一个名为 Android.mk 的文件,并添加以下代码:
APP_STL := c++_static
APP_CPPFLAGS += -frtti -fexceptions
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64

include $(BUILD_SHARED_LIBRARY)

LOCAL_SRC_FILES := shared.cpp

LOCAL_SHARED_LIBRARIES := shell
  1. 在 src/main/cpp 目录下,创建一个名为 shared.cpp 的文件,并添加以下代码:
#include <jni.h>
#include "shell.h"

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_shared_Shared_getMessage(JNIEnv* env, jobject /* this */) {
    return env->NewStringUTF(Shell::getMessage().c_str());
}
  1. 在 Android Studio 中,点击 "Build" -> "Make Project" 来构建项目。

整合 Shell 和 Shared 库

  1. 将 shell.a 和 shared.so 文件复制到 APK 加固工具的 libs 目录下。
  2. 在 APK 加固工具的 config.xml 文件中,添加以下代码:
<library>
    <name>shell</name>
    <path>libs/shell.a</path>
</library>

<library>
    <name>shared</name>
    <path>libs/shared.so</path>
</library>
  1. 重新运行 APK 加固工具,生成加固后的 APK 文件。

测试加固后的 APK 文件

  1. 将加固后的 APK 文件安装到 Android 设备上。
  2. 启动应用程序,并验证它是否可以正常运行。
  3. 使用 APK 分析工具检查加固后的 APK 文件,并验证它是否已成功集成 Shell 和 Shared 库。

结论

在本文中,我们通过创建 Shared 模块生成了另一个 Shell 库,并将其集成到 APK 加固工具中。现在,我们可以使用这个工具来加固 Android APK 文件,以保护它们免受逆向工程和篡改的攻击。