C#逆向入门:Celeste 拆包
前言
Celeste 是 2018 年第一款 IGN 满分游戏,游戏类型正好是我比较喜欢的硬核跳台,再加上操作手感极佳,可以说是非常对口味了。
玩到一半的时候我想换个 Madeline 的头像结果一番搜索没有找到现成的,所以决定自己动手拆包。好在 Celeste 没有任何混淆,使用的是微软的 XNA 框架,逆向基本上没有难点,难点主要是如何适当的复用其代码提取资源,所以这篇文章主要是想记录一下自己是如何拆 Celeste 包的。
Celeste 是 2018 年第一款 IGN 满分游戏,游戏类型正好是我比较喜欢的硬核跳台,再加上操作手感极佳,可以说是非常对口味了。
玩到一半的时候我想换个 Madeline 的头像结果一番搜索没有找到现成的,所以决定自己动手拆包。好在 Celeste 没有任何混淆,使用的是微软的 XNA 框架,逆向基本上没有难点,难点主要是如何适当的复用其代码提取资源,所以这篇文章主要是想记录一下自己是如何拆 Celeste 包的。
上次提到了 Bilibili 的弹幕传输是基于 WebSocket 的二进制帧,因此给调试带来了一定不便。
但是 WebSocket 归根到底还是 TCP,并且我们已经知道它的帧结构了,剩下的就是抓包了。
这里提供三种方法:websocket-monitor, Fiddler, WireShark。
最近有一个学长去分析了B站直播弹幕WebSocket协议,我算是跟风去分析了一波。
其实协议本身并不复杂,就是JSON罢了,但是分析的过程稍微有些曲折,这里算是记录一下在这个过程中学到了什么吧。
如何写 C++ 而不是 C with Class
这是我当初在知乎上提出的一个问题,很感谢各位大佬的回答,也感受到了自己的不足,所以这几个月我强迫自己写了不少 C++ 代码,并且认真阅读了 Effective C++ ,个人感觉真是重新学习了 C++ 这门语言。
但是前几天跟别人说我最近在学 C++ ,他一脸诧异的说“那不是大一就学过了吗?”,转念一想,的确是这样,那我这段时间在学什么呢?我沉默了半分钟,给出的回答是“我觉得我想写更优美的 C++ ”。
事实上, C++ 并没有我想象的那么优美,但是 C++ 的确是一门很有魔力的语言,它即让你能看到底层的各种操作,同时也有能力对接一些高层应用,算是一门承上启下的语言。写C++,我能完全知道我的代码在做什么,这大概有一种安心感。
说了这么多,本文就是想在回答这个问题的基础上写一写我认为 C++ 中比较重要的概念和关于 C++ 的一点自己的思考。