返回
Android APK 加固技术探究(三)
Android
2023-10-21 09:16:42
引言
紧随上一篇文章《Android APK 加固技术探究(二)》,在文章里,我们已经完成一个shell.a文件。接下来,我们通过创建Shared 模块生成另一个Shell库。
创建 Shared 模块
- 在 Android Studio 中,创建一个新的 Android 库项目,并将其命名为 "Shared"。
- 在 build.gradle 文件中,添加以下依赖项:
dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0'
}
- 在 src/main/java 目录下,创建一个名为 Shared.java 的类,并添加以下代码:
package com.example.shared;
public class Shared {
public static String getMessage() {
return "Hello from Shared!";
}
}
- 在 build.gradle 文件中,添加以下代码以启用 NDK:
android {
externalNativeBuild {
ndkBuild {
path "src/main/jni/Android.mk"
}
}
}
- 在 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
- 在 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());
}
- 在 Android Studio 中,点击 "Build" -> "Make Project" 来构建项目。
整合 Shell 和 Shared 库
- 将 shell.a 和 shared.so 文件复制到 APK 加固工具的 libs 目录下。
- 在 APK 加固工具的 config.xml 文件中,添加以下代码:
<library>
<name>shell</name>
<path>libs/shell.a</path>
</library>
<library>
<name>shared</name>
<path>libs/shared.so</path>
</library>
- 重新运行 APK 加固工具,生成加固后的 APK 文件。
测试加固后的 APK 文件
- 将加固后的 APK 文件安装到 Android 设备上。
- 启动应用程序,并验证它是否可以正常运行。
- 使用 APK 分析工具检查加固后的 APK 文件,并验证它是否已成功集成 Shell 和 Shared 库。
结论
在本文中,我们通过创建 Shared 模块生成了另一个 Shell 库,并将其集成到 APK 加固工具中。现在,我们可以使用这个工具来加固 Android APK 文件,以保护它们免受逆向工程和篡改的攻击。