re/unity游戏逆向首试 [BJDCTF2020]BJD hamburger competition

Posted zz-gy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了re/unity游戏逆向首试 [BJDCTF2020]BJD hamburger competition相关的知识,希望对你有一定的参考价值。


本题是是一个unity游戏,而且是以c#和.net编写尝试直接用idea进行反汇编,但是没有找到运行逻辑,后来在大佬的wp上发现是利用dnspy对c#的dll文件进行返回编,进而获得结果。
反汇编 BJD hanburger competirion_Data中的Assembly-CSharp.dll即可获得如下代码段:

可以看到先利用sha1进行加密进行验证,最终的falg为md5加密
sha1解密后

进而用md5对1001加密:

提交,发现不对,然后查找md5实现的过程

可以看到在md5加密后,还每个字符都经历了toString("X2")
且只取前20个字符串

转化为16进制字符串。
大写X:ToString("X2")即转化为大写的16进制。
小写x:ToString("x2")即转化为小写的16进制。
2表示输出两位,不足2位的前面补0,如 0x0A 如果没有2,就只会输出0xA

即结果要转为大写然后再取前20个字符
最后的结果为

flag

Deno js 首试,小示例

deno js目前快要发布1.0。其实我已经安装了,之前有一个批量下载视频的需求,于是我就试了一下。我的需求是下载m3u8的视频,这些视频都是视频流的模式播放,要下载m3u8无非是把地址中的ts片断全部下载,然后合并,最后使用ffmpg转成mp4文件。这里使用了一个C#的开源项目来下载,它已经帮我们做好了下载到合并视频这一步,我们只要写一个爬虫,去抓视频地址。

爬虫这一步跳过,假设已经下载并保存成txt文件。我们都知道,js的异步比较难操作,为了更好利用带宽,我不需要并行下载。因为2个,3个一起下载,速度是一样的,只是速度均分了。我还不想写处理异常的,出现问题,串行的就会停在那里,方便观察。

deno还是没有发布的,你所有要的信息,只能去官网上找api。在这个需求我们无非一个循环就可以解决:

const decoder = new TextDecoder("utf-8");
const data = Deno.readFileSync("download.txt");
const list = decoder.decode(data);
const downloadArray = list.split("\\n");

const download = async (url) => {
  const p = Deno.run({
    args: ["./N_m3u8DL-CLI_Core", url]
  });
  return await p.status()
}

const forLoop = async () => {
  for (let index = 0; index < downloadArray.length; index++) {
    const item = downloadArray[index]
    await download(item)
  }
}

forLoop()

以上是关于re/unity游戏逆向首试 [BJDCTF2020]BJD hamburger competition的主要内容,如果未能解决你的问题,请参考以下文章

CTF逆向--.NET与Python篇

Deno js 首试,小示例

ACT推十年级PreACT考试 今秋首试 5月可报名

欧洲首试斯柯达Scala:告诉你什么叫做性价比|海外评测

鉴车 | 海外首试三菱Eclipse Cross:“百年老字号”+现代科技=SUV“吸粉重器”!

x86游戏逆向之实战游戏线程发包与普通发包的逆向