HighFleet对话资源解密

发现个相当不错的独立游戏HighFleet,虽说文本量不是很大吧,但实在懒狗就去找汉化,结果发现现有的汉化只做了一部分,而且还是修改了贴图的,但我实在想看看这个游戏的剧情,去游戏目录下却发现被加密了:

问题不大,那就逆呗,exe拖进了ida发现根本不认,到了main看了眼发现了一个解密函数,估计一个简单的压缩壳

PS:

这游戏pdb给的工程名居然是2013年,开发时长足足8年

比起自己dump去修,直接用工具显然更合适,正好电脑里面的DIE好久没更新了,顺便更新了一下:

哦,原来是steam的drm自带的压缩,那没事了,继续用工具steamless:

[……]

查看文章

加入**一年后的感想

大概是因为国庆有了一点自己的时间了,突然想起来似乎一年没写blog了,一看上一篇都已经过去了 1(14514) 年了,所幸加入**的这一年也不是一无所获,只是碍于没心情(懒)写,外加有些东西不能轻易提及,所以留下了这里的一地鸡毛。

要说这一年有什么变化,老社畜了,越来越咸,发量目前情绪稳定,从去年得到Offer的欣喜到现在的心情平静,自己又磨练了很多。

首先一个毛病被磨平了,那就是做项目优先考虑项目如何上线,毕竟时间拖的太长了,往往都会发生意料之外的事情,拖死项目,特别是在一家商业公司,这种事情是不被允许的。

然后是一如既往的务实精神,老实说,我没太做到,有时候确实因为惯性导[……]

查看文章

Tuber浏览器,酷鸟浏览器小号?

再次声明,本人没任何政治立场,即冷政,一切本着技术研究为目的展开。

看了标题,不知道你们还记得那个所谓合法的酷鸟浏览器,今天这个叫Tuber玩意又火了,没看过的话建议点击这里传送一下,也就1分钟就能了解完。

时隔一年,今年又蹦出来一款所谓合法的YouTube浏览器,话不多说开拆呗~

应用sha1:6f5965c8024d4d9ba8989c5bf041d6dd5f6533a7c0cb8d55b46ca80da01f455e
版本号1.0.81

我个人的习惯是直接看看目录结构和用的库,这个东西明显打包了webview库,但我很快就在\assets\acl\下发现了bypas[……]

查看文章

无聊的恐鬼症

好吧,我真的不想承认我胆子小,不敢玩这款游戏,我只是个无情的工具人,有人喊我我必来。
这篇算不上什么技术文,烂大街的,还在用mono运行时又不混淆源码的白给游戏的基础修改罢了。

坟头蹦迪(改人数)

游戏为了保证恐怖的气氛,最大只允许4人加入游戏,入手思路是直接找用的网络库,做Unity开发对Photon网络库应该不会陌生,这个库是第三方托管的,接入也比较无脑,感兴趣的话可以去官网下载一个sdk体验下什么叫3分钟搞定联机。
既然用了库,那就不要怪人家改东西了,Photon连接服务器的API:
PhotonNetwork.CreateRoom
在dnspy里面xref,会发现LobbyMana[……]

查看文章

LimeSdr dump1090 折腾小记

最近买了块limesdr开发板,废了点劲装好之后发现只能听听电台,估计是天线没搞好,后面少不了还要折腾,不过这板子是全双工的,大概以后也不影响自己发送自己接收,不过人生的一大乐趣在于折腾,手机折腾够了,该玩玩没玩过的东西了(x

这个频段是做什么的,估计看到这里的你已经不需要我额外的废话解释了,dump1090这个项目也比较老了,于是有了无数个fork,其中有人给limesdr做了适配:
https://github.com/Gluttton/dump1090/tree/limesdr

老规矩。

装好你的ubuntu16-18,安装官网驱动:
https://github.co[……]

查看文章

CPP琐记 04 类的空间布局

空类

class Empty{};

Empty empty;
auto *empty2 = new Empty();

std::cout << sizeof(empty) << std::endl;
std::cout << sizeof(*empty2) << std::endl;

输出sizeof的时候直接被编译器优化掉了,以及空类只有1个字节,显然创建对象必须要有一个最小的内存空间。

auto *empty2 = new Empty();
auto *empty3 = new Empty();

std::cout <&l[……]

查看文章

CPP琐记 03

杂记,后面会补充

lambda
[捕获列表] (参数列表) -> 返回值 {函数体}

如果lambda会生成一个匿名函数的话,并不难理解工作原理,但如果捕获列表中使用了一个局部变量会怎么样呢?

我们看最后一句
由于f是另外一个匿名函数,因此会被翻译成正常的函数call

通过ida反编译可见,i已经被提到了类成员变量上

彩蛋

我把我自己整乐了

[……]

查看文章

CPP琐记 02

没写完,一点点补全吧,包括前面的内容,不定期编辑,老样子,只写难点

容器

Vector,犹豫不决就用它,其实这玩意大概是个可变长的数组(我现在还没看过STL的源码)?看起来以后可以试着实现一下。
猜猜cpp书上说的,当没有默认构造函数的对象用作Vector初始化的情况会怎么样?

IDE语法提示正常, 编译时:
no appropriate default constructor available
不难理解为什么不能这样初始化,但书上的例子实在太抽象了。
实际上对应:

explicit vector( size_type count,
  &nb[……]

查看文章

CPP琐记 01

算是每天学习/加深的一个记录,尽量每天补充…

const相关

我以往对const的理解,除了常量以外,用在函数的参数里面可以防止被修改,但经常和指针放在一起就忘记了优先级有点蒙

const int *a;
int const *b;
// 均为指向int常量的指针

看啊,多么迷人的陷阱等着你跳,结合之后很明显他俩是一个东西……
其实真正有区别的是

int *const c; //指向int的常量指针
const int* const d; //指向一个int常量的常量指针

用在函数返回值里面可以达到更迷惑的效果,clang甚至会警告你。
const int func[……]

查看文章

突击CPP

现实中发生了一些事情,让我萌生了一定要突击掉CPP的执念。

按照以往的经验,学会一门语言的最好办法就是扔掉上一门语言,但到了CPP这尤为困难,仔细想想怎么都还是因为我对C#的熟悉程度,基本上什么都能用它写,就算不能,用到些底层的还可以用C,导致我CPP很多地方练不到,甚至对一些基础概念也很薄弱。

说多了都是借口吧,立flag也是不好的,希望个把月后,回来看这么一段话不会觉得自己打了自己一巴掌。。。

另外希望后面有机会一点点在刷点leetcode吧。。。

暂定的读书计划

《C++ Primer》

《Effective C++》

《深度探索C++对象模型》[……]

查看文章