郭佳明的博客
  • 首页
  • 归档
  • 分类
  • 关于
  •   
  •   
Git的使用

Git的使用

Git 简介Git 是一个分布式版本控制工具,最初版本由Linux之父Linus在一周之内开发完成,目的是为了解决Linux内核维护工作的代码同步(不得不感叹李纳斯简直是神啊) Git 与其他版本控制工具的差异 别的版本控制工具侧重文件内容的具体差异 Git 关心文件数据的整体是否发生变化,把变化的文件作快照 Git 并不保存这些前后变化的差异数据,而是对数据得到进行sha-1摘要,并将此结果作为
1970-01-01
LaTeX快速入门

LaTeX快速入门

LaTeX快速入门,包含软件安装、环境配置、基本使用技巧
1970-01-01
LaTeX
#LaTeX
Linux tty&pty

Linux tty&pty

TTY的历史TTY全称TeleTYpewriter,也即是电传打字机,它通过两根电缆连接计算机,一根用于向计算机发送指令,一根用于接收计算机的输出,输出结果是打印在纸上的 由于历史原因, Linux保留了TTY,上述的输入和输出两个电缆,可以简单的认为是键盘输入和显卡输出 tty和stty命令tty命令返回当前的终端名字,1表示可以通过Ctrl+Alt+F3得到 12$ tty/dev/pts/
1970-01-01
Linux
Linux手册指南

Linux手册指南

man手册man 手册提供了极佳的快速查询功能,当我们不熟悉某个指令的时候,可以通过在命令行输入 man + command 查询在线手册 section类别 由数字标识,具体如下: 1:可执行的程式或是shell 指令。2:系统呼叫(system calls,Linux 核心所提供的函数)。3:一般函式库函数。4:特殊档案(通常位于/dev)。5:档案格式与协定,如 /etc/passwd6:
1970-01-01
工具使用
Linux系统工具:strace

Linux系统工具:strace

系统调用简介进程通过系统调用使用内核服务。系统调用会进入内核,让内核执行服务然后返回 一些常见的系统调用: 系统调用 描述 fork() 创建进程 exit() 结束当前进程 wait() 等待子进程结束 exec(filename, *argv) 加载并执行一个文件 open(filename, flags) 打开文件,flags 指定读/写模式 read(fd,
1970-01-01
Linux
Linux输入输出重定向

Linux输入输出重定向

标准输入、标准输出、标准错误 STDIN,文件描述符:0;标准输入,默认从键盘读取信息; STDOUT,文件描述符:1;标准输出,默认将输出结果输出至终端; STDERR,文件描述符:2;标准错误,默认将输出结果输出至终端 常用重定向命令将命令的标准输出重定向到文件中 1SomeCommand > SomeFile.txt 将命令的标准输出重定向、追加到文件中 1SomeComm
1970-01-01
Linux
Linux运维常用工具

Linux运维常用工具

gdb调试gdb调试:一个简单的入门 ldd 查看程序运行所需的共享库(.so文件),常用来解决因缺少某个库文件而不能运行的问题 使用方式:ldd + 文件名 输出三列,分别是依赖的库、库的位置、库加载的起始地址 top实时显示系统中各个进程的资源占用状况 交互指令: i:只显示正在运行的进程 h:帮助命令 q:退出 u:指定显示用户进程 P:按%CPU使用率排行 T:按MITE+排行 M:
1970-01-01
MIT-6.S081:Lab1 Xv6 and Unix utilities

MIT-6.S081:Lab1 Xv6 and Unix utilities

官方文档:https://pdos.csail.mit.edu/6.828/2020/labs/util.html Boot xv61234567$ git clone git clone git://g.csail.mit.edu/xv6-labs-2020 # 拉取仓库$ cd xv6-labs-2020$ git checkout util # 切换分支$ make $ make qemu$
1970-01-01
MIT6S081
MIT-6.S081:Lab4 trap

MIT-6.S081:Lab4 trap

前置准备 看完p4、p5 搞清楚lab要求 对riscv指令集、函数调用约定、trap机制有一定理解 RISC-V assembly (easy)通过make fs.img 命令可以将user/call.c文件转化为user/call.asm文件 123456789101112131415161718#include "kernel/param.h"#include
1970-01-01
MIT-6.S081:Lab2 syscall System calls

MIT-6.S081:Lab2 syscall System calls

国科大理塘丁真,电子烟专卖 前置知识 建议听课+熟读xv6手册,并理解清楚lab要求 先切换到syscall分支,并在sh.c中加入代码: 123456// Execute cmd. Never returns.*__attribute__((noreturn)) voidruncmd(struct cmd *cmd) { .....} 这样做是为了防止报递归错 这个
1970-01-01
MIT6S081
MIT-6.S081:Lab3 page table

MIT-6.S081:Lab3 page table

Lab3 pgtable写在lab开始之前: 这个lab很明显和前面不是一个难度 需要补充一些虚拟内存的知识 看一下配套的xv6指导手册 B站的课程视频录播 页表虚拟地址中间的index有27位,因此页表项就有2^27个,也即是0~2^27-1,将index对应的PPN取出和offset拼在一起就成了PA(physical address) xv6 运行在 Sv39 RISC-V 上,这意
1970-01-01
MIT6S081
OSTEP NOTES & HW:进程

OSTEP NOTES & HW:进程

进程是什么进程是操作系统为正在运行的程序提供的抽象 程序本身是没有生命周期的,它只是存在磁盘上面的一些指令与静态数据,那么操作系统如何创建并启动一个进程? 将代码和静态数据从磁盘中加载到内存中进程的地址空间 早期系统会把所有数据在程序运行前加载完成,现代操作系统使用懒加载,也即是在程序执行期间需要加载的代码或数据片段,才会加载 为程序的运行时栈分配内存 为堆分配内存 一些别的初始化任务,比如
1970-01-01
OSTEP
OSTEP NOTES & HW:虚拟内存

OSTEP NOTES & HW:虚拟内存

基址加界限机制(base and bound)一个实现虚拟内存的初步机制:基址加界限机制,只需要很少的硬件逻辑,就可以将虚拟地址和基址寄存器加起来,并检查进程产生的地址没有越界 有时又称为动态重定位(dynamic relocation) 要求每个 CPU 需要两个硬件寄存器:基址(base)寄存器和界限(bound)寄存器,有时称为限制(limit)寄存器,它们被包含在内存管理单元(Memor
1970-01-01
OSTEP
ROP入门

ROP入门

基本工具pwndbg 123git clone https://github.com/pwndbg/pwndbgcd pwndbg./setup.sh checksec 123git clone https://github.com/slimm609/checksec.shsudo ln -sf ~/checksec.sh/checksec /usr/local/bin/checksec
1970-01-01
CTF
PhD之路

PhD之路

在此处亟需一个宏大的沉思 我的科研工具 设备 X86台式工作站(工作用,搭载i9-10980XE处理器) 生产力工具 工作主力 MacBook Pro(出门用,M1 Pro 芯片) 用作移动办公 续航无敌,可以坚持10小时以上 ThinkPad P14s 皮实耐用 有触摸屏,可180度开合 移动的瑞士军刀 乐歌电动升降桌 京造Z7人体工学椅 文献管理 我使用zotero管理
1970-01-01
杂谈
#攻略,规划
R语言入门

R语言入门

R语言简介1992年由Ross Ihaka 和 Robert Gentleman发明,因此叫做R语言 R的特点: 一个专注于统计分析、制图的语言 免费、开源 适用于多个系统(Windows、macOS、Linux) 有丰富的库 社区活跃 安装&环境配置安装R语言以Windows为例 在https://cloud.r-project.org/下载R语言 使用R studio或者vsc
1970-01-01
Makefile:一个简单的入门

Makefile:一个简单的入门

为什么使用MakefileMakefile可以使构建更方便、减少不必要的构建 想象以下情景,目标文件main的依赖关系如下:那么可以使用如下命令行进行编译: 1gcc main.c stack.c maze.c -o main 那么会出现以下状况: 即使是仅仅改变了某一个文件的一行代码,那么所有的.o文件都需要重新生成,然后通过链接得到目标文件,这个开销是巨大的 一个极端情景:一个大型的软件
1970-01-01
Makefile
SEED-lab:Buffer-Overflow Attack Lab (16.04虚拟机)

SEED-lab:Buffer-Overflow Attack Lab (16.04虚拟机)

Environment SetupLinux有两个防御机制: /bin/sh符号链接指向的是/bin/dash,dash和bash都有防御机制,当它们发现自己是在setuid进程中被执行的时候,就会euid为进程的真实用户id,放弃特权 地址空间随机化:Linux 使用地址空间随机化来随机化堆和堆栈的起始地址 为了正常进行实验,需要: 关闭地址空间随机化 将/bin/sh符号链接指向没有保护
1970-01-01
SEED-lab
SEED-lab:Dirty Cow

SEED-lab:Dirty Cow

脏牛漏洞介绍 脏牛,也即dirty COW(copy on write) Dirty COW 漏洞属于竞态条件漏洞,自2007年9月以来一直存在于 Linux 内核中,并于2016年10月被发现,该漏洞影响所有基于 Linux 的操作系统,包括 Android,其后果非常严重: 攻击者可以通过利用该漏洞获得root特权 该漏洞存在于 Linux 内核中的写时拷贝代码中。通过利用这个漏洞
1970-01-01
SEED-lab:Cross-Site Request Forgery Attack Lab

SEED-lab:Cross-Site Request Forgery Attack Lab

CSRF原理跨站脚本攻击 原理 同站请求 一个来自example.com的网页向example.com发送请求 跨站请求 evil.com向example.com发送请求 假设受害者访问了evil.com,该网页中嵌入了js代码,进行了跨站请求,浏览器在请求发起时附加所有属于example.com的cookies,那么就会造成跨站脚本攻击 一个get请求示例 12345678<h
1970-01-01
SEED-lab
1234…6

搜索

Hexo Fluid
载入天数... 载入时分秒...
总访问量 次 总访客数 人
京ICP备2021035969号