返回列表 发新帖

记一次Godot4.6.3引擎的逆向(定位密钥篇)

[复制链接]

17

主题

844

回帖

8858

积分

硕士生

Rank: 6Rank: 6

金币
3287
好评
25
信誉
173
发表于 2026-7-26 14:15:30 来自手机  | 显示全部楼层 | 阅读模式  来自 河南
最近在研究Godot引擎的逆向,其实市面上有比较多的教程,但是这些教程有点过时了,现在Godot引擎也在不断更新,虽然他是开源的,但是好像很少有人研究这个引擎

既然开源,那么这里就要介绍一个解包工具,Godot RE Tools

这里不讲具体案例,就说一下大致思路

这个游戏当然是经过加密的,既然加密,那就打开源码分析找密钥,经过分析4.6.3系列的源码

发现关键函数
Error open_and_parse(Ref<FileAccess> p_base, const Vector<uint8_t> &p_key, Mode p_mode, bool p_with_magic, const Vector<uint8_t> &p_iv);

定位到libgodot_android.so中的某个偏移地址0x39E9A5C

转伪C

这里伪c代码太长我就不放了,丢给ai分析,发现这个函数又调用了sub_3952728对应CryptoCore::AESContext::set_encode_key(const uint8_t *p_key, size_t p_bits),那么思路显而易见了,继续看伪c代码,发现key指针在x1寄存器里,那么hook该地址取得x1寄存器,然后

uint8_t *key = (uint8_t*)ctx->general.regs.x1;
    if (!key) return;

    char hex[65] = {0};
    for (int i = 0; i < 32; i++) sprintf(hex + i*2, "%02X", key[i]);
    LOGI("=== AES-256 KEY ===");
    LOGI("HEX: %s", hex);
打印密钥,打开Re Tools,发现成功解包

但当然到此并没有结束,我对godot引擎了解不多,发现他解包以后居然无法导出,这是一件悲伤的事情……
回复

使用道具 举报

0

主题

6401

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
828
好评
1
信誉
107
发表于 2026-7-26 15:04:48 来自手机  | 显示全部楼层  来自 广东
学习学习
回复

使用道具 举报

0

主题

2969

回帖

6906

积分

硕士生

Rank: 6Rank: 6

金币
3327
好评
0
信誉
100

MT论坛新人考神MT论坛帅哥

发表于 2026-7-26 16:45:45 来自手机  | 显示全部楼层  来自 浙江
感谢分享
回复

使用道具 举报

17

主题

844

回帖

8858

积分

硕士生

Rank: 6Rank: 6

金币
3287
好评
25
信誉
173
发表于 2026-7-27 19:06:35 来自手机  | 显示全部楼层  来自 河南
良作无人OVO
回复

使用道具 举报

15

主题

391

回帖

1278

积分

高中生

Rank: 4

金币
396
好评
6
信誉
107

考神MT论坛新人

发表于 2026-7-27 19:10:07 来自手机  | 显示全部楼层  来自 山西
学习一下
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表