自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 资源 (4)
  • 收藏
  • 关注

原创 业务安全之设备指纹:相关资料学习

以攻击者角度学习某风控设备指纹产品.设备指纹生成算法大变革.网易易盾的相关资料基于设备指纹零感验证系统.某移动端防作弊产品技术原理浅析与个人方案构想.一种移动端设备指纹方案介绍....

2021-05-24 22:08:31 397 8

原创 vs连接数据库mysql_real_connect()失败,mysql_error()报错Authentication plugin ‘caching_sha2_password‘ cannot be

实验环境:vs2015Windows10 64位c++问题调用#include "mysql.h"连接数据库。注:连接的是本地的数据库localhost报错信息:Authentication plugin ‘caching_sha2_password’ cannot be loaded定位报错:mysql_real_connect()失败。调用mysql_error()可以知道出错原因:Authentication plugin ‘caching_sha2_password’ can

2021-05-06 10:47:02 1180

原创 Windows网络编程 基于tcp实现一个简单的CS模型[完整可运行项目]

客户端/服务端模式:在TCP/IP网络应用中,通信的两个进程相互作用的主要模式是客户/服务器模式,即客户端向服务器发出请求,服务器接收请求后,提供相应的服务。客户/服务器模式的建立基于以下两点:(1)建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而就让拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。(2)网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区。因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是基

2021-04-13 21:47:31 765

原创 Windows网络编程 接受连接请求和收发数据

本文记录accept()/listen()和recv()/send()环节接受连接请求和收发数据连接请求accept()函数原型connect()函数原型收发数据send()函数原型recv()函数原型参数详细过程分析示例代码参考资料:连接请求accept()该函数在 s 上取出未处理连接中的第一个连接,然后为这个连接创建新的套接字,返回它的句柄。新创建的套接字是处理实际连接的套接字,它与 s 有相同的属性。程序默认工作在阻塞模式下,这种方式下如果没有未处理的连接存在,accept 函数会一直

2021-04-13 18:18:57 552 1

原创 Windows网络编程 套接字的绑定bind()和监听设置listen()

套接字的绑定bind和监听设置listen套接字的绑定简介函数原型如何绑定设置监听套接字进入监听状态函数原型代码示例本文记录bind()和listen()环节套接字的绑定简介bind 函数用在没有建立连接的套接字上,它的作用是绑定面向连接的或者无连接的套接字。套接字被 socket 函数创建以后,存在于指定的地址家族里,但它是未命名的。bind 函数通过安排一个本地名称到未命名的 socket 而建立此 socket 的本地关联。本地名称包含 3 部分:主机地址、协议号(分别为 UDP 或 T

2021-04-13 17:03:56 1504

原创 Windows网络编程 socket的创建和关闭

Socket的创建和关闭Windows网络通信简易步骤说明简易介绍函数原型:**参数:**函数返回值关闭套接字Windows网络通信简易步骤说明(1)服务端1、加载套接字库,创建套接字(WSAStartup()/socket());2、绑定套接字到一个IP地址和一个端口上(bind());3、将套接字设置为监听模式等待连接请求(listen());4、请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());5、用返回的套接字和客户端进行通信(send()/recv()

2021-04-13 16:38:03 1161

原创 Windows网络编程 WSAstartup()详解

WSAstartup详解详细说明函数原型使用方法:参数说明:返回值:使用范例:参考资料:socket编程要调用各种socket函数,但是需要库Ws2_32.lib和头文件Winsock2.h,这里的WSAStartup就是为了向操作系统说明,我们要用哪个库文件,让该库文件与当前的应用程序绑定,从而就可以调用该版本的socket的各种函数了。#include<WinSock2.h> //第2版本的网络库#pragma comment(lib,"ws2_32.lib") //windows 3

2021-04-13 16:09:20 4432

原创 STL笔记09 类模板遇上static关键字

我们知道在类中使用staitc关键字的时候,static不属于实例,而属于类本身。但是在模板类中,作为类本身一开始无法初始化,所以static成员应该就不会属于类本身;那么static关键字到底属于哪?我们通过写一个小的示例程序来观察一下:#include<iostream>using namespace std;template<class T>class Person {public: static int a;};//类外初始化template&

2021-04-11 15:53:34 167

原创 实模式和保护模式之“初相见”

作为一个计科专业的学生,之前一直对计算机系统、系统结构、计算机组成原理等课程不上心,认为编程我也没用到啊,但是随着学习的深入,越发觉得这些知识的重要性和魅力,只恨当初没有好好学习,如今只能再从头!“初相见”,仅作简单了解。实模式与保护模式的来历我们先来说一下为什么有实模式和保护模式的区别。最早期的8086 CPU只有一种工作方式,那就是实模式,而且数据总线为16位,地址总线为20位,实模式下所有寄存器都是16位。而从80286开始就有了保护模式,从80386开始CPU数据总线和地址总线均为32位,而且

2021-04-11 10:33:03 141

原创 PC加电后,CPU如何执行第一条指令

问题:CPU是如何执行第一条指令的?小问题:8086年代,为什么第一条指令的位置在F000H:FFF0H?小问题:为什么第一条指令放在ROM中?带着这些问题,我开始对cpu执行第一条指令开始研究。加电后的启动流程CPU首先会进行硬件初始化(hardware reset)。然后是可选的自检过程(BIST built-in self-test)。CPU开始执行第一条指令。从此开始CPU进入软件初始化过程。 在处理器的众多的引脚中,有一个RESET,由于接受复位信号,没当处理器加电,处理器都会执

2021-04-11 10:22:04 3402

原创 为什么GetProcAddress返回值总为0?[解决方案]

相信很多人在显式调用dll中函数的时候,会遇到相同的问题:就是我们loadlibrary成功后,明明调用的函数也是正确的,但是GetProcAddress的地址总是为0!不能获得正确的函数地址。出错示例我们先来看我这次出错的示例:DLL部分__declspec(dllexport) BOOL xxxxxxx();xxxxxx(){ xxxxxxx;}exe调用dll部分 HMODULE hInst; hInst = LoadLibrary(L"Dll1.dll"); if (NU

2021-04-09 15:08:15 3838

原创 STL笔记08类模板的h和cpp文件如何编写及会遇到的问题!

正常来说,我们编写一个类,一般将h文件和cpp文件进行分离,h文件定义类和函数,cpp文件中进行函数的实现; 然后提供给其他cpp文件调用。那么如果也这样编写类模板会出现什么问题呢?我们来看源码实现.h文件:定义了一个模板类#pragma oncetemplate<class T>class Person{public: Person(T age); ~Person(); void Show();private: T m_age;};.cpp文件:生命.

2021-04-08 15:52:30 255

原创 STL笔记07模板类如何写友元函数,不要滥用!

上来先贴结论:类模板类外实现不要滥用友元友元函数先来复习一下友元函数。友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。问题:根据友元函数的特性,他是非成员函数;在模板类中使用友元函数常常会遇到这么一个报错!无法解析的外部符号错误代码示例:#include<iostream> using namespace std; template<cl.

2021-04-07 21:29:50 391 2

原创 模板坏处竟然这么大?如何避免

模板的缺点:不当地使用模板会导致代码膨胀,即二进制代码臃肿而松散,会严重影响程序的运行效率。如何避免:把C++模板中与参数无关的代码分离出来。

2021-04-07 20:16:51 316

原创 #pragma once保证头文件只被编译一次

用VS编程的时候,经常会在头文件中加一个#pragma once,但是之前不太明白他的作用,本篇文章用做学习记录。#pragma once#pragma once是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次。注意:#pragma once是编译器相关的,有的编译器支持,有的编译器不支持,具体情况请查看编译器API文档,不过现在大部分编译器都有这个杂注了。具体写法:#pragma once... ... // 一些声明语句第二种保证头文件只能

2021-04-06 22:55:08 802

原创 STL初学者入门笔记06类模板派生普通类和模板类

模板类派生普通类模板类派生普通类时,必须要声明类型!模板类派生时,需要具体化模板类,因为C++编译器需要知道,父类的数据类型具体时什么样子的,才可以分配内存。即 要知道父类所占内存大小是多少,只有数据类型固定下来,才知道如何分配内存。示例:template<class T>class Person {public: Person() { m_age = 0; }private: T m_age;};class sonPerson : public Perso

2021-04-05 22:45:35 236

原创 STL初学者入门笔记05函数模板实例对char和int数组进行排序

首先顶一个打印函数模板template<class T>void PrintArray(T *arr, int len){ for (int i = 0; i < len; i++) { cout << arr[i] << " "; } cout << endl;}定义排序函数模板template<class T>void MySort(T *arr, int len){ for (int i = 0; i &

2021-04-05 12:05:27 224

原创 STL初学者入门笔记04类模板

我们的模板不止可以定义函数,还可以定义类!关于函数模板我们在之前的几篇文章已经涉及过了,本文开始类模板的学习。关键字类模板的一般定义模板template<class T>class Person{public:private:}类模板和函数模板的区别函数模板在调用的时候可以自动类型推导类模板必须显式指定类型例如:定义一个Person类template<class T>class Person{public: Person(T id,T age)

2021-04-05 11:36:04 146

转载 STL初学者入门笔记03模板函数实现原理剖析

需要理解编译过程!总结:事实上C++对函数模板进行了两次编译,第一次编译仅仅生成一个函数头,第二次编译则是在函数调用时根据模板的类型参数列表具体的实现这个模板对应的类型的函数实例,注意这里是根据类型参数列表来实现,而不是根据调用次数。这不是和没有使用模板,直接写两个函数一样么?没错就是一样的,只是C++将这个工作交从程序员手里移交给了编译器来做。

2021-04-05 11:21:44 222

原创 STL初学者入门笔记02函数模板和普通函数的区别

02函数模板和普通函数的区别综述函数模板和普通函数的区别?函数模板和普通函数在一起调用规则:代码示例说明综述函数模板和普通函数的区别? 函数模板不允许自动类型转化 普通函数能够自动进行类型转化函数模板和普通函数在一起调用规则: 函数模板可以想普通函数那样可以被重载 c++编译器优先考虑普通函数 如果函数模板可以产生一个更好的匹配,那么选择模板 可以通过空模板实参列表的语法限定编译器只能通过模板匹配代码示例说明定义函数模板和普通函数template<class T&g

2021-04-04 23:54:41 188

原创 STL初学者入门笔记01模板

stl是c++编程中非常重要的一个内容,之前这方面基础薄弱,后面学习工作中,将时常与stl打交道,所以在这里将stl从基础开始重新学习一遍!01模板概述模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;通常有两种形式:函数模板和类模板;1.函数模板针对仅参数类型不同的函数;2.类模板针对仅数据成员和成员函数类型不同的类。为什么有模板?使用模板的目的就是能够让

2021-04-04 23:34:13 365

原创 WireShark实战笔记之http协议分析

HTTP协议概述超文本传输协议http定义了Web客户端向Web服务器请求Web页面的方式,以及服务器向客户传送web页面的方式。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。在TCP/IP协议栈中的位置HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:默认HTTP的端口号为80,HTTPS的端口号为443。请求响应模型HTTP协议永远都是客户端发起请求,服

2021-04-04 15:28:07 2633

原创 WireShark实战笔记之TCP三次握手

相关TCP三次握手的知识和面试题总结:httpswireshark分析tcp的三次握手实验环境:抓包分析实验步骤相对序列号参考资料:实验环境:windows10wiresahrk抓包分析实验步骤1.打开wireshark,开始过滤;浏览器中访问www.baidu.com。2.过滤出http3.选中其中一条,右键点击选中 追踪流 > tcp流;会得到如下图:可以发现,这时候已经截获到了tcp三次握手的包,三次握手成功后,第四次才是http连接,说明http连接是建立在三次握手基

2021-04-04 13:17:33 2886 3

原创 TCP之为什么是三次握手和四次挥手?面试题总结

三次握手第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTAB

2021-04-04 12:27:28 629

原创 WireShark实战笔记之DNS协议分析

DNS协议分析DNS协议概述DNS工作机理概述dns报文WireSahrk分析DNS协议查看第一个包:查看第四个包(响应包)DNS协议概述DNS协议也可以称为DNS服务,全称是Domain Name System,即域名系统,和HTTP协议一样,也是一个位于应用层的协议(服务),它是基于运输层的UDP协议的。从DNS的名字我们就可以知道,它提供域名映射到IP地址的服务,那么在我们详细说DNS协议之前,先来大致讲讲互联网的域名结构。通常被其他应用层协议所使用,包括http、smtp和ftp等。这里

2021-04-03 23:11:07 15430 1

转载 DNS原理总结及其解析过程详解

DNS原理总结及其解析过程详解1、域名系统概述         域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。         我们都知道,I

2021-04-03 22:25:28 827

原创 wireshark实战笔记之路由跟踪(tracert)

接上篇文章《wireshark实战笔记的ICMP分析》路由跟踪tracert概述路由跟踪原理(tracert)实验实验一 windows下同一个路由器下的路由跟踪(一跳)实验二 Windows下 多跳的路由跟踪如何才算到达了目的地址:概述路由跟踪功能用来识别一个设备到另一个设备的网络路径。在一个简单的网络上,这个网络路径可能只经过一个路由器,甚至一个路由器也不经过。但是在复杂的网络中,数据包可能会经过数十个路由器才会到达最终的目的地。对于网络通信检修来说,确定数据包从一个地方到另一个地方所走的路径是非

2021-04-03 17:15:49 7790

原创 wireshark实战笔记之ICMP分析

wireshark实战笔记之ICMP分析ICMP基础知识概述:ICMP功能ICMP报文格式各字段说明ICMP大概分为两类报文:wireshark实战分析ICMP基础知识概述:ICMP,全称为Internet Control Message Protocol,即为因特网控制报文协议。ICMP既不是网络层协议,也不是传输层协议,但是通常ICMP被认为是IP层的一部分,所以一般把他归为网络层。一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,

2021-04-03 16:32:42 5113

原创 wireshark实战笔记-理解ARP协议

wireshaek实战中理解ARP协议ARP协议概述:MAC 地址 与 IP地址获取目的端的MAC地址(在一个以太网中)步骤如下:ARP协议工作原理wireshark实验观察ARP过程一、ARP表中已有缓存二.arp表为空的情况,目的地址为本网段ARP协议概述:网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口。因此我们需要进行IP地址与物理地址之间的转化。对于IPv4来说,我们使用ARP地址解析协议来完成IP地址与物理地址的转化(IPv6使用邻居发现协议进行IP地

2021-04-02 11:43:40 983

转载 PE文件实战之手动合并节

一丶简介根据上一讲.我们为PE新增了一个节. 并且属性了各个成员中的相互配合. 例如文件头记录节个数.我们新增节就要修改这个个数.那么现在我们要合并一个节.以上一讲我们例子讲解.以前我们讲过PE扩大一个节怎么做. 合并节跟扩大节类似. 只不过一个是扩大. 一个是合并了.合并节的步骤:1.修改文件头节表个数2.修改节表中的属性节.sIzeofRawData 节数据对齐后的大小.3.修改扩展头中PE镜像大小 SizeofImage4.被合并的节以0填充.二丶实战合并一个节1.修改文件头中节

2021-04-01 19:58:35 388

原创 PE文件实战教程之手动实现新增节

前面我们说过在空白节添加代码,想要更多空间的话,可以扩大节,但是在最后一个节进行扩大的话,还需要修改原来节的属性,比较麻烦,所以不如直接新增一个节!并且我们通过手动新增节,可以直观地看到非常多的细节,帮助我们理解原理!手动实现新增节什么是新增一个节?了解一下节表新增节表的步骤1.判断是否有足够的空间增加一个新节.2.节表新增一个成员,在原最后一个成员后面添加3.修改节的数量4 修改sizeOfImage的大小5.再原有数据的最后,新增一个节的数据(内存对齐的整数倍)6 修正新增节表的属性节.Virt.

2021-04-01 19:21:10 1317 3

原创 PE实战教程之扩大节

本篇文章复习扩大节,顾名思义就是将节表的大小扩大,那就要搞清楚俩个问题:1.为什么扩大节?2.如何扩大节?PE实战教程之扩大节为什么扩大节如何扩大节?扩大哪一个节?扩大节的步骤实战环节:为什么扩大节上篇文章进行了空白区添加我们的代码,但是有的时候.我们的空白区不够了怎么办.所以需要进行扩大节。如何扩大节?我们先看节表的结构typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; //8个

2021-04-01 11:22:14 566

原创 PE实战教程之空白节添加代码

想要添加的代码:弹出一个messagebox。如果想要调用messagebox,可以看到下面的代码,就是push 参数,call函数地址。1.寻找OEP所对应的文件偏移位置.首先随便找一个文件,查看扩展头中OEP RVA 以及 ImageBase, 并且换算出属于哪个节.并且转换为文件偏移.OEP的RVA为00012180,imagebase为00400000。那么内存中OEP开始位置就是 RVA +Imagebase == 00012180+ 00400000== 0x00412180。 查

2021-04-01 09:50:35 669 1

原创 一天学会MySQL数据库(18):事务隔离性-串行化

最近在学习数据库,寻找教程中,苦于视频长度几十个小时,没有沉下心去看,发现一个六小时长度的mysql教程,发现还不错,学习并记录学习笔记。资源地址在最下方。本篇文章,作为学习笔记可配套学习!事务隔离性-串行化串行化实操演示视频资源:串行化串行化(Serializable):可解决脏读、不可重复读、幻读问题,通过对表直接加锁的方式,但数据库的读取效率降低。实操演示隔离级别修改成 SERIALIZABLE :SET GLOBAL TRANSACTION ISOLATION LEVEL SERIA

2021-03-28 11:37:30 552

原创 一天学会MySQL数据库(17):事务隔离性-幻读

最近在学习数据库,寻找教程中,苦于视频长度几十个小时,没有沉下心去看,发现一个六小时长度的mysql教程,发现还不错,学习并记录学习笔记。资源地址在最下方。本篇文章,作为学习笔记可配套学习!事务隔离性-幻读幻读实操演示视频资源:幻读幻读就是,比如两个事务都在操作同一个表,A事务先读取了表的行数;而B事务在这个时候为表格新插入了一行数据。A事务再读取表的行数,发现竟多了一行,这就很怪异了,这就是幻读。解决办法是对表进行加锁。实操演示将隔离级别设置为 REPEATABLE READ ( 可被重复读

2021-03-28 11:32:34 89

原创 一天学会MySQL数据库(16):事务隔离性-不可重复读

最近在学习数据库,寻找教程中,苦于视频长度几十个小时,没有沉下心去看,发现一个六小时长度的mysql教程,发现还不错,学习并记录学习笔记。资源地址在最下方。本篇文章,作为学习笔记可配套学习!事务隔离性-不可重复读不可重复读实操演示视频资源:不可重复读不可重复读就是,比如两个事务都在操作同一个表,A事务先读取了C字段的值后继续操作下一个字段;而B事务在这个时候修改了C字段的值。A事务再读取C字段的值,发现同一个事务下,竟然前后两次读取不一样,这就很怪异了,这就是不可重复读。解决办法是对事务进行加锁。

2021-03-28 11:27:49 113 1

原创 一天学会MySQL数据库(15):脏读

最近在学习数据库,寻找教程中,苦于视频长度几十个小时,没有沉下心去看,发现一个六小时长度的mysql教程,发现还不错,学习并记录学习笔记。资源地址在最下方。本篇文章,作为学习笔记可配套学习!脏读脏读:示例视频资源:脏读:脏读就是,比如两个事务都在操作同一个表,A事务修改了C字段的值没有提交该事务;而B事务也在读取C字段的值,就在这时A事务发生了失败回滚,那么C字段的值返回原来的值,所以B事务发生了脏读。整个过程结束,数据库没有发生任何改变,B事务却读到了奇怪的值,这就是脏读。原因是: 读未提交

2021-03-28 11:14:55 151 1

原创 一天学会MySQL数据库(14):事务的ACID特征和使用

最近在学习数据库,寻找教程中,苦于视频长度几十个小时,没有沉下心去看,发现一个六小时长度的mysql教程,发现还不错,学习并记录学习笔记。资源地址在最下方。本篇文章,作为学习笔记可配套学习!事务的ACIDACID事务的隔离性如何查看修改隔离级别视频资源:ACID事务的四大特征:A 原子性:事务是最小的单位,不可以再分割;C 一致性:一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。例如:A和B进行转账操作,A有200块钱,

2021-03-28 10:58:23 122

原创 一天学会MySQL数据库(13):手动开启事务BEGIN / START TRANSACTION

最近在学习数据库,寻找教程中,苦于视频长度几十个小时,没有沉下心去看,发现一个六小时长度的mysql教程,发现还不错,学习并记录学习笔记。资源地址在最下方。本篇文章,作为学习笔记可配套学习!如何手动开启事务事务的默认提交被开启 ( @@AUTOCOMMIT = 1 ) 后,此时就不能使用事务回滚了。但是我们还可以手动开启一个事务处理事件,使其可以发生回滚:-- 使用 BEGIN 或者 START TRANSACTION 手动开启一个事务-- START TRANSACTION;BEGIN;U

2021-03-28 10:42:49 4234

原创 一天学会MySQL数据库(13):事务

最近在学习数据库,寻找教程中,苦于视频长度几十个小时,没有沉下心去看,发现一个六小时长度的mysql教程,发现还不错,学习并记录学习笔记。资源地址在最下方。本篇文章,作为学习笔记可配套学习!事务作用:如何控制事务 - COMMIT / ROLLBACK自动提交的作用:手动提交总结事务的实际应用视频资源:作用:在 MySQL 中,事务其实是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性。通俗来说:就是要么全部完成,要么全不完成!例如:比如我们的银行转账:-- a -> -1

2021-03-28 00:13:29 104

熊猫烧香分析报告.pdf

小白学分析,找了一个比较经典和简单的病毒进行学习,将报告分享出来。 “熊猫烧香”虽然是一个很老的病毒,并且里面的手段也比较简单,但是对于初学者像我这样的小白来说,还是挺适合练手的,毕竟也是一个名气很大的传统病毒。

2020-05-06

Ring3_Inline_Hook.zip

Ring3层下的Inline Hook是最常用的Hook手段之一,是一种通过修改机器码的方式来实现hook的技术。 1、构造跳转指令。 2、在内存中找到欲HOOK函数地址,并保存欲HOOK位置处的前5个字节。(但其实并不一定就是5个字节,像是MessageBox就是6个字节) 3、将构造的跳转指令写入需HOOK的位置处。 4、当被HOOK位置被执行时会转到我们的流程执行。 5、如果要执行原来的流程,那么恢复HOOK,也就是还原被修改的字节。 6、执行函数原来的流程。

2020-05-02

TLS(线程局部存储).zip

《Windows PE权威指南》TLS学习代码 实现TLS表定位,枚举; 实现动态线程存储 实现静态线程存储 可与《PE文件:TLS线程局部存储》配套使用 https://blog.csdn.net/weixin_43742894/article/details/105235426

2020-04-02

延迟导入表w.zip

《WindowsPE权威指南》学习笔记 延迟导入表测试相关代码。 代码包括dll实现,测试用例。 定位延迟导入表、枚举延迟导入表、

2020-04-01

空空如也

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

TA关注的人

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