这本讲内核编写的书挺不错的,从空的裸盘一步步到一个带shell的小操作系统,完成之后颇有收获,但我看到最后发现作者遗漏了一个关键的部分:内核保护,即不能允许用户进程随意读写内核。这个漏洞需要补上。
将loader.S中高1G区域,即内核空间的页表权限设为内核级,那么用户进程就无法访问内核了,但是按照作者的进程写法,这样简单修改后init进程是无法启动的,为了操作系统的正常运行还需要修改很多其他地方。
修改基于示例代码c15/g。
Read More »这本讲内核编写的书挺不错的,从空的裸盘一步步到一个带shell的小操作系统,完成之后颇有收获,但我看到最后发现作者遗漏了一个关键的部分:内核保护,即不能允许用户进程随意读写内核。这个漏洞需要补上。
将loader.S中高1G区域,即内核空间的页表权限设为内核级,那么用户进程就无法访问内核了,但是按照作者的进程写法,这样简单修改后init进程是无法启动的,为了操作系统的正常运行还需要修改很多其他地方。
修改基于示例代码c15/g。
Read More »以下示例环境是Windows下的Python内置模块venv。其他平台以及其他相似功能模块(如virtualenv)其实都是类似的。
首先第一个常见的导致虚拟环境失效的原因是虚拟环境文件夹路径变化,包括对虚拟环境重命名,复制移动等等,之所以虚拟环境路径变化会导致其失效是因为在虚拟环境的scripts文件夹下的一堆activate启动脚本中记录着原本虚拟环境的绝对路径,所以路径变更后这些绝对路径也应当更新。
还有就是scripts中除了python.exe和pythonw.exe外的所有模块exe文件都硬编码了虚拟环境中的python解释器的绝对路径。如图:(我的虚拟环境位置就是D:\workspace\virtualenvs\test)
Read More »Git配置代理需要分两种情况:使用ssh仓库地址和使用https仓库地址,对于前者实际进行通信的软件为ssh,所以与git软件的配置无关。
一,如果仓库地址是ssh的,那么要编辑ssh配置文件。对于Linux,此文件的地址为:~/.ssh/config,对于Windows,此文件则位于:C:\Users\用户名\.ssh\config,若不存在请自行创建。并进行如下的编辑:
Host github.com *.github.com
User git
Port 22
# http使用-H,socks使用-S
ProxyCommand "D:\Development\PortableGit\mingw64\bin\connect" -S 127.0.0.1:10808 %h %p
通过SSH隧道,将一个远程SSHD server能够访问到的APPSRV地址和端口,映射为一个本地SSH client的端口。
这种代理方式是SSHD server替本地APP发送数据包给远程APPSRV,即代理客户端,使得真实的APP地址对APPSRV不可见,因此也叫正向代理。

首先确保本机安装了openSSH,打开cmd输入ssh,能运行就说明安装了,至于使用ssh-keygen生成密钥免密码登陆什么的和平时一样。
然后在服务器安装rmate脚本(项目地址:https://github.com/aurora/rmate):
sudo wget -O /usr/local/bin/rmate https://raw.githubusercontent.com/aurora/rmate/master/rmate
sudo chmod a+x /usr/local/bin/rmate