自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(244)
  • 资源 (4)
  • 论坛 (4)
  • 收藏
  • 关注

原创 关于进程劫持注入的一点分析与思考

1. 劫持进程实现注入今天我尝试对win10 x64上的计算器进程进行进程劫持注入。劫持进程实现注入要执行如下步骤:以挂起方式启动目标进程 采用其他注入方式将DLL注入目标进程 继续目标进程的主线程使目标进程继续运行这种注入方式的优点: 被注入的进程来不及做任何防御就会被注入。因为以挂起方式启动进程,该进程的地址空间内除了目标进程的exe模块和ntdll.dll模块外还来不及解析导入表将所需dll全部导入,也就是说作为防护的dll模块或者线程可能也来不及导入和执行,这大大提高了注入

2021-04-03 17:25:41 61

原创 编程实现获取目标进程OEP

下面这段代码可以实现获取目标进程的OEP#include <ImageHlp.h>#pragma comment(lib, "Imagehlp.lib")PBYTE GetExeEntryPoint(LPCSTR szProcessName){ PLOADED_IMAGE pstLoadedImg = NULL; PIMAGE_NT_HEADERS pNtHdr = { 0 }; DWORD dwEntryPt = 0; pstLoadedImg = ImageLoad(

2021-04-03 13:32:30 13

原创 QT解决UI设计器显示和运行显示不一致问题

if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)){ QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling,true);}

2021-03-10 22:53:50 106

原创 Qt学习笔记[13]

为了学习QTimer, QDateTime和QTime 控件QTimeEdit, QDateEdit和他们的基类QDateTimeEdit等类的使用方法编写了如下小程序, 主要有几个功能计时器,可暂停 时间,日期或者两者的获取 以及其他一些不重要的试验功能界面如下:看一下代码:// dialog.h#ifndef DIALOG_H#define DIALOG_H#include <QDialog>#include <QTimer>#incl

2021-03-07 19:54:27 14

原创 堆溢出问题快速调试

首先来看下问题代码,这里最后的空字符发生了溢出。来看一下出现的问题以及如何调试。上面写明是堆链中第41个堆块且地址在0x00382a700出发生了错误。这种情况下别急着终止,点击重试就会断在出问题的位置。点重试后断到了这里往上拉一拉,寻找函数名,或者直接查看调用堆栈发现是断在_free_dbg函数中,这个函数是free()的底层,所以可以断定一定是释放的时候出了问题直接在free()函数上下断点然后运行过去,发现第41块堆块的下溢标志受损了。就是strcpy导致的。

2021-02-19 16:24:55 41

原创 C语言中使用结构体(struct)模仿共用体(union)

1. 普通的模仿方式#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#define TYPE_INT 0#define TYPE_FLOAT 1#define TYPE_CHAR 2#define TYPE_TEXT 3struct tagScore{ int iType; int iPoint; float fPoint; char cLevel; char s

2021-02-19 14:33:20 37

原创 Sqlite3快速入门

.databases 查看所有数据库 .tables 查看当前数据库所有表0. 创建表部分CREATE TABLE student(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),FEES REAL);CREATE TABLE class(ID INT PRIMARY KEY NOT NU..

2021-02-18 22:33:24 15

原创 初学者福利(≧∇≦)ノ Qt编写一个计算器

为了复习数据结构中的栈,用Qt编写了一个简易的计算器。界面如下:支持以下功能:基础的加减乘除运算 开平方根,求倒数,求平方 支持小数运算 判别表达式是否符合运算规则暂不支持负数运算。还会继续维护这个小项目,添加新功能。使用了如下技术:中缀表达式转后缀表达式 栈的运算利用代码写的非常简洁,没有多余"赘肉", 可能存在未知Bug,暂时没发现。其核心只有一个类QCalcCore。这里编写计算器的2个核心算法QString QCalcCore::InfixToP

2021-02-18 09:30:56 72

原创 [内核安全7]内核级的进程的监控

0. 导言进程的监控可以通过挂钩SSDT表中的NtOpenProcess来实现,但是现在这种方式已经不怎么用了,因为不稳定在者可能会被认为是恶意软件。微软知道这个问题所以为我们提供了专门的内核接口来实现这种功能。1. PsSetCreateProcessNotifyRoutine通过PsSetCreateProcessNotifyRoutine来监控进程, 该内核函数有个升级版PsSetCreateProcessNotifyRoutineEx。这个升级版功能更强大但只能在Vista版本以后使用,

2021-02-17 22:42:43 36

原创 简易计算器编写

写了一个计算器, 控制台版的,只做加减乘除法, 无视多余空格。考虑写一个Qt版本图形界面版的,给加上小数运算和支持各类三角函数重要思想如下:中缀表达式转后缀表达式 栈结构的利用#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <stack>#include <queue>#include <map>using name

2021-02-15 18:09:34 38 1

原创 异或加密工具类

写了一个异或加密工具类调用加密字符串 直接加密文件#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;class Encrypt{public: // 构造函数 Encrypt(); Encrypt(char *pContent, unsigned char ucKey = 'x'); // 拷贝构造函数 Encrypt(const Encrypt& e); //

2021-02-13 14:54:42 92

原创 Qt学习笔记[12]

首先看一下总结的思维导图:看一下元对象的使用:通过metaObject()获取元对象指针。 元对象通过调用className()获取对应类的类名字符串 元对象通过调用newInstance()获取对应类的新实例 inherits()方法可以测试类名是否为对象的类Q_CLASSINFO()方法设置名称与值的二元组可以通过QMetaClassInfo QMetaObject::classInfo(int index) const方法获取对象调用name()和value()来获

2021-02-11 20:13:40 27

原创 双向链表实现

双向链表实现这里的实现方式与普通双向链表有一些不同#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>using namespace std;class CList{public: typedef struct DblLinkNode { DblLinkNode() : m_pPre(nullptr), m_pNext(nullptr), m_iVal(0)

2021-02-11 15:09:30 24

原创 动态数组(线性表实现)

动态数组(线性表)接口实现#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>using namespace std;class CArray{public: // 构造函数 CArray(); CArray(size_t nSize, int iNum = 0); CArray(int *pArr, size_t nSize, size_t nLen); // 拷贝构

2021-02-11 10:45:57 24

原创 C++细节笔记14

1. 基本的文件IO方式#include <iostream>#include <fstream>#include <cstdlib>using namespace std;int main(){ fstream fs; fs.open("1.txt", ios_base::in | ios_base::out); if (!fs.is_open()) { cout << "打开文件失败!" << endl;

2021-02-10 06:34:50 84

原创 C++细节笔记13

模拟智能指针的行为#include <iostream>#include <cstdlib>using namespace std;class CFoo{public: CFoo() { cout << "CFoo构造函数调用" << endl; } ~CFoo() { cout << "CFoo析构函数调用" << endl; } void Test() { cout <<

2021-02-08 15:46:08 36 3

原创 C++细节笔记12

1. 函数模板作用解决重复代码冗余问题2. 隐式与显式实例化隐式实例化显式实例化注意,模板只有在使用时才会实例化, 在VC++6.0中甚至都不会检查其语法,也就是说直到运行才会发现该语法错误模板特例其特点是:template<>中没有类型 在函数实现中指定类型调用方法如下:3. 类模板类成员函数模板类成员函数模板不允许隐式实例化, 需要显示指明类型但是只需要在定义时显式指明一次即可,后面调用无需指明类模板中类型与

2021-01-23 17:41:08 22

原创 C++细节笔记11

1. final关键字final关键字在继承中产生作用,父类虚函数使用了final后,子类无法重写该虚函数2. 运算符重载作用: 提高代码可读性,提高类的易用性使用重载的两种方法:运算符重载的原则:1. 运算符重载不能改变运算符原有使用方式 2. 运算符重载不能改变原有运算符意义关于赋值运算符如果自己没有实现,则编译器会提供一个默认的赋值运算符重载,其直接进行浅拷贝操作经验建议: 一个类要至少实现如下三个, 目的是为了消除编译器实现默认类函数的机会实现默认构造

2021-01-20 16:13:22 24

原创 C++细节笔记7(补充拓展)

拷贝构造当类没有实现拷贝构造的时候,编译器会提供一个默认的拷贝构造 默认拷贝构造即内存拷贝(通过memcpy拷贝也就是浅拷贝) 当类提供了拷贝构造时,则调用提供的拷贝构造拷贝构造的时机对象传参, 比如调用void Test(ClassName buf)时形参需要传入ClassName的类对象,其实际上就是拷贝构造 使用对象构造对象, 比如下面的例子ClassName obj1; // 默认无参构造函数ClassName obj2(obj1); // 显式调用了拷贝构造返回值返回类

2021-01-20 13:35:35 17

原创 C++函数指针与成员函数指针(补)

1. 函数指针直接使用通过typedef使用, 当使用了typedef后,函数指针名就变成了一个专门的函数类型名,可以直接使用该名称定义该类型的函数指针2. 成员函数指针首先来看一个例子:这里出了问题,要求加上&符号,而单纯的函数指针没有这种强制要求,来看下:加上了&后还是有问题,显示类型不匹配,这里需要加上类作用域:加上作用域后,成员函数指针已没有问题了,但调用的时候出现问题,来看一下正确的使用方法:上面使用了两种,一种是成员函数指针定义

2021-01-20 13:30:01 19 1

原创 C++细节笔记10(上)

总结下C++各种情况下的内存排布:1. 单个类情况: 类内成员属性按顺序在内存中排布,与构造或赋值顺序无关2. 单个类有虚函数情况: 多了一个虚表指针并排在最低地址, 属性依次往后排列3. 单继承情况: 父类成员在低地址,子类成员在高地址依次排列4. 单继承带虚函数(子类未实现)情况: 继承父类虚表指针并排在最低地址处,其余与单继承一致5. 单继承带虚函数(子类实现)情况: 子类自己生成虚表并将指向虚表的虚表指针并排在最低地址处,其余与单继承一致

2021-01-03 10:41:24 29

原创 C++细节笔记9

1. 编译器添加默认构造函数的时机父类有构造,子类没有,编译器会为子类提供一个默认构造函数 类成员对象有构造,自己没有,编译器会提供一个默认构造函数 类中有虚函数, 按需求决定是否提供 单独类中没有构造,编译器提供默认构造2. 抽象类(含有纯虚函数的类)虚函数后添加=0, 即纯虚函数,纯虚函数没有函数体 含有纯虚函数的类叫做抽象类,其不能实例化对象 如果子类没有实现父类的纯虚函数,则子类也是抽象类 纯虚析构函数是个特例,其可以实现函数体抽象类也被称为规范化接口,其可以强迫子类必须实现

2021-01-02 17:03:37 16

原创 C++细节笔记8

1. VS快捷键Shift + Del删除整行2. 继承访问权限:继承关系的构造顺序: 先父类, 在成员最后构造自己继承关系的析构顺序: 先自己,在成员最后析构父类3. 继承的内存排布:假设发生了继承之后,父类在低地址,子类在高地址4. 继承中的隐藏可以通过作用域运算符指定调用父类函数解决该问题:4. 多态(完)...

2021-01-02 12:28:56 55

转载 ipHeader.Version_HLen=(4 << 4| sizeof(ipHeader) / sizeof(unsigned long))解析

typedef struct IpHeader{ u_char Version_Hlen;//首部长度IP版本号,1字节 u_char TOS;//服务类型TOS short Lengh;//总长度,2字节 short Iden;//标识 short Flags_Offset;//标志 u_char TTL; u_char Protocl;//协议 short Checksum;//首部校验和 unsigned int Source.

2020-12-31 20:03:18 28

原创 Winsock编程笔记[2]

1. WSAEventSelect模型2. Select模型3. WSAAsyncSelect模型

2020-12-31 19:59:01 22

转载 使用WSAIoctl获取AcceptEx函数指针

Winsock2的其他供应商不一定会实现AcceptEx函数。同样情况也包括的其他Microsoft的特定APIs如TransmitFile,GetAcceptExSockAddrs以及其他Microsoft将在以后版本的windows里。 在运行WinNT和Win2000的系统上,这些APIs在Microsoft提供的DLL(mswsock.dll)里实现,可以通过链接 mswsock.lib或者通过WSAioctl的SIO_GET_EXTENSION_FUNCTION_POINTER操作动态调...

2020-12-31 16:28:59 44

原创 Qt学习笔记[11]

1. QStringListModelQStringListModel主要用于处理字符串序列,一般与QListView联用。setStringList(const QStringList &strs): 初始化QStringListModel setModel(): 把数据模型关联到视图组件上 setEditTriggers(): 设置视图组件是否可编辑(该方法不属于QStringListModel)removeRows: 删除多行rowCount(): 获取数据模型.

2020-12-31 14:17:59 45

转载 DDOS拒绝服务攻击种类与概念介绍

一、 简述随着网络技术和网络应用的发展,网络安全问题显得越来越重要,已经被提到一个很高高的高度。DDOS攻击随着互联网的快速发展,也日益猖獗,从原来的的几兆、几十兆,到现在的几十G、几十T的流量攻击,形成了一个很大的利益链。DDOS攻击由于容易实施、难以防范、难以追踪等而成为最难解决的网络安全问题之一,给网络社会带来了极大的危害。同时,拒绝服务攻击也将是未来信息战的重要手段之一。DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速

2020-12-30 13:41:35 224

原创 Qt学习笔记[10]

1. Qt设计界面与运行不一致的解决办法插入如下代码: if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);在这个位置:2. QComboBox首先在UI界面上,可以双击ComboBox控件以添加默认拥有的项, 如下:ComboBox的主要方法如下:clear(): 清除ComboBox的所有

2020-12-29 13:19:25 31

转载 Windows下OVERLAPPED相关的异步socket函数介绍

windows提供一组关联OVERLAPPED结构的套接字操作WSASocket、WSASend、WSARecv、WSAIoctl等。1:WSASocketDescription:The WSASocket function creates a socket that is bound to a specific transport-service provider.1 SOCKET WSASocket(2 __in int af,3 __in .

2020-12-27 21:41:29 23

转载 ICMP协议详解

ICMP协议详解ICMP协议是一个网络层协议。一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。所以我们就需要一种协议来完成这样的功能–ICMP协议。ICMP协议的功能ICMP协议的功能主要有:1. 确认IP包是否成功到达目标地址2. 通知在发送过程中IP包被丢弃的原因如下图所示:我们需要注意几点:1.ICMP是基于IP协议工作的,但是它并不是传输层的功能,因此仍然把它归结

2020-12-27 17:35:39 59

原创 Winsock编程笔记[1]

0. 字节顺序TCP/IP统一规定使用大尾方式传输数据,即网络字节序Intel/AMD的计算机一般都是小尾方式存储数据所以当计算机想通过网络传输一串数据给另一台计算机时, 都会经历如下过程的转换1. inet_addr与inet_ntoa1. inet_addr是把由小数点分割的IP地址字符串转成由32位二进制表示的网络字节序IP地址IP字符串 => 32位网络字节序IP原型如下:2. inet_ntoa是把32位二进制表示的网络字节序IP地址转成由小数点.

2020-12-27 17:29:16 47

原创 Qt学习笔记[9]

1. QListView

2020-12-27 11:29:20 19

转载 inet_aton, inet_ntoa, inet_pton, inet_ntop解析

1.把ip地址转化为用于网络传输的二进制数值 int inet_aton(const char *cp, struct in_addr *inp); inet_aton() 转换网络主机地址ip(如192.168.1.10)为二进制数值,并存储在struct in_addr结构中,即第二个参数*inp,函数返回非0表示cp主机有地有效,返回0表示主机地址无效。(这个转换完后不能用于网络传输,还需要调用htons或htonl函数才能将主机字节顺序转化为网络字节顺序) in_addr_t i

2020-12-26 19:46:53 60

原创 gethostname与gethostbyname解析

这两个函数调用前必须先调用WSAStartup()进行初始化先来看下gethostname的原型:其作用是返回本地计算机的主机名,成功返回0,失败返回SOCKET_ERROR(-1)。来看一个例子:来看下gethostbyname的原型:其作用是输入计算机主机名获取一个hostent的结构体,该机构内容比较丰富,来看一下:接下来我们调用一下,然后将所有内容打印出来:可以看到我计算机有3张网卡(其实有2是虚拟网卡)。看一下代码:(完)...

2020-12-26 19:35:29 75

原创 winsock2.h重复包含问题

如果是如下形式:#include <windows.h>#include <winsock2.h>#pragma comment(lib, "ws2_32.lib")会导致一大堆的重定义错误,其原因不深究(其实原因也很简单)只要知道怎么才可正确包含即可。正确的做法有两种, 第一种:#include <winsock2.h>#include <windows.h>#pragma comment(lib, "ws2_32.lib")

2020-12-26 18:54:39 34

转载 IP TCP UDP ICMP校验和的区别和计算

IP校验和的计算IP数据报的校验和只检验IP数据报的首部。当发送IP包时,需要计算IP报头的校验和:把校验和字段置为0; 对IP头部中的每16bit进行二进制求和; 如果和的高16bit不为0,则将和的高16bit和低16bit反复相加,直到和的高16bit为0,从而获得一个16bit的值; 将该16bit的值取反,存入校验和字段。当接收IP包时,需要对报头进行确认,检查IP头是否有误,算法同上2、3步,然后判断取反 的结果是否为0,是则正确,否则有错。代码如下:unsigned

2020-12-26 15:34:05 199

转载 send recv sendto和recvfrom函数解析

send、recv和sendto、recvfrom,一般情况下,send、recv在TCP协议下使用,sendto、recvfrom在UDP协议下使用,也可以在TCP协议下使用,不过用的很少。1、send这里只描述同步socket的send函数的执行流程。s:套接字|buf:存储发送数据|len:发送数据长度 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len...

2020-12-26 13:33:09 73

转载 windows下命令行模式中cd命令无效的原因

当我们执行cmd 想切换当前工作目录时,会发现windows下命令行模式中cd命令没有生效,到底是什么原因呢?例如:当我们想切换到D:\MySql\mysql-5.7.19-winx64\bin 路径 ,理所当然的输入cdD:\MySql\mysql-5.7.19-winx64\bin 回车后,界面上路径并没有改变解决办法:方法一:输入完上面命令后,再输入D: 回车后,路径即成功的切换到我们想要到的路径方法二:直接输入cd /dD:\MyS...

2020-12-25 21:49:53 350 2

原创 [内核安全6]内核态Rootkit之GDT Hook

1. 导言GDT Hook的原理是通过修改GDT全局描述符表来达到挂钩的目的。GDT表的概念可以看下:IDT Hook整个GDT Hook的原理可以归纳为如下图。2. 代码段区分代码段分为两种: 一致代码段 非一致代码段 数据段属于非一致代码段 首先不管一致还是非一致,同特权级代码段之间互访都是允许的。在者永远不能由高特权级代码段访问低特权级代码段,这是不允许的!因为操作系统不会允许用高特权级来访问不安全的代码。有一种情况例外就是数据段,数据段可以被更高级的

2020-12-24 20:28:32 62 1

dd for windows

dd工具dd工具

2018-04-07

BZ二进制查看工具

二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具

2018-04-07

一个在用户层的调试器设计书

一个在用户层的调试器设计书一个在用户层的调试器设计书一个在用户层的调试器设计书一个在用户层的调试器设计书一个在用户层的调试器设计书一个在用户层的调试器设计书一个在用户层的调试器设计书一个在用户层的调试器设计书一个在用户层的调试器设计书一个在用户层的调试器设计书

2020-10-09

30天自制操作系统光盘文件

30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统30天自制操作系统

2018-04-07

VS2013+WDK8.1环境配置问题!! 大佬求助!!!困了好几天了!

发表于 2020-09-16 最后回复 2020-09-16

绑定手机号码已经不同怎么办

发表于 2019-07-16 最后回复 2019-07-18

您好,这里有问题

发表于 2018-12-01 最后回复 2018-12-02

怎么老是待审核还有原创怎么一直是0啊??

发表于 2018-04-13 最后回复 2018-04-28

空空如也

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

TA关注的人 TA的粉丝

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