下载解压缩后得到可执行文件,而且有一个unity的应用程序,应该是用unity编写的游戏
打开是一个贪吃蛇游戏
用.NET Reflector打开Assembly-CSharp.dll。(unity在打包后,会将所有的代码打进一个Assembly-CSharp.dll的文件里面,通过这个文件的反编译,就是详细看见里面的代码内容)
一个unity引擎写的贪吃蛇游戏,功能挺齐全的,看代码里,C#,和C++都有
搜索知道unity有两个主要特点,程序代码会打包进Assemblely-CSharp.dll库文件下,他主要储存这文件间的相互联系与文件所包含函数,其中gameobject()是用来创建对象的函数包含该函数的模块文件即为游戏的入口,可以看到在Interface下
查壳发现该文件为C++编写,不能用dnspy打开,换回ida
查壳发现该文件为C++编写,不能用dnspy打开,换回ida
通过定位很容易发现主函数,且刚好位于GameObject()函数下,看到有几个大整数,并且有两次flag提醒,开始以为是RSA,但好像不是,运算比较复杂,师傅说可以直接调用dll函数进行爆破,在函数头我们可以发现确实有一个a1参数被传入
import ctypes
dll =ctypes.cdll.LoadLibrary("F:\\w4nty0u\Plan-A\\6.1\\attachment\\Snake\\Snake_Data\\Plugins\\Interface.dll")
for i in range(255):
print(i)
dll.GameObject(i)
flag{Ch4rp_W1th_R$@}
学到两点: