自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 PE文件(三)节表作业

2.手动解析所有节表。

2024-04-26 21:24:35 405

原创 PE文件(三)节表

Name数组的长度最大为8字节,如果定义节的名称为.text,由于.text对应的ASCII码分别为0x2E, 0x74, 0x65, 0x78,0x74,所以Name数组中的数据为2E 74 65 78 74 00 00 00,一共8字节。所有的节表一起记录了该.exe文件中所有的节的信息,每一个节都有对应的节表来存储信息,所有的节对应的节表组合在一起就构成了PE文件的节表结构。内存中的地址:节表在4GB内存中的地址要加上imagebase的值,才是节表真正在内存中的起始地址。

2024-04-26 21:20:10 889

原创 PE文件(二)PE头字段说明作业

提取文件PE头部信息到控制台。

2024-04-24 21:46:06 406

原创 PE文件(二)PE头字段说明

PE头字段 = DOS头 + PE标记 + 标准PE头 + 可选PE头我们今天分析一下PE头字段中所有重要成员的含义。

2024-04-24 21:45:06 1003

原创 PE文件(一)PE结构概述作业

2.找出所有标准PB头数据,并统计标准PB头大小.3.找出所有可选PB头数据,并统计可选PE头大小.1.找出所有DOC头数据,并统计DOC头大小.

2024-04-18 21:59:39 105

原创 PE文件(一)PE结构概述

同一份文件在内存中和在硬盘中的内容是一样的,但是他们文件内存起始位置是不一样的,它们分节之间的空白区域大小是一样的,这似乎与我们之前所作的文件硬盘与内存分布图有所不同,这是由于对齐的机制。我们之前在找DOS头时,DOS头以0x000000e0结尾, 指向了左侧地址e0的地方,从图中可知,e0的地方有5045,在最右侧有PE文字,这也正好说明了此处是pe文件真正开始的地方,即NP头开始,但这个e0并不是一直固定的。每一个节,都有一个对应的节表(图中块表)用于记录节的相关信息,如每一个节的概要性信息。

2024-04-18 21:59:31 1089

原创 Windows SDK(六)组合框与列表框控件

const WCHAR * szCity[5] = { L"北京",L"上海", L"深圳", L"广州", L"曹县" };

2024-04-07 17:17:38 907

原创 Windows SDK(五)按钮静态文本与编辑框控件

我们首先应该知道,所谓按钮静态文本等等控件都是窗口,他们都是隶属于父窗口下的子窗口,所以在创建控件前,我们要首先创建一个父窗口,此处我们直接使用Windows桌面程序创建时,程序自动为我们创建的一个窗口,该窗口如下表示:nullptrnullptrnullptr此时我们已经有了一个主窗口,接下来开始讲解控件的创建和应用在以下控件内容中,我们首先在全局变量中定义我们的控件ID,以便我们后续控件的查找#define0#define1#define2按钮的创建。

2024-04-02 21:23:30 865 1

原创 Win32预备知识

由于计算机内存中存储数据都是以二进制数据(0,1)存储,所以为了存储字符(如a),我们将每一个字符都赋值一个数字进行表示,如a对应97,b对应98。这样每一个字符都有对应的二进制数据,也叫做ASCII编码,用于保存在内存中 了。这就是所谓的ASCII编码的来源ASCII码使用指定的7 位二进制数组合来表示128种可能的字符。标准ASCII 码也叫基础ASCII码,使用7位二进制数(高位二进制为0)来表示所有的大写和小写字母,数字0到9、标点符号, 以及在美式英语中使用的特殊控制字符。

2024-03-21 15:06:15 761

原创 数据库(一)初步认识数据库系统

表:以按行按列形式组织及展现的数据如下便是一个表,也叫关系,描述了一批相互有关联关系的数据数据库:起源于规范化表(如成绩单)的处理,简称DB,是相互有关联关系的若干表的集合。简单说就是一堆文件,这些文件中存储了具有特定格式的数据作用:专门管理数据库中的数据的,数据库管理系统可以对数据库当中的数据进行增删改查。类型:层次型、网状型、关系型(本课程主要学习)。常见的数据库管理系统:MySQL,Oracle、MS SqlServer、DB2、sybase等.....

2024-03-10 17:25:07 967

原创 汇编语言程序设计(二)十六位汇编框架、子程序与堆栈

如下是16位通用寄存器,存储在cpu硬件中AX 返回值AX寄存器分为两部分 AH和ALAH高8位 存储功能号AL低8位 存储返回码以下是一个AX寄存器应用:给高位AL,00低位AL,16进制要以h结尾BXCX计数器DXSI目标寄存器DI源寄存器SP栈顶指针寄存器BP栈底指针寄存器16位堆栈每单元占2字节常见编译器指令r查看寄存器及下一行的指令u查看汇编代码t单步步入 遇见子程序进入内部 遇到int 21h指令时不要用tp。

2024-02-09 12:42:41 2042

原创 汇编语言(一) 电路与十六位处理器

八根电线代表一个数的八位二进制形式,这十六根电线代表两个值,电线之间的相互触碰,完成了数与数之间的运算,结果由另外八根电线输出结果。cpu只能识别01,开关很形象的表示01,最初的编程就是用打孔机打孔,表示01,输入设备交给。电线第一次输入,触发器将其值存储在锁存中,到电线第二次输入,第一次的值和第二次的值进行。每根电线都有对应的触发器,每次有电线输入数据时,触发器将值存储在锁存中,当有需要时,锁。第一个可执行汇编指令地址中,汇编指令的硬编码有五个字节,则下一个可执行汇编代码地址由该。

2024-02-08 14:03:54 825

原创 Windows系统编程(一) 文件与目录操作

以下程序需要包含头文件。

2024-02-06 20:50:38 890

原创 CTF re和pwn学习与就业

2024-02-06 19:18:15 145

原创 Windows SDK(四)鼠标和键盘消息处理

HFONT hFont = CreateFont(20, 10, 0, 0, 0, 0, 0, 0, GB2312_CHARSET, 0, 0, 0, 0, L"宋体");DrawText(hdc, L"蓝色", -1, &rect, DT_NOCLIP);DrawText(hdc, L"红色", -1, &rect, DT_NOCLIP);

2024-02-03 21:03:54 1219

原创 Windows SDK(一) 基础知识作业

01.尝试使用MessageBox的各种按钮类型,并且接受返回状态。02.进行WCHAR与CHAR之间的互相转换,并且正确输出。

2024-02-02 17:09:56 98

原创 Windows SDK(三)GDI图形绘制基础

HFONT hFont = CreateFont(100, 50, 0, 0, 0, 0, 0, 0, GB2312_CHARSET, 0, 0, 0, 0, L"宋体");创建实心画刷 参数为三原色。

2024-02-02 12:37:52 680

原创 Windows SDK(二)窗口程序创建流程

参数依次 窗口类名称 标题名 风格 x坐标,如上参数是一个绝对坐标 y坐标 宽度 高度 副窗口句柄,没有写nullptr 菜单句柄,没有写nullptr 实例句柄 参数,没有填nullptr,其返回值是一个窗口句柄。回并派发到窗口过程函数中进行处理,处理完毕后返回到消息循环,再次访问消息队列,重复以上。翻译传入的消息,如键盘打字传入的消息是虚拟键码,此处转换成字符消息。是以消息驱动的操作系统,需要不停获取消息并分发,也叫消息循环。退出程序,必须有,否则点击窗口关闭,窗口消失但线程无法结束。

2024-02-01 14:47:12 511

原创 Windows SDK(一) 基础知识

Window程序编程参考资料:编程:Windows程序设计第五版Windows系统编程:Windows核心编程第五版SDK:软件开发套件SDK就是API的集合(应用程序编程接口)

2024-01-31 15:18:52 551

原创 STL标准库(五) 算法,伪函数与空间适配器

利用空间适配器进行分配空间,()中的数字代表要分配的定义的类型的空间大小,此处分配一个int类型内存空间。申请了一个类的类型的空间适配器。

2024-01-27 22:20:31 605

原创 STL标准库(四) 关联容器

关联容器主要有两类 set和map,都属于双向迭代器set 集合 基于平衡二叉树(红黑树)存储,元素值唯一且有序multiset 多重集合 基于平衡二叉树(红黑树)存储,元素值可以重复unordered_set 无序集合 基于哈希表 无序的,但是元素值唯一,使用时需要包含头文件<unordered_set>以上三个功能基本一致,只是内部实现有所不同unordered_multiset 多重无序集合如下一个程序演示set关联容器#include <set> 需要包含该头文件template <typename

2024-01-27 19:41:21 369

原创 C++(一) 类之封装

类的三大特性:封装 继承 多态类是在结构体的基础上进化而来类由成员变量(属于对象),成员方法(属于类)构成创建对象时开辟的空间是用来存储成员变量的成员方法是属于类的,不属于对象。所有对象调用的方法,都是同一类方法。

2024-01-26 22:39:38 377

原创 STL标准库(四) 容器适配器

打印栈容器类型发现是class std::deque,是默认以class _Container = deque容器实现。指定栈内部使用vector,不可使用其他不支持类型,但声明并调用该其他类型自己的方法是没有错误的。

2024-01-26 21:11:46 374

原创 STL标准库(三)序列容器之list

定义一个int类型5个元素初始化为123的双向链表,obj是迭代器,该迭代器是struct std::bidirectional_iterator_tag 双向迭代器 支持++ --!

2024-01-26 14:38:42 796

原创 STL标准库(三)之forward_list

struct std::forward_iterator_tag 该迭代器是一个单向迭代器,只能从头部开始使用,支持++ * = 运算符。声明一个当前有五个元素的单向链表。*it = 124;*it = 123;如下一个程序进行演示讲解。

2024-01-26 14:14:18 692

原创 STL标准库(三)序列容器之deque

std::cout

2024-01-26 13:47:08 327

原创 C++拾遗(四) 函数

std::cout

2024-01-25 15:20:50 390

原创 C++拾遗(三)引用与指针

声明与定义引用和指针是两种不同的概念,尽管它们在某些方面有一些相似之处,但它们在功能和用途上是有所区别声明与定义引用:引用是别名,是对已存在变量的另一个称呼,一旦一个变量被引用,就不能再被引用其他变量。这里,ref是a的引用,它们引用的是同一个对象。指针:指针是一个变量,其值为另一个变量的地址。指针可以被重新赋值以指向其他变量。这里,ptr是一个指向a的指针。初始化和绑定引用:引用必须在声明时就初始化,并且一旦一个引用被绑定到一个对象,就不能再被重新绑定到其他对象。

2024-01-24 23:08:52 624

原创 C++拾遗(二) 引用

打印结果a=10 b=20。打印结果a=10 a=20。

2024-01-24 20:50:59 1223

原创 C++拾遗(一) 内存

C++程序在执行时,将内存大方向划分为4个区代码区:存放函数体(如main函数)的二进制代码,即存放 CPU 执行的机器指令,由操作系统进行管理。代码区特点:1.代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可 2.代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令全局区:存放全局变量和静态变量以及常量,其中常量属于全局区的常量区。该区域的数据在程序结束后由操作系统释放。栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放

2024-01-24 12:15:46 1287

原创 STL标准库(二)序列容器之vector

使用其特性操作符[]std::cout << obj.size() << std::endl;

2024-01-22 21:29:25 399

原创 STL标准库(二)序列容器之array

输出反向第一个和最后一个元素。

2024-01-22 14:38:45 994

原创 数据结构与算法(一)线性表

逻辑结构有以下几种关系没关系一对一关系 一对多关系 多对多关系a是b的前驱,c是b的后继该四种关系有以下别名集合 线性表 树 图。

2024-01-21 20:24:21 344

原创 并发编程(二)互斥体解决线程同步问题

加锁,当一个线程在访问该函数时,其他线程无法访问。程序运行,打印结果实际应该2000000但每次运行打印随机数,原因是丢失操作。如上操作,多线程需要访问该函数时,保证每个时刻只有一个线程在访问。需要包含<mutex>库 std::mutex 互斥体类型。//构造函数调用时枷锁,析构函数调用时解锁。此后原程序在哪会出错,就在哪加一个锁,如上述程序。g_Value++;

2024-01-15 16:23:59 347

原创 并发编程(一)线程基础知识与线程控制

因为Windows实现了线程调度,即再线程切换时,上个线程代码执行到的地方的线程的状态,线程上下文,通用寄存器,段寄存器,硬件调试寄存器,EIP(指令指针寄存器),EFLAGS等都会被Windows通过Windows(Context)保存,直到再次切换回来后再加载。原本在后台运行的线程,由于各种问题,线程提前崩坏,没有正常返回,等待函数没有接收到返回,抛一个异常,遇到此情况跳过即可。如在此处加一个循环,程序在执行该循环时,程序没有死亡,并发函数也不会死亡,而是一起执行两个函数。

2024-01-15 12:45:44 896

原创 数据结构与算法(十一) 排序算法一

如下一个数组,现对其进行从小到大排序。

2024-01-13 17:23:57 968

原创 数据结构与算法(十)深度优先搜索与广度优先搜索

广度优先搜索:从一个顶点出发(由开始时顶点创造顺序优先决定),访问所有没有被访问过的临节点。然后在从被访问过的节点出发,重复之前的操作如下为一个图从1出发,先后访问2 3,之后2访问它的邻接点4,3访问它的邻接点5(因为4已经被访问过了,所有节点只访问一次),最后4访问6,因为5的邻接点4 6访问过了,所以5不再访问6.由该途径可以得到一个树,叫做广度优先生成树, 如下图所示该存储路径由一个队列的形式和一个辅助数组存储该点是否被访问。

2024-01-09 22:47:34 866

原创 数据结构与算法(九)图链式存储

度:无向图的度:顶点与邻接点连接的边就做度。有向图的度:指向顶点的边叫做入度,由顶点指向其他邻接点的边叫做出度顶点:存储自身顶点信息和指向下一个临界点的指针邻接点:保存临接点的存储下标和下一个邻接点的指向指针存储方式:单向链接。

2024-01-04 22:06:27 1358

原创 STL标准库(一)STL迭代器

STL:标准模板库,具有代码高复用性,强大的功能,性能高效以及开源可跨平台代码分支:1.HP STL,第一个C++版本,惠普STL2.P.J.Plauger STL,VS IDE使用3.Rouge Wave STL,C++ Builder IDE使用4.STLport 常用于个人项目5. SGI STL GCC IDE使用STL组件1.迭代器 iterator 本质是一种泛型指针2.容器 Container3.算法 algorithm4.仿函数 functor 本质类模板。

2023-12-31 21:21:31 816

原创 数据结构与算法(八)图的基本概念和顺序存储

顶点:单位元素数据边:连接顶点的线段度:一个节点有几个临界点顺序存储:1.邻接矩阵,2.边集数组链式存储:1.邻接表,2.链式前向星。

2023-11-26 16:08:36 46

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除