Unity iOS Reverse Engineering


#1

有人做过Unity开发的应用在iOS上如何逆向的研究不?
从我取出的可执行文件来看,Unity在打包到iOS平台时,除了给自己套了一个objc写的框架以外,剩下所有的和应用相关的逻辑处理都是以C++函数来实现的,这种情况是不是就没法使用Tweak来hook了?


#2

你可以搜寻互联网一下,应该有简短iOS Unity的解说。
Unity使用mono来运行.Net,而苹果并不允许像mono这类的JIT执行,因此Unity使用IL2CPP技术把IL转为native代码,IL是.Net中间码。

Unity可以说是一个很大的脚本引擎,写好的游戏程序代码会被编译成Assembly-Sharp.dll(没有使用IL2CPP时),比如攻击函式叫attack,那脚本里呼叫就是得写attack, Unity就会去dll找相应的函式执行;IL2CPP也是,Unity把Native Symbol对应表写在Managed/Metadata/global-metadata.dat,Unity执行时才找得到呼叫的对象。 如果你改过用Unity写的App,你就会知道要是把函式名称改掉,那程序就会当掉,因为Unity就找不到对象执行了。

要hook还是行,这个工具能解析Symbol, https://github.com/Perfare/Il2CppDumper,知道address就能hook了