Windows内存攻击概览
Windows内存攻击概览S.E.H.狙击S.E.H.异常处理结构体放在系统栈中,每次压入以下结构体:
121dword Next S.E.H. recoder 栈顶1dword Exception handler 栈底
每次S.E.H. unwind展开操作即为将之前处理异常失败的Handler进行清场。
攻击U.E.F.UnhandledExceptionFilter是系统默认的异常处理函数,即“终极异常处理函数”。
攻击C++虚函数C++中一个类的多个虚函数地址保存在虚表中,通过成员变量进行溢出到虚表并触发,原虚函数地址改为成员变脸中的shellcode。
Windows堆溢出浅讲
Windows堆溢出浅讲堆表堆表分为空表free和快表lookaside组成。
空表free数组共有$128$项,每一项是个双向列表的下一项地址。free[1]链接了所有大小为$8$字节的堆块,free[2]链接大小为$16$字节的,以此类推到free[127]链接大小为$1016$字节的堆块。free[0]从小到大链接剩余的大于$1016$字节大小的堆块。
快表这玩意儿跟空表差不多,但每一项最多链接$4$个堆块,且都被设置为占用态,不能被合并。
堆块分配快表分配时必须精确分配。普通空表最优大小查找失败时会查找次优堆块。零号空表free[0]从大到小倒着找合适大小。
堆块合并小块大小小于$1\mathrm{KB}$,大块大小在$[1,512)\mathrm{KB}$之间,巨块在$512\mathrm{KB}$及以上。
小块分配:快表、普通空表、堆缓存、零号空表、内存紧缩、NULL
小块释放:快表、空表
大块分配:堆缓存、零号空表
大块释放:堆缓存、零号空表
巨快分配:虚分配
巨快释放:直接释放
堆结构这里使用HeapCreate创建堆,创建堆底层都为RtlAllocateHeap。调试 ...
WindowsAPI编程核心技术-基础扫盲
WindowsAPI编程核心技术-基础扫盲预备知识常见参数说明符前缀:
123456789101112b BOOL 布尔值g_ Global 全局的h Handle 句柄hwnd HWND类型i Integer 整数l Long 长整数lp Long-pointer 长指针n Short-int 短整型p Pointer 指针sz Zero-terminated-String 以0结尾的字符串u Unsigned-int 无符号整数w WORD 无符号短整数
常用参数类型:
1234567891011HWND 窗口句柄HINSTANCE 实例句柄HANDLE 句柄INT_PTR 约等于intLPARAM 不好说,一般传地址LPSTR 字符串指针LPTSTR 定义了_T宏的同上LPCTSTR 常量,同上UINT 32位无符号整型VOID 等于voidWPARAM 不好说,一般传各种参数
常用宏定义:
1234WINAPI/APIENTRY/CALLBACK __stdcall_In_ 输入参数,不会改变其值_In_opt_ 可选的输入参数,不会改变其值_Out_ 不关心本身内容,写入数据 ...
高级加密在逆向中初探
高级加密在逆向中初探笔记get_s_box_aes.c
12345678910111213141516171819202122232425262728293031323334353637383940#include <stdio.h> int main(){ unsigned char sbox[256] = { 0xE3, 0xFD, 0xF5, 0x30, 0x50, 0xBD, 0x51, 0x70, 0x3D, 0x40, 0x16, 0x04, 0x4D, 0xB5, 0xC0, 0xA2,0x6D, 0xE2, 0x56, 0xC4, 0xA9, 0x54, 0x7F, 0x27, 0x66, 0x82, 0xD6, 0x68, 0xFB, 0x57, 0xCA, 0xC3,0x6F, 0xA4, 0xF0, 0xD5, 0x2A, 0xE8, 0xC1, 0x0A, 0x5E, 0x19, 0x79, 0x4B, 0x69, 0x45, 0xF1, 0xA7,0x87, 0x00, 0xD8, 0xDC, 0x ...
数模竞赛-图论模型
数模竞赛-图论模型NetworkX基本操作:
123456789101112131415161718import networkx#创建空对象G=networkx.Graph()G=networkx.DiGraph()G=networkx.MultiGraph()G=networkx.MultiDiGraph()#由邻接矩阵W创建图G=networkx.Graph(W)G=networkx.DiGraph(W)networkx.draw(G,pos=None,ax=None,**kwds) #G为要绘制的网格图 pos为表示位置坐标的字典数据,参数如下: #circular_layout 顶点在圆环上均匀分布 #random_layout 顶点在一个单位正方形内随机分布 #shell_layout 顶点在多个同心圆上分布 #spring_layout 用Fruchterman-Reingold算法排列顶点 #spectral_layout 根据图的拉普拉斯特征向量排列顶点
示例:
123456789101112import networkx,pyl ...
数模竞赛-非线性规划
数模竞赛-非线性规划这篇文章的Markdown我实在是修不好了…凑合着看吧。
基础概念记$\overrightarrow x=[x_1,x_2,\cdots,x_n]^{\mathrm T}$是$n$维欧几里德空间$\mathbb{R}^n$中的一个点。$f\left(\overrightarrow x\right),g_i\left(\overrightarrow x\right),i=1,2,\cdots,p,h_j\left(\overrightarrow x\right),j=1,2,\cdots,q$是定义在$\mathbb{R}^n$上的实值函数。
若$f\left(\overrightarrow x\right),g_i\left(\overrightarrow x\right),i=1,2,\cdots,p,h_j\left(\overrightarrow x\right),j=1,2,\cdots,q$至少有一个是$\overrightarrow x$的非线性函数,则称如下形式的数学模型为非线性规划模型的一般形式:
\displaylines{
\min f ...
数模竞赛-常微分方程与差分方程
数模竞赛-常微分方程与差分方程常见模型略。
常微分方程求解-符号解例题1:
求解$y^{‘}=-2y+2x^2+2x,y(0)=1$:
1234567import sympysympy.var('x')y=sympy.Function('y')eq=y(x).diff(x)+2*y(x)-2*x**2-2*xs=sympy.dsolve(eq,ics={y(0):1})s=sympy.simplify(s)print(s)
得$y=x^2+e^{-2x}$。
例题2:
求解$y^{‘’}-2y^{‘}+y=e^x,y(0)=1,y^{‘}(0)=-1$:
1234567import sympysympy.var('x')y=sympy.Function('y')eq=y(x).diff(x,2)-2*y(x).diff(x)+y(x)-sympy.exp(x)con={y(0):1,y(x).diff(x).subs(x,0):-1} #subs替换x为0s=symp ...
数模竞赛-线性规划模型
数模竞赛-线性规划模型线性规划例题1:求解:
$$\displaylines{ \max z=70x_1+50x_2+60x_3,\\ \mathrm{s.t.}\begin{cases} 2x_1+4x_2+3x_3\leqslant150,\\ 3x_1+x_2+5x_3\leqslant160,\\ 7x_1+3x_2+5x_3\leqslant200,\\ x_i\geqslant0,i=1,2,3. \end{cases}}$$
代码:
1234567891011#pip install cvxpy cvxpy[GLPK_MI] cvxoptimport cvxpy,numpyc=numpy.array([70,50,60])a=numpy.array([[2,4,3],[3,1,5],[7,3,5]])b=numpy.array([150,160,200])x=cvxpy.Variable(3,pos=True) #决策变量 列向量obj=cvxpy.Maximize(c@x)co ...
数模竞赛-线性代数模型
数模竞赛-线性代数模型特征值&特征向量差分方程-Fibonacci数列化为一阶差分方程组:
$$\begin{cases} \displaylines{ F_{k+1}=F_{k+1},\\ F_{k+2}=F_{k+1}+F_k, }\end{cases}k=0,1,2,\cdots$$
写成矩阵形式:
$$\alpha_{k+1}=A\alpha_{k}$$
其中:
$$A=\left[ \begin{matrix} \displaylines{ 0&1\\ 1&1 } \end{matrix}\right],\alpha_k=\left[ \begin{matrix} \displaylines{ F_k\\ F_{k+1} } \end{matrix}\right],\alpha_0 ...
数模竞赛-Python基础
数模竞赛-Python基础Python入门123456789101112131415161718192021from numpy.random import randintimport numpya=randint(10,20,16)ma=max(a)ind2=numpy.where(a==ma)print(ind2[0])import string,random,collectionsx=string.ascii_letters+string.digitsy=''.join([random.choice(x)for i in range(1000)])count=collections.Counter(y)for k,v in sorted(count.items()): print(k,':',v)import randomx=random.randint(1e5,1e8)y=list(map(int,str(x)))z=list(map(lambda x,y:x%2==1 and y%2==0,[1,3,2,4,1],[3,2,1,2 ...