Android 逆向逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )
Android 逆向Android 系统文件分析 ( /proc/ 目录文件分析 | 记录系统和进程信息 | version 内核版本信息文件 )