pwn模板整理
ANYfrom pwn import * from pwncli import *from LibcSearcher import*io = process("./ttt")context.terminal = ["tmux","splitw","-h"]context.log_level = 'debug'context.arch = 'amd64'ARROW = ' ============================================> ' s = lambda data :io.send(data) sa = lambda delim,data :io.sendafter(delim, data)sl = lambda data :io.sendline(data)sla = lambda delim,da ...
密码学理论基础
古典密码学古典密码体制
是否可以表示所有的古典密码体制???
加解密需要可逆的特性,因此数论的研究是十分适合密码学的
通信信道模型
古典密码学下的通信模型
1.1移位密码
凯撒密码
安全?:最多25次即可猜出有意义的明文
期望:13次
1.2代换密码
增大了穷举空间,为1.1的发展
可以理解为广义的凯撒密码。
安全?:26的阶乘,10的26次幂,可以频率分析。一个字符只能映射为另一个,因此只是形式上的变化,但是可以利用自然语言的频率上的漏洞,找除形式之外可以区分开的东西。
1.3放射密码
进一步增大了密钥空间。
1.4维吉尼亚密码
不只是形式上的变换,频率也会变。
1.5希尔密码
加密后的信息更加混乱,但是不同的分组之间是否有联系?
1.6置换密码
希尔密码的特例。
1.7 流加密
去除每一个加密组的联系,为之前的体制的扩展
密钥流可预测。
1.7.1 流密码密钥生成(LFSR,FSR)
如何构造最大周期,可以找本原多项式。
1.7.2 流加密算法A5/1WG Stream CipherTypical Stream Ciphers
流加密 ...
IR初探
llvm ir(初探)本节学习IR(中间表示)(初探)
扩展:
1.形式
需要知道程序是如何翻译为ir的,但是了解过程之前,需要知道何为ir
1.1三地址码
静态单赋值
1.1.1简单形式(仅顺序且最多调用函数)
含义
1.1.2 进一步形式
函数中有分支(为了研究函数中的基本块)
优化之后
何为基本块:
只能在入口跳入,或在出口跳出,边用来描述基本块之间的跳转。
重要指令phi
1.1.2 加上循环
2.实现
可调用llvm提供的构建指令的api
恶意代码分析实验
课后作业没有什么阅读价值
一、实验目的(1)完成教材上lab1-01至Lab1-04的题目;
(2)根据理论课要求提交所有样本在VIrusTotal和MicroSoft Defender AntiVirus上的的分析结果
(3)编写yara规则对样本进行检测
二、实验原理1.PE文件结构PE(Portable Executable)文件是Windows操作系统下可执行文件、DLL、驱动程序等文件的通用格式。PE文件包括多个部分,其中最关键的部分包括:
DOS Header: PE文件最开始的一部分,包含DOS可执行程序的头部,主要用于兼容老旧的DOS系统。
PE Header: 包含文件的元数据信息,包括机器类型、时间戳、入口点等。
Section Table: 列出了PE文件的各个部分,包括代码段(.text)、数据段(.data)、资源段(.rsrc)等,每个段都有相应的权限和属性。
Import Table(导入表): 列出了该文件运行时依赖的外部库和函数,如kernel32.dll中的CreateFileA函数。
Export Table(导出表): 若该PE文件是DLL文件 ...
语义分析
语义分析在语法树的基础上,对程序作进一步的检查,来看程序是否是meaningful
符号检查1.符号表
保存各种符号相关信息的数据结构
本节内容涉及教材
1.1作用域相关
嵌套作用域需要嵌套符号表,全局作用域还需放入类型符号以支持类型检查。
符号表的实现的接口
所要考虑的
2.文法分析(语义)(以类型为例子)(语法制导的定义)
如何赋予语法树语义,并计算相应的节点的属性?通过赋予每个节点的类型相应属性的相应值来实现,实现过程主要有监听器的模式(遍历两次ast)或者直接写(嵌入到产生式之中,但是只需要遍历一次)
处理依赖关系,分别有上对下,水平,和下对上。做法:将action嵌入cfg
综合属性。
继承属性。
继承与综合属性的综合。主要涉及到数组类型。
2.1文法分析(语法制导的翻译方案)(为语法制导的定义的一种实现)
2小节已给出例子
作业1
一c++示例#include <stdio.h>#include <math.h>#define PI 3.14159265358979323846const int maxValue = 100;int globalVar = 10;int square(int x) { return x * x;}void printResult(double radius) { double area = PI * square(radius); printf("Area of the circle with radius %.2f is %.2f\n", radius, area);}int main() { double radius = 5.0; printResult(radius); for (int i = 0; i < maxValue; i++) { globalVar += i; } printf( ...
linux5.15之物理内存管理
比赛被内核和iot爆了,感觉逻辑并不复杂,但是没有网络就是做不出来,哎,从现在开始深入学习内核了,以5.15为例(gpt推荐的),浅显研究一下内核的一些模块。先研究内存管理。比赛之前分析过2.6.10的代码,但是还是太老了,好多特性都没有,就当个开胃前菜吧。本章学习linux内核物理内存架构(对各个架构的抽象)
参考linux 5.15源代码。
https://docs.kernel.org/mm/physical_memory.html
https://chatgpt.com/(现代神器)
http://www.wowotech.net/memory_management/426.html
https://s3.shizhz.me/
内存管理关于numa,node
这种和架构紧密相关的模块,都定义在arch下,并在相应的include中提供相应的接口,因此理解其接口功能即可。
在pc端,uma更加常见,但是为了统一的实现,uma可以看成一个简化版的numa。
内存管理中的第一个核心概念是非一致性内存访问(NUMA)。在多核和多插槽的机器中,内存可能被安排成不同的内存块(称为内存节点 ...
内存管理
为了研究内核的堆利用,因此需要学习一下内核的内存分配的相关知识
参考链接https://chatgpt.com/
https://scis.uohyd.ac.in/~atulcs/COOS/Linux-HOWTOs/linux%20kernel/Understanding%20The%20Linux%20Kernel.pdf
https://github.com/andylhqiu/linux-2.6.10
https://s3.shizhz.me/linux-mm/3.2-wu-li-nei-cun/3.2.5-slab-slub-slob#org8b92d2a
https://elixir.bootlin.com/linux/v2.6.10/source/include/asm-ia64/mmzone.h
1.Page Frame Management1.1 page frame
页描述符,通过lru将page连接起来。
/*/include/linux/mm.h*//* * Each physical page in the system has a struct page a ...
异常处理机制
以Itanium C++ ABI为例子,其为类unix操作系统普遍使用的c++ABI标准
参考https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html#base-framework
https://maskray.me/blog/2020-12-12-c++-exception-handling-abi#%E4%B8%AD%E6%96%87%E7%89%88
一.BASE ABI
所有语言和实现通用的接口;感觉写的很混乱就做个参考吧
1.符合psABI架构的处理器的运行时库需要提供的接口_Unwind_RaiseException,_Unwind_Resume,_Unwind_DeleteException,_Unwind_GetGR,_Unwind_SetGR,_Unwind_GetIP,_Unwind_SetIP,_Unwind_GetRegionStart,_Unwind_GetLanguageSpecificData,_Unwind_ForcedUnwind
另外,定义了两种数据类型(_Unwind_Context 和 ...