使用rust来实现一个自我复制的小程序

起因

如图↓

20231002122621

其实还给我分享了个聊天记录(点击查看)

大概讲得是将flag塞进了一个会自我复制得压缩文件里面了

实现

虽不难实现,但却是个很有趣的程序

首先我定义一个字符串变量x,它的值为程序的前半部分

1
fn main() {\n let x = 

再定义一个字符串变量y,使它的值为程序的后半部分

1
\n print!("{}{:?};\n let y = {:?};\n{}", x, x, y, y)\n}

最后使用print!宏输出x``y这两个变量的值

同时用{:?}格式化符号来显示字符串的原始形式(包括双引号和转义字符

完整的代码如下

1
2
3
4
5
fn main() {
let x = "fn main() {\n let x = ";
let y = ";\n print!(\"{}{:?};\\n let y = {:?};\\n{}\", x, x, y, y)\n}";
print!("{}{:?};\n let y = {:?};\n{}", x, x, y, y)
}

当然这不仅能输出代码本身,你还可以往里面塞点其他东西,比如我在里面插入了一段,使它输出的代码中包含"hello quine"并在控制台中打印”hello quine”

具体代码如下

1
2
3
4
5
fn main() {
let x = "fn main() {\n let x = ";
let y = ";\n print!(\"{}{:?};\\n let y = {:?};\\n{}\\n\\\"hello quine\\\"\", x, x, y, y)\n}";
print!("{}{:?};\n let y = {:?};\n{}\n\"hello quine\"", x, x, y, y)
}

代码仓库

MagicstMagoo/quine_rs (github.com)

引用

「因你而在的故事」代码解析

高考一考完,去看了新高一的语文
Story
好家伙”好的故事””故事是有力量的”
我一看,一想,这不是因你而在的故事么?!
就跑去看短片去了.
看到前半段左下角有一堆代码,看着-> ::这不是C++么(想起以前短片一出就想分析分析短片里面的代码块的内容和作用
今天看了新一的作文 就来分析这些代码了(逃
🙏爱门

↑以上均为废话

阅读全文 »

masa全家桶非官方构建(masamods un-official builds)

下载方式见下方

更新(Update)

✨ 使用官方的malilib
✨ 支援了itemscroller
✨ 支援了tweakeroo

修复(Fix)

🔧 修复使用修改版1.20的malilib奔溃问题
🔧 修复了itemscroller编译失败的问题

下载(Download)

malilib
itemscroller
tweakeroo
minihud

仓库(repository)

📦 itemscroller
📦 tweakeroo
📦 minihud

Windows iSCSI 服务远程代码执行漏洞

情人节我怎么还在跟代码过啊😭😭😭

详情

披露时间:2023/02/14

CNA:Microsoft(微软)

阅读全文 »

情景

在编写 OpenHarmony 分布式屏幕示例 | 西瓜种植基地 时,意外的发现我的VS项目的工程中缺失了 unistd.h这一个头文件

为了继续对代码的编写,于是我决定自行添加一个新的头文件解决这个问题

解决方法

在项目源新建头文件unistd.h

头文件内容为

1
2
3
4
5
6
#ifndef _UNISTD_H

#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */

前言

大家有华为手机的同学应该对华为超级终端中那个可以控制其他鸿蒙设备的功能印象深刻吧

今天我就来详细讲解一下 HarmonyOS 底层的 OpenHarmonyOS 的分布式屏幕(distributedhardware_distributed_screen)

有兴趣的同学可以去看看官方的代码仓库

[distributedhardware_distributed_screen: Distributed Screen | 分布式屏幕]

阅读全文 »

分布式媒体库

在 API6+ 开始 OpenHarmony (后续称ohos) 拥有了新的系统能力 multimedialibrary (分布式媒体库)

分支 - 分布式相册

而在目前的相册应用中通过 HarmonyOS 的超级终端功能 我们可以访问第二台 HarmonyOS 设备上的相册 而下面将演示如何使应用快速使用分布式相册这个能力

阅读全文 »

之前在群里看见一张吊图

CoffeePot
1
2
3
4
5
6
7
8
9
10
11
while(working)
{
coffee.drink();
work.execute();
if(coffee == "empty")
{
if (CoffeePot == "empty")
CoffeePot.brew();
coffee.refill();
}
}

于是就趁着网课 摸了一个根据工作进度而减少咖啡量并自动补充的终端C++程序

阅读全文 »
0%