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逆向必备工具

android逆向必备工具

Android应用安全防护和逆向分析

Android 逆向Android 系统文件分析 ( /proc/ 目录文件分析 | 记录系统和进程信息 | version 内核版本信息文件 )