【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
文章目录
一、应用结构分析
分析上一篇博客 【Android 逆向】逆向修改游戏应用 ( APK 解析工具 | 解包 -> 分析 -> 重打包 -> 签名 流程 ) 解包后的文件 ;
在 lib 目录下 , 有 armeabi-v7a 和 x86 两个 CPU 架构的动态库 ;
一般情况下 , 逆向都在模拟器中进行 , 模拟器中可以拿到 root 权限 , 并且权限管理没有真机那么严格 , 这里推荐删除 armeabi-v7a 架构的动态库 ;
此外 , 该应用检测出了 Unity3D 引擎 , 那么该应用的核心逻辑都在 Unity3D 中 , 如果要修改应用 , 需要修改 U3D 对应的动态库文件 ;
二、定位动态库位置
Unity3D 引擎对应的资源都在 apk\unpack\Game\assets\bin\Data 目录下 ,
动态库资源都在 apk\unpack\Game\assets\bin\Data\Managed 目录中 , 如果要修改程序的逻辑 , 都在 C# 代码编译的 dll 动态库中 ; 本应用的相关逻辑是在 Assembly-CSharp.dll 中 ;
三、定位动态库中的修改点
使用 32 位的 IDA 打开上述 Assembly-CSharp.dll 文件 , 将下面红色矩形框中的 sub 减法运算 , 修改为 add 加法运算 ;
选中这个 sub 指令 ,
点击 Hex View-1 面板 , 发现 sub 对应的二进制数据是 59
;
将其修改为 add , 就需要知道 add 对应的二进制数据是多少 , IDA View-A 中选中 add , 然后查看 Hex View-1 中的二进制数据 :
add 操作对应二进制数据 58
;
这里修改时 , 将 0x354A6 字节的 59
修改为 58
;
四、修改动态库
使用二进制查看工具 , Ctrl + G 快捷键 , 跳转到 0x354A6 位置 , 发现值为 59
;
直接选中后 , 编辑该值即可 ;
五、重打包
将修改后的动态库放回原来的位置 ;
删除 sing 和 repack 目录 ;
继续执行程序 , 会在检查当前 " 解包 -> 分析 -> 重打包 -> 签名 " 流程 , 执行了哪些部分 , 发现 解包 , 分析 完成 , 重打包 和 签名没有完成 , 执行程序后 , 会自动进行后续 重打包 和 签名操作 ;
执行完毕后的 apk/sign/Game.apk 就是重打包后签名的文件 , 可以执行该 APK 文件 , 验证修改是否生效 ;
相关文章
- 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」
- 常见Android面试题及答案(详细整理)
- strictmode android,Android 应用性能优化-StrictMode(严格模式)
- android activity singletask,Android Activity启动模式之singleTask实例详解
- Ubuntu14.04安装Android SDK
- android 获取收到短信验证码,Android自动获取短信验证码
- Android busybox安装与vim Python IDE开发环境
- iphone4装android,iPhone4可安装Android实现双系统启动.pdf
- Android resource linking failed_android:authorities
- Android游戏激活成功教程 入门级零基础起步学习激活成功教程!MT管理器+修改器使用方法 小白看了绝对有用
- android菜鸟教程_菜鸟软件下载app
- mitmproxy 抓包神器-2.抓取Android 和 iOS 手机 https 请求
- 【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 )
- 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | dex_file.cc 中创建 DexFile 实例对象的相关函数分析 )
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
- 【错误记录】编译 Android 版本的 ijkplayer 报错 ( ./init-android.sh: 第 37 行: cd: android/contrib/: 没有那个文件或目录 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )
- [android] post请求接口demo测试代码详解手机开发
- 亚马逊带广告的IMDb TV服务终于推出了Android和iOS应用
- Android 与 MySQL 的完美结合(andoid mysql)
- Android实现TextView中文字链接的4种方式介绍及代码
- Unity3D游戏引擎实现在Android中打开WebView的实例