通过 Winsock Hook 监听英雄联盟客户端RTMP通信

英雄联盟和 RTMP 的关系

很多人看到这个标题可能会一脸懵逼,RTMP 不是用来搞流媒体传输的吗?赫赫,这你就不懂辣。

从 2016 年拳头发布的 LCU 客户端更新技术细节 中可以看到,在 2008 年 Adobe AIR 的易用性与表达能力远超当时的 HTML,得到了拳头的青睐。而 RTMP 也是 Adobe 主导开发的可靠传输协议,与前者共同处于 Adobe Flash 框架之下,理所当然的被拳头用于客户端数据传输。

时至 2023 年末,拳头和腾讯已经尽可能将 RTMP 协议上的服务迁移到 HTTP,但是仍然有部分通讯由 RTMP 实现(如登录、Teambuilder)。

Read more

6.828-Lab1

6.828 的 Lab1 之前用英文洋洋洒洒写了七万多字,稍显冗杂。这次使用 Linux 环境重新走一遍,并且改用中文记录。

Read more

一次rm -rf /* 抢救经历

果然偶尔看一下别人的抢救经历还是有用的。。

玩计算机这么久,也见过不少 rm -rf /*`的笑话了,没想到这次搞到我自己头上来了

Read more

如何设计一个安全沙盒

在 OJ 中,沙盒是必不可少的一环,服务器无法相信用户提交的代码,这可能导致很多安全问题。

总体上来说,沙盒需要做到两点:

  • 对系统调用进行限制
  • 对资源使用进行限制
Read more

glibc的三种缓冲策略

很多朋友可能在初次学习 C 语言时,如果是使用 Unix 环境,可能遇到过如下的问题

1
2
3
4
5
6
#include <stdio.h>
int main()
{
printf("Hey");
return 0;
}

欸我运行完了怎么没输出呢?Google 一番才知道,这是由于所谓缓冲(Buffer)机制导致的

这个时候,你需要在 格式化串的结尾加一个\n,就可以看到输出了

这是因为,标准输出是基于行缓冲(Line Buffered) 策略的,它遇到\n时,会将缓冲区内容打包送出,这才可以看到要输出的字符串

除了行缓冲之外,glibc还有两种策略,详见下节

Read more

使用GNU C扩展实现C的反射

说明:此机制并非传统意义上的反射,仅为一种类似的实现

我最近在写一个 Sandbox,需要根据命令行参数选择对应的规则函数执行。如果硬编码,这是非常痛苦的,所以我在 Google 搜了一会,发现了如下的办法,相比硬编码要好许多。

Read more

进程间的通讯方式

简介

在 Linux 中有许多种方式允许进程之间进行通讯(Inter-process communication)

由于历史原因,Linux 内核提供System VPOSIX两种实现,两者概念十分相似。尽管如此,仍然推荐使用POSIX实现,因为接口的规范和统一性更好

Read more
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×