Android-Mod-Menu 使用教程

目录

    • 简介
    • 前提条件
    • 安装步骤
      • [1. 下载和解压项目](#1. 下载和解压项目)
      • [2. 配置 Android Studio](#2. 配置 Android Studio)
      • [3. 安装到设备](#3. 安装到设备)
    • [修改游戏 APK](#修改游戏 APK)
      • [1. 确定游戏主活动](#1. 确定游戏主活动)
      • [2. 集成模组菜单](#2. 集成模组菜单)
        • [方法 1:通过服务启动(推荐)](#方法 1:通过服务启动(推荐))
        • [方法 2:通过活动启动(仅在游戏检测模组时使用)](#方法 2:通过活动启动(仅在游戏检测模组时使用))
      • [3. 合并模组和游戏 APK](#3. 合并模组和游戏 APK)
      • [4. 测试修改后的 APK](#4. 测试修改后的 APK)
    • 使用模组菜单
      • [1. 基本操作](#1. 基本操作)
      • [2. 自定义功能](#2. 自定义功能)
      • [3. 调试与优化](#3. 调试与优化)
    • 常见问题
    • 注意事项
    • 参考资源

简介

LGLTeam 的 Android-Mod-Menu 是一个强大的 Android 游戏浮动模组菜单模板,支持 il2cpp 和原生 Android 游戏,集成了 KittyMemory、MSHook、And64InlineHook 等工具,并提供 AY Obfuscator 进行字符串混淆。项目支持 Android 4.4.x 至 Android 12,兼容 ARMv7、x86 和 ARM64 架构。本教程将详细介绍安装、配置、APK 修改及使用方法,适合有一定 Android 开发基础的用户。

注意:本项目仅用于学习和研究,请勿用于非法或商业用途。使用不当可能引发法律问题,开发者不对任何不当使用负责。

前提条件

开始之前,请确保满足以下条件:

  1. 基础知识 :
    • 熟悉 Android 布局(XML 和 Java)。
    • 了解 Android 开发环境(如 Android Studio)。
    • 掌握基本的 C++ 和 JNI(Java Native Interface)知识。
    • 了解 APK 文件结构、smali 文件及反编译工具(如 Apktool)。
  2. 开发环境 :
    • 一台运行 Windows、macOS 或 Linux 的电脑。
    • 已安装 Android Studio 和 Android NDK。
    • 准备 APK 反编译工具,如 APK Easy Tool、MT Manager 或 APK Editor Pro。
    • 一台 Android 设备(建议 Android 5.0+,ARMv7 或 ARM64 架构)。
  3. 项目文件 :

安装步骤

1. 下载和解压项目

  1. 访问 https://github.com/LGLTeam/Android-Mod-Menu/releases,下载最新版本的源代码 ZIP 文件,或通过 Git 克隆仓库。
  2. 解压到无空格或特殊字符的目录(如 C:\AndroidModMenu 或 /home/user/AndroidModMenu)。

2. 配置 Android Studio

  1. 打开 Android Studio,选择 File > Open,加载解压后的项目文件夹。
  2. 等待项目同步完成(初次可能需 1-2 分钟)。
  3. 配置 NDK:
    • 进入 File > Project Structure > SDK Location。
    • 在 Android NDK Location 中选择 NDK 文件路径(如 ndk_arm.tar.gz 或 ndk_arm64.tar.gz)。
    • 确保 NDK 版本与设备架构兼容。
  4. 检查构建配置:
    • 打开 app/build.gradle,确认 ndk 配置正确。
    • 如需更改库名称,修改 app/src/main/jni/Android.mk 中的 LOCAL_MODULE,并更新 MainActivity.java 中的 System.loadLibrary("")。

3. 安装到设备

  1. 连接 Android 设备,启用 开发者选项 和 USB 调试。
  2. 在 Android Studio 中选择设备,点击 Run 构建并安装调试 APK(app-debug.apk)。
  3. 构建成功后,APK 将自动安装,文件位于 app/build/outputs/apk/app-debug.apk。

提示:若使用 AIDE 等移动端 IDE,需安装模组专用版本的 AIDE(Play Store 版本不兼容),详见 Wiki。


修改游戏 APK

将模组菜单集成到目标游戏需要修改 APK 文件,以下是步骤:

1. 确定游戏主活动

  1. 使用 APK 反编译工具(如 APK Easy Tool 或 MT Manager)解编译目标游戏 APK。
  2. 打开 AndroidManifest.xml,查找 <action android:name="android.intent.action.MAIN"/>,记录主活动路径(如 com.unity3d.player.UnityPlayerActivity)。

2. 集成模组菜单

推荐使用服务启动方法,避免同时使用两种方法。

方法 1:通过服务启动(推荐)
  1. 在 AndroidManifest.xml 的 <application> 标签末尾添加服务(根据需要调整包名):

    xml 复制代码
    <service android:name="com.android.support.Launcher" android:enabled="true" android:exported="false" android:stopWithTask="true" />
  2. 找到游戏主活动的 smali 文件(路径如 /com/unity3d/player/UnityPlayerActivity.smali)。

  3. 在 onCreate 方法中添加:

    smali 复制代码
    invoke-static {p0}, Lcom/android/support/Main;->Start(Landroid/content/Context;)V
  4. 保存修改。

方法 2:通过活动启动(仅在游戏检测模组时使用)
  1. 在 AndroidManifest.xml 中添加模组主活动:

    xml 复制代码
    <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.android.support.MainActivity" android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
  2. 确保游戏原始主活动不再包含 <action android:name="android.intent.action.MAIN"/>。

  3. 添加悬浮窗权限:

    xml 复制代码
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  4. 若菜单未显示,检查设备悬浮窗权限设置。

3. 合并模组和游戏 APK

  1. 反编译 app-debug.apk,提取模组的 smali 文件(位于 smali/com/android/support)。
  2. 将模组 smali 文件夹复制到游戏反编译目录的 smali 文件夹(建议放入最后一个 smali_classes 文件夹)。
  3. 重命名模组 dex 文件(如 classes.dex 改为 classes2.dex),确保 dex 顺序正确。
  4. 复制模组的 .so 文件到游戏的架构目录(armeabi-v7a 或 arm64-v8a),确保架构匹配。
  5. 使用 APK 工具重新编译并签名 APK,建议启用"自动签名"。

4. 测试修改后的 APK

  1. 安装签名后的 APK 到设备。
  2. 启动游戏,检查模组菜单是否显示。
  3. 若菜单未显示,使用 Android Studio 的 Logcat 查看错误日志,搜索解决方案。

使用模组菜单

1. 基本操作

  • 游戏启动后,模组菜单以浮动窗口形式显示。
  • 菜单支持开关、按钮、复选框等控件,可通过 Java 和 C++ 自定义功能。
  • 日志路径 (以下路径可能因设备而异,建议实际验证):
    • Android 11 及以上 :/storage/emulated/0/Documents/ModMenuLogs/
    • Android 10 及以下 :/storage/emulated/0/Android/data/<包名>/files/ModMenuLogs/(修正:路径中的"包名"需替换为游戏实际包名,如 com.example.game)。

2. 自定义功能

  • 添加功能 :
    • 在 FloatingModMenuService.java 的 localChanges(int featureNum, boolean toggle) 方法中定义逻辑。
    • 使用负数(如 -1)分配设置项,正数(如 1, 3, 200)分配模组功能。
    • 示例:添加默认启用的复选框,使用 CheckBox_True_功能名称。
  • UI 自定义 :
    • 使用 GradientDrawable 设置圆角和边框:

      java 复制代码
      GradientDrawable gradientdrawable = new GradientDrawable();
      gradientdrawable.setCornerRadius(20);
      gradientdrawable.setColor(Color.parseColor("#1C2A35"));
      gradientdrawable.setStroke(1, Color.parseColor("#32cb00"));
    • 适配不同分辨率设备,考虑自动缩放。

  • 字符串混淆 :
    • 使用 AY Obfuscator 保护字符串:

      cpp 复制代码
      OBFUSCATE("字符串")
      OBFUSCATE_KEY("字符串", 0x3FE63DF21A3B)
    • 重要代码(如偏移量)存储在 .so 文件中,避免暴露在 Java/smali 中。

3. 调试与优化

  • 日志调试 :

    • 在 C++ 代码中添加日志(如 LOGD("调试信息")),通过 logcat 查看:

      cpp 复制代码
      bool get_BoolExample(void *instance) {
          LOGD("BoolExample 1");
          if (instance != NULL && featureHookToggle) {
              LOGD("BoolExample 2");
              return true;
          }
          LOGD("BoolExample 3");
          return old_get_BoolExample(instance);
      }
  • 避免崩溃 :

    • 确保 hook 和 patch 的偏移量正确,检查游戏 .so 文件的架构。
    • 使用 #if defined(__aarch64__) 区分 32 位和 64 位代码。
  • 保护代码 :

    • 启用 ProGuard 缩小代码,添加过滤器避免破坏项目。
    • 避免使用不可信的加密工具,防止被误报为恶意软件。
    • 公开源代码到 GitHub 可减少盗用风险。

常见问题

  1. 模组菜单未显示?
    • 确认 SYSTEM_ALERT_WINDOW 权限已添加。
    • 检查 onCreate 方法中的 smali 调用。
    • 查看 logcat 日志,排查权限或架构问题。
  2. 游戏崩溃?
    • 确保 .so 文件位于正确架构目录。
    • 检查 hook 偏移量是否正确。
    • 使用 logcat 定位错误。
  3. 方法数超限(65535)?
    • 将模组 smali 文件放入 smali_classes2 或更高编号文件夹。
    • 避免放入游戏主 smali 文件夹。
  4. 旧版 Android 布局问题?
    • 部分游戏在无权限启动时使用旧布局,暂无解决方案。
  5. 如何获取支持?

注意事项

  • 学习成本:需要 Android 开发和逆向工程知识,建议学习 JNI、smali 和 il2cpp。
  • 社区规范:避免重复提问,初学者应查阅资料。恶意行为可能导致被屏蔽。
  • 法律风险:不要用于受保护的游戏(如 PUBG、Free Fire),以免引发法律问题。

参考资源

相关推荐
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo3 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077003 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼3 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone3 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen3 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone3 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui