最近有机会接触UE相关资产的加解密方向,浅析了一下调用链以及hook时机,供同僚们交流。
开始之前可以先下载UE的源码,了解UE的Texture2D加载流程,最终定位到
[C++] 纯文本查看 复制代码
FPngImageWrapper::UncompressPNGData(const ERGBFormat InFormat, const int32 InBitDepth)
[font=-apple-system, BlinkMacSystemFont, "]
ERGBFormat结构中的rawData经过dump测试后可以正常显示图片。
[i]
在目标app中定位UncompressPNGData,可以采用字符串大法
[i]
可以通过一下两个方法利用frIDA全程hook并dump jpg文件 UncompressPNGData 、FJpegImageWrapper::UncompressTurbo
如果有需求获取其他格式的资产,可以尝试在其他图片类型的wrapper方法中尝试寻找合适的Uncompress***Data方法(比如imageWrapper)进行hook获取。
本文仅抛出一个思路,并已在本地demo工程测试。
大佬们可以交流一波