0%

rCore_Tutorial_CP2

这一章的文件结构略微的复杂了一点,需要开始之前先稍微强化一下对rust mod use等关键字的认知。。。

rust mod/use/extern

Packages and Crates rust认为src下的main.rs是二进制crate的主文件,而lib.rs则是库crate的主文件,所以这里的lib.rs是主文件,和cargo.toml中的name赋值为user_lib并无关联。。。

When we entered the command, Cargo created a Cargo.toml file, giving us a package. Looking at the contents of Cargo.toml, there’s no mention of src/main.rs because Cargo follows a convention that src/main.rs is the crate root of a binary crate with the same name as the package. Likewise, Cargo knows that if the package directory contains src/lib.rs, the package contains a library crate with the same name as the package, and src/lib.rs is its crate root. Cargo passes the crate root files to rustc to build the library or binary.

阅读全文 »

rCore_Tutorial_CP1

第一章:应用程序与基础环境

gdb调试指令

一些可能用到的 gdb 指令:

x/10i 0x80000000 : 显示 0x80000000 处的10条汇编指令。
x/10i $pc : 显示即将执行的10条汇编指令。
x/10xw 0x80000000 : 显示 0x80000000 处的10条数据,格式为16进制32bit。
info register: 显示当前所有寄存器信息。
info r t0: 显示 t0 寄存器的值。
break funcname: 在目标函数第一条指令处设置断点。
break *0x80200000: 在 0x80200000 处设置断点。
continue: 执行直到碰到断点。
si: 单步执行一条汇编指令。

内核第一条指令(实践篇)

阅读全文 »

编译,链接与装载执行

大概是rCore-Tutorial系列文章的第一篇。该tutorial大致教学从从头用rust写一个miniOS,加强一下对操作系统的理解
首先来到迷之补基础环节

编译

最初的问题是来自于当初写go的时候的,因为虽然接触了java,js,python,PHP等一众语言,但编译型语言终究只学了大一时的那一点点C++,因此对go,rust等语言的编译情况产生了简单的困惑。

C/go/rust编译差异

阅读全文 »

CobaltStrike SSL证书配置

起因是我发现我的机器由于长期挂着CS的服务端,然后导致我被扫描器发现,并且把我的机器标记成威胁服务器了。。。。
而为了隐藏CS服务端的信息,就需要从几个方面进行改造,其中之一就是经典的ssl证书配置,而其实CS主要需要配的证书有两个:cobaltstrike.store&https-certificate

期间踩了一个很大的坑,关于在win7等较老机器上使用https出现的tls版本问题

cobaltstrike.store

teamserver脚本中用keytools生成了一个特征及其明显的自签发证书。该证书仅用于客户端与服务端之间的通信,当然,被扫出来就会是及其明显的服务端标记特征。我估摸着也就是扫描器扫到这个证书然后给我标记了。。。

阅读全文 »

ASLR与PIC与PIE

简单的说就是看计算机基础的时候想起来函数调用的地址应当是在编译时确定的,而ASLR在运行时会对内存地址进行高强度随机化,那这样一来编译时写死的东西不就跑不起来了?然后开始的纠结和挣扎。二进制基础->0太难了啊。

PLT&GOT

PLT与GOT表,这个是属于之前二进制入门的时候就学过的东西了。PLT位于代码段,可读可执行,GOT表位于数据段,可读可写。PLT和GOT表是动态链接时延迟加载的必备条件。PLT指向GOT表表项,GOT表初始每一项都指向PLT开始处的resolver,当函数第一次被调用时resolver解析函数加载在内存中的地址回填GOT表,即可实现对动态链接运行时加载的函数位置重定向。动态链接库声明的变量理论上来说也位于GOT表中。

ASLR

阅读全文 »