浅谈计算机中的 “栈”
提示:本文会出现大量汇编相关内容,阅读前建议先了解汇编相关知识(本博文使用的汇编架构主要为 x86_64)
提示 2:以下对 MB 与 MiB 不作区分,可能出现混淆情况,欢迎指正
栈是什么
先摘录一段定义吧(来自维基百科)
堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象资料类型,只允许在有序的线性资料集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。
堆栈的基本特点:先入后出,后入先出;除头尾节点之外,每个元素有一个前驱,一个后继。
简单来说,栈是一种具有先进后出特性的抽象数据结构,具体机制如图(来源):
汇编
咕
栈帧
在 Java 中的 e.printStacks()、gdb 中的 b...
Linux 中基于 PulseAudio 使用音频均衡器
起因
相比 Android 上的椒盐音乐、Wavelet、Viper4Android 和 Windows 上的 EqualizerAPO 等高度自动化软件,Linux 的音频使用均衡器比较麻烦,故对折腾过程作简单记录。
由于 Deepin 目前不能简单使用 PipeWire,本记录完全基于使用 PulseAudio 的环境。
过程
安装 Flatpak:sudo apt install flatpak gnome-software-plugin-flatpak
换源:flatpak remote-add --if-not-exists flatpak https://mirror.sjtu.edu.cn/flathub/flathub.flatpakrepo
安装...
通过 Xposed 与 frp 远程读取短信验证码
起因
本文写作原因是:用来接收验证码的手机时常接触不到,要在无人值守的情况下通过 ssh 访问验证码记录
免责声明:本博文仅供学习交流用途,请勿用于违法犯罪行为,否则一切后果自负。
使用
获得 root 权限并安装 Xposed / LSPosed / EdXposed
安装并激活我魔改的 XposedSmsCode 项目
使用以下命令允许代码执行:value="true"; key="allow-external-apps"; file="/data/data/com.termux/files/home/.termux/termux.properties"; mkdir -p "$(dirname "$file")"; chmod 700 "$(dirname ...
GitHub 学生认证踩坑记
起因
实际上本人对学生包最需要的只有 Copilot,再加上 GitHub 学生包 13 岁以上就能申请,那就整呗。
由于没有学信网档案、教育邮箱,以下用的资料与这些无关
同时,本人身份是初中毕业生,使用的资料见第三次尝试
一些在意的点
被拒和通过都会有邮件,不用一直刷新申请网站看
GitHub 时区应该是 GMT(UTC+0),也就是北京时间-8h
根据目前来看,每次被拒后审核上限时间都会加长 1 天,也就是第 3 次审核最长等待 3 天出结果
提交前一定要仔细核查信息,图片不能重复使用(再打一些文字水印也不行,机器是按主体部分判断的)
提交全程开启网页的定位权限,同时关闭代理直连 GitHub 网站
经历
如无特殊说明,以下时间均为北京时间(UTC+8)...
Ubuntu 安装与配置记录
起因
书接上回,完全迁移到了 Ubuntu,最大的感觉就是优化好了很多,bug 少了很多。然后后来又迁移到 Arch 了。
以下内容是鄙人的意识流大作,我也看不懂
安装前
先备份 Clash,Firefox,*(Markdown 编辑器)的目录,Icalingua++ 的设备信息,以及上次装 Deepin 的软件安装包以跳过一些麻烦步骤
安装
没什么好说的
配置
哈哈,谁看得懂啊
# Ubuntu 22.04
# 代码名 jammy
# sudo apt install *.deb
# 不要打断任何 apt/dpkg!!!
sudo su
sudo apt remove libreoffice* gnome-sudoku gnome-mines gnome-mahjong...
智能门锁临时密码逆向
逆,都可以逆
起因
对最近安装的智能门锁的临时密码生成协议比较好奇,再加上对微信的不信任,故去深挖了一下
正文
打开小程序后前往 /data/data/com.tencent.mm/MicroMsg/{id}/appbrand/pkg,根据修改时间找到相关程序包
使用这个脚本解包
npm install -g js-beautify,随后 js-beautify app-service.js
很容易就能找到相关生成逻辑(开发者甚至贴心的留下了 console.log
(吐槽一下,你们开发者是对着压缩后的版本调试的吗…… log 里的变量名全部是压缩后的)
把逻辑相关代码复制出来,将\转义为\\,丢到 Python 的一个多行变量里
通过 js2py 执行 JS 代码,在 Py...
Deepin 安装与配置记录
起因
由于某个闭源商业操作系统太烂了,打算迁移到 Linux,故有了这篇博文
以下内容仅作记录,因此不着重考虑可读性
安装前
使用 Windows 的自带磁盘管理工具压缩磁盘,分配一块可用空间
导出浏览器配置,包括书签、扩展配置等
安装
下载镜像,放到 Ventoy 里启动(可能要先关掉 Secure Boot)
预先划分一块 250 GB 的空间,安装时分 4 GB 用作 swap 分区,另外的挂载为 /
安装时会在 60% 卡很长一段时间(半小时左右),耐心等就好
配置
# deepin 20.6,基于 debian 10
# sudo apt install *.deb
# 不要打断任何 apt/dpkg!!!
--预装卸载(游戏、社区论坛、LibreOffice)
-...
使用安卓手机破解 WiFi
起因
这位大佬的博客讲述了一个使用安卓手机抓取 WIFI 数据包的经历,我想用手里的红米 K30 5G 与小米 5 复现,于是有了这篇博文
以下内容均在 MIUI 12.5,安卓 10 的 红米 K30 5G 上完整复现,在此大概做个记录
注意:执行以下操作需要手机获得 root 权限。
正文
<> 表示需要根据实际情况更改的内容
pkg install wireless-tools iw tcpdump aircrack-ng ethtool pciutils -y # 有一些是不必要的,可以自行鉴别
# 进入 monitor 模式,抓取数据包并破解
# 此处的命令不一定准确,具体可以`aircrack-ng`为关键词自行搜索教程
tsu
airmon-ng c...
共计 60 篇文章,8 页。