记一次因为无聊引发的逆向(Android逆向)
字数 1199 2025-08-22 12:22:36

Android逆向实战:去除广告与修改游戏数据

概述

本教程详细记录了一次针对Android应用的逆向工程过程,主要包括去除应用内广告和修改游戏数据两个部分。通过使用多种逆向工具和技术手段,成功实现了对目标应用的修改。

前期准备工具

  1. 安卓模拟器:逍遥模拟器(用于运行目标应用)
  2. 网络监控工具:Fiddler(监控应用网络流量)
  3. 逆向工具
    • AndroidKiller(逆向、回编译、生成签名)
    • Jadx(查看Java代码)
  4. 调试工具:DDMS(查看Logcat日志信息)

工具配置步骤

AndroidKiller绑定模拟器

  1. 找到模拟器的进程ID
  2. 查询对应的本地端口
  3. 在AndroidKiller的/bin/adb目录下执行adb.exe的Connect操作
  4. 刷新查看绑定状态

去除APP广告

方法一:修改smali代码

  1. 通过AndroidManifest.xml查找主活动页面地址
  2. 分析网络请求,提取关键字(如"Newfeatureview")
  3. 在AndroidKiller中全局搜索关键字
  4. 修改smali代码:
# 修改前
.method public run()V
.locals 8
.prologue
.line 292
const-string v4, "http://Newfeatureview.xxxxx.com/featureview/gettime/"
const/4 v5, 0x0

# 修改后
.method public run()V
.locals 7  # 寄存器数量减1
.prologue
.line 292
#const-string v4, "http://Newfeatureview.xxxxx.com/featureview/gettime/"  # 注释掉请求
const/4 v5, 0x0

注意事项

  • 注释掉代码后必须相应减少.locals声明的寄存器数量
  • 或者可以将请求地址替换为"127.0.0.1",这样不需要修改寄存器数量

方法二:修改权限

AndroidManifest.xml中修改网络权限:

<!-- 保留基本网络权限 -->
<uses-permission android:name="android.permission.INTERNET"/>

<!-- 删除以下权限 -->
<!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATEM,"/> -->
<!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> -->

注意:完全删除INTERNET权限可能导致应用无法运行。

修改游戏数据

数据库修改方法

  1. 分析应用目录结构,找到数据库文件(如test.db
  2. 通过文件头SQLite format 3确认是SQLite数据库
  3. 将数据库文件复制到本地,使用数据库软件打开
  4. 修改关键数据:
    • 将第一关的奖励值改为5201314
    • 将通关状态从False改为True
  5. 将修改后的数据库文件替换回原位置

其他修改方法

  1. 通过DDMS分析日志信息
  2. 定位商店相关代码包
  3. 注意加密参数和验证机制,可能需要构造特定参数

关键知识点总结

  1. smali代码修改

    • 寄存器数量必须与代码中使用的一致
    • 注释代码后要相应调整.locals声明
  2. 权限控制

    • INTERNET权限是基本网络权限
    • ACCESS_WIFI_STATEACCESS_NETWORK_STATE是辅助网络信息权限
  3. 数据存储

    • 游戏数据可能存储在SQLite数据库中
    • 修改前确认数据库结构和关键字段
  4. 网络请求拦截

    • 可以通过修改请求地址或注释请求代码来阻止广告
    • 使用Fiddler监控网络流量有助于分析请求结构

注意事项

  1. 修改前备份原始APK和重要文件
  2. 注意保持代码逻辑完整性,避免因修改导致崩溃
  3. 数据库修改时要确保数据结构一致性
  4. 复杂的加密验证机制可能需要更深入的分析

通过以上步骤,可以有效地去除Android应用中的广告并修改游戏内数据。实际应用中可能需要根据具体情况调整方法。

Android逆向实战:去除广告与修改游戏数据 概述 本教程详细记录了一次针对Android应用的逆向工程过程,主要包括去除应用内广告和修改游戏数据两个部分。通过使用多种逆向工具和技术手段,成功实现了对目标应用的修改。 前期准备工具 安卓模拟器 :逍遥模拟器(用于运行目标应用) 网络监控工具 :Fiddler(监控应用网络流量) 逆向工具 : AndroidKiller(逆向、回编译、生成签名) Jadx(查看Java代码) 调试工具 :DDMS(查看Logcat日志信息) 工具配置步骤 AndroidKiller绑定模拟器 找到模拟器的进程ID 查询对应的本地端口 在AndroidKiller的 /bin/adb 目录下执行adb.exe的Connect操作 刷新查看绑定状态 去除APP广告 方法一:修改smali代码 通过 AndroidManifest.xml 查找主活动页面地址 分析网络请求,提取关键字(如"Newfeatureview") 在AndroidKiller中全局搜索关键字 修改smali代码: 注意事项 : 注释掉代码后必须相应减少 .locals 声明的寄存器数量 或者可以将请求地址替换为"127.0.0.1",这样不需要修改寄存器数量 方法二:修改权限 在 AndroidManifest.xml 中修改网络权限: 注意 :完全删除 INTERNET 权限可能导致应用无法运行。 修改游戏数据 数据库修改方法 分析应用目录结构,找到数据库文件(如 test.db ) 通过文件头 SQLite format 3 确认是SQLite数据库 将数据库文件复制到本地,使用数据库软件打开 修改关键数据: 将第一关的奖励值改为5201314 将通关状态从False改为True 将修改后的数据库文件替换回原位置 其他修改方法 通过DDMS分析日志信息 定位商店相关代码包 注意加密参数和验证机制,可能需要构造特定参数 关键知识点总结 smali代码修改 : 寄存器数量必须与代码中使用的一致 注释代码后要相应调整 .locals 声明 权限控制 : INTERNET 权限是基本网络权限 ACCESS_WIFI_STATE 和 ACCESS_NETWORK_STATE 是辅助网络信息权限 数据存储 : 游戏数据可能存储在SQLite数据库中 修改前确认数据库结构和关键字段 网络请求拦截 : 可以通过修改请求地址或注释请求代码来阻止广告 使用Fiddler监控网络流量有助于分析请求结构 注意事项 修改前备份原始APK和重要文件 注意保持代码逻辑完整性,避免因修改导致崩溃 数据库修改时要确保数据结构一致性 复杂的加密验证机制可能需要更深入的分析 通过以上步骤,可以有效地去除Android应用中的广告并修改游戏内数据。实际应用中可能需要根据具体情况调整方法。