Constly Const Pointer

受不了了啊!指针与常量!别搁那“就近原则”了!来点从编译器视角的解析吧!

Read More

Share

Rust规则书

看过一遍 Rust 的语法,如果其他语言也能按照这种思路去写,其实也可以很安全。

本文会简单梳理一下所有权、Trait、生命周期,以重新构建脑内代码思维模式。

Read More

Share

entt.1 组合遍历

过了好一阵子,私以为对 ECS 有了些许了解,在我看来 ECS 是一种 DOD(面向数据设计)的实现方法。而跟诸多数据库一样,entt 提供的是一种紧凑组织、高效遍历的数据框架,并加上各种模板元使代码组织简洁美观。

本文会讨论内存组织方式与遍历的方法。

Read More

Share

Lua Coroutine

C++20 更新了 coroutine 无栈协程的接口,westquote/SquidTasks 就已经使用它在商业产品中作为逻辑框架。它提供了一个近似 javascript 异步操作的写法来构建系统:

1
2
3
4
5
6
Task<int> LoadGame() {
co_await LoadMap("rc.umap");
auto net_handle = co_await CreateNetSession(conf.server);
co_await CreateInstance(net_handle, conf.user);
return 0;
}

这种写法的好处就在于,加载过程不阻塞启动流程,且大幅减少异步回调的函数链。本文会尝试利用 Lua 原生的 Coroutine 系统,来搭建优雅的异步框架。

Read More

Share

【dod】面向数据指南

开新坑了,这回要读一读 Richard Fabian 的 DodBook。这本书主要介绍了一些程式模式于面向数据的实现方式,但也仅仅是介绍,正文几乎没有给到任何代码范例,故我也仅仅提炼一些关键的理念,以备不时之需。

Read More

Share

【和弦分解】Low Roar《Bones》

出自 Death Stranding Orignial Sound Track

1=D, Capo=2

First of march, it’s clear to me

It’s something that’s uncomforting

Your body has a way with me

But I’m exactly where I wanna be

But I’m a long way from home

Read More

Share

看山不是山,看云不是云

回看上一篇日志,已经是一年之前的事情了,结束了百无聊赖的大学生活,开始买车买房、求职相亲……当然不是。如果生活能如此一帆风顺该多好,然而这种看似“平庸”的生活竟成了奢望。

Read More

Share

【CV】相机标定时各种参数干什么用的?!

本文高度致敬张正友的文章《A Flexible New Technique forCamera Calibration》,同时介绍如何在 OpenCV 中实现其方法。虽然看不懂原理,不过东拼西凑姑且能弄出个能用的纯过程代码,放在这里供大伙看个乐。

Read More

Share

【CMake】依赖包调用一瞥

花了一天,终于把 IK 系列连接在了一起,这一波硬读代码,属实有些影响生活了!

本文将列出几个载入外部包的方法,代码已同步至 timrockefeller/IKCMake

Read More

Share

观逆向:还是得学会汇编

前几日和朋友聊起各式音游,对解包产生了很大兴趣。当然也被科普了各种防逆向知识,由此想罗列一番做个随笔。

JAVA: class loader 热加载

加壳的目的无非两种:压缩或加密。类似于 Minecraft Forge,在运行时中将所需要的字节码转入内存中,这种方式能很好地隐藏 OEP。

而对策便是直接替换class loader,将写入内存的部分输出到文件中,便能获取到所有运行时源码。

字节码按规律修改

在《Project SEIKAI》中,游戏资源被一种特殊的方式所加密。其步骤为:开头128个字节每8个字节的前5个字节二进制取反。这种方法可谓异常简单,只需对比一遍原生 Unity 未加密的资源包二进制文件就能找出规律。

refer: 解包PJS资源的进一步探索, 黑鲸.

CPU级加壳

这种方式是将在指令头做一个映射,修改译码过程。这种方式可能连操作系统都不一定能捕捉到。

卷尾

加壳的方式非常之多,还有 int3 陷阱等不再赘述。我也推荐他试着逆向原神,不过难度确实很大,据我所知成功的也仅寥寥几人。日厂手游开发中 Unity 使用率越来越高,这也导致了很多 Unity 上的安全问题能在各种产品中重现。而回忆当年《Love Live!》用的自家引擎,也算是一种原始的加壳方式吧。

Share