首页
社区
课程
招聘
[原创]利用Frida实现lua热重载
发表于: 2022-3-21 15:54 19125

[原创]利用Frida实现lua热重载

2022-3-21 15:54
19125

利用Frida实现lua热重载

对游戏进行修改时,尤其是代码逻辑在lua中,经常重启是一件很低效的事。所以考虑能不能有一款工具,不需要重启游戏就能让lua文件改动后立刻生效

非游戏开发,所以只有apk作为目标,无游戏工程代码。

主要分为两个模块:

LuaFileWatcher,检测lua文件发生变化,当发生变化时调用Hotfix.lua进行重载模块的操作。

Hotfix,重载lua模块

此处分享两种方法,一种使用Android的FileObserver(虽然本质上还是用的inotify),另一种直接使用 linux inotify。

关于该类的介绍,可以优先阅读:75fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2S2L8X3c8J5L8$3W2V1i4K6u0W2j5$3!0E0i4K6u0r3M7X3g2X3k6i4u0W2L8X3y4W2i4K6u0r3j5h3&6V1M7X3!0A6k6q4)9J5c8X3!0K6i4K6u0r3c8X3W2D9k6f1!0T1M7$3g2J5N6X3g2J5

主要是通过frida js 实现 创建一个继承FileObserver的类,用于监控LUA_PATH下有哪些文件被打开了。

优点:简单

缺点:不稳定,很多机型会提示ClassNotFound。

需要先了解inotify是什么,有什么用,怎么使用:f1cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0j5h3^5%4i4K6u0W2L8%4u0Y4i4K6u0r3L8r3W2F1N6i4S2Q4x3V1k6E0j5h3&6Q4x3X3c8H3j5h3N6W2M7#2)9J5c8X3#2S2L8U0N6Q4x3V1k6A6L8X3!0@1K9h3k6&6i4K6u0W2y4#2)9J5k6h3S2@1L8h3H3`.

该功能主要是创建一个线程,不停的监控LUA_PATH下文件打开的情况。如果有文件被打开,则加载一段lua代码。


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 6
支持
分享
最新回复 (1)
雪    币: 8611
活跃值: (5261)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2022-4-20 11:18
0
游客
登录 | 注册 方可回帖
返回