自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PE文件格式粗浅认识

前言:最近开始学习PE文件格式,写点笔记做点记录,希望能够对和我一样正在学习PE文件的小伙伴有些启发,生出很棒的点子 ,当然,下面这些只是我这个初学者的一些简单的认识,针对和我一样的初学者,dalao可以绕道,另外,如果大家可以指出我的错误,我当感激不尽!1.PE文件格式图总览2.PE文件格式介绍PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有EX...

2020-01-27 19:53:08 920

原创 句柄(handle)和文件标识符(PID)

今天有朋友问到,什么是句柄,什么是handle,什么是进程标识符,什么又是PID?其实句柄就是handle,而进程标识符就是PID,那么句柄和标识符又分别是什么?他们之间又有何联系?句柄的声明 typedef void *HANDLE它句柄的本质就是一个指针,但是它的作用又不同于指针,它又不是真正意义上的指针,或者说说句柄是一个受限的指针。给你一个指针,你可以拿这个指针做几乎任何事情,给你一个句柄,你只能干一些Windows允许你干的事情。我们知道Windows是一个以虚拟内存为基础的操作系统。

2020-11-12 12:25:07 1602

原创 buucft reverse CrackRTF

首先拿到文件,查壳,确认无壳。ida打开查看主函数。可以看到函数是由两部分组成,也就是我们需要输入两次密码,并且两次密码都是6位,否则退出。我们分析第一次,输入的6位密码与@DBApp连接,然后由sub_40100A函数进行加密处理,最后与字符串6E32D0943418C2C33385BC35A1470250DD8923A9比较,如果相等,就验证通过,输入第二次密码。进入sub_40100A函数进行分析。发现这些是hash的加密函数,0x8004u是标识码,而不同的标识码意味着不同的加密方式。这.

2020-08-26 14:15:36 316

原创 STL常用的一些算法

查找算法find ------------------------查找find_if --------------------按条件查找count -----------------------统计元素个数count_if ------------------按条件统计元素个数adjacent_find -----------查找相邻重复元素binary_sea

2020-07-31 19:39:44 278 1

原创 虚函数和纯虚函数的用法和区别

学习C++的多态,必然听说过虚函数和纯虚函数。要学习虚函数和纯虚函数,首先我们要搞清楚它的语法规范。总结一下无非下面几点:在类成员方法的声明(注意不是定义)前面加个virtual,该函数就变为虚函数,在虚函数声明语句后面加个=0,虚函数就变为纯虚函数。当类中有了纯虚函数,这个类也称为抽象类子类可以重新定义基类的虚函数,我们把这个行为称之为复写(override)。子类可自主选择是否要提供一份属于自己的个性化虚函数实现,但是必须提供一份属于自己的个性化纯虚函数实现。虚函数和纯虚函数出现的意义何

2020-07-28 16:04:41 613

原创 C++的sting类用法总结

string是C++风格的字符串,它不同于char*。char是一个指针,而string的本质其实是一个类,它的内部封装了char来管理这个字符串,是一个char*型的容器。构造函数原型:string(); //创建一个空字符串string(const char* s); //使用字符串s初始化string(const string& str); //一个string对象初始化另一个string对象string(int n, char m

2020-07-24 20:11:14 662

原创 C++set/multiset容器的理解

写在前面:set/multiset属于关联式容器,底层结构是用二叉树实现。set/multise容器当中的所有元素都会在插入时自动被排序。set不允许容器中有重复的元素multiset允许容器中有重复的元素关联容器就是通过键(key)来读取和修改元素。不同于map关联容器,它只是单纯键的集合。构造函数set<T> st; //默认构造函数:set(const set &st); //拷贝构造函数赋值操

2020-07-06 22:02:12 200

原创 C++一个超好用的容器,List容器

写在前面:链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。链表由一系列结点组成。结点由存储数据元素的数据域,和存储下一个结点地址的指针域组成。STL当中的list容器是个双向链表,支持前移和后移,属于双向迭代器。构造函数list构造方式和vector,deque容器差不多。list<T> lst; //list采用采用模板类实现,对象的默认构造形式:list(beg()

2020-07-06 18:46:57 243

原创 C++deque容器的理解

deque容器(发音类似"deck"),一种动态数组,允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。deque与vector相似,但deque在头部和尾部进行数据插入和删除操作更加高效。vector与deque相似,但内部的实现原理不同:vector使用了动态数组,该数组通常需要动态增长;deque中的元素在不同的缓冲区中,在deque中保存了一些必要的信息(地址)。除了频繁在头部或尾部进行插入和删除的操作外,deque容器的效率不高。内部工作原理:deque内部有个中控器

2020-07-06 11:30:46 200

原创 来自初学者的vector容器总结 C/C++

vector 常被称为向量容器,是 STL 中最常用的容器之一,vector容器简单的说:vector是一个能够存放任意类型的动态单端数组,能够增加和压缩数据。使用vector容器必须包含**< vector >头文件:#include< vector >;**vector属于std命名域的内容,因此需要通过命名限定:using std::vector;也可以直接使用全局的命名空间方式:using namespace std;vector类常用的函数构造函数vector

2020-06-24 11:35:30 398

原创 初识STL

由来大多是情况下,由于数据结构和算法未能有一套标准,导致被迫从事大量重复工作,软件界想要建立一套可重复利用的东西,于是诞生STL(Standard Template Library,标准模板库)。STL 几乎所有的代码都采用了模板类或者模板函数。也就是说,别人把方法都封装好了,只需要调用便可。六大件STL从广义上分:容器(container) 算法(algorithm) 迭代器(iterator)。 容器和算法之间通过迭代器进行无缝连接。STL从狭义上看:又有六大组件,分别是:容器、算法、迭代器

2020-06-20 17:27:29 160

原创 从一个初学者的角度来理解总结C++模板

前言:我们知道,C++除了有面向对象的编程思想以外,还具有泛型编程的思想。C++是一门强类型语言,所以无法做到像如python一样的一些动态语言那样:编写出一段通用的逻辑,然后把任意类型的变量传入进行处理。但是泛型编程的出现,正好弥补了C++的这一缺陷。我们用模板这样一种技术实现泛型编程。模板的概念正如字面意思,C++当中的模板就是建立通用的模具,大大提高复用性。和平时在网上下载的PPT模板差不多,就是个框架。模板更准确点的说法其实是,一种对类型进行参数化的工具。C++的STL容器,及其迭代器和算

2020-06-16 20:54:03 160

原创 C++的运算符重载,浅显易懂

C++预定义中的运算符只能对基本的内置数据类型进行操作,但是对于我们自定义的类型是没有办法操作的,我们对这么运算符重新定义,才能对我们自己定义的数据类型进行操作。对于运算符重载,它的实质其实是函数重载或者说,函数多态。重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。运算符重载函数的格式:<返回类型说明符> operator &l...

2020-06-10 13:38:28 205

原创 列举那些最常用的vim指令

Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器(类似于Windows下的notepad,但是我并没有看出notepad有多强大?),在Vi的基础上改进和增加了很多特性。vim的几种模式首先我们需要知道的是,vim有几种模式,正是由于这几种模式配合那些命令使用,vim变得无比强大与灵活。下面是vim的几种模式。一般模式:可以使用快捷键命令,或按:输入命令行。输入模式:可以输...

2020-04-27 18:07:09 239

原创 C++常见的一个坑,一个经典的面试考题:深拷贝和浅拷贝问题

我们知道,对一个已知对象进行拷贝,编译系统会自动调用拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。我们先来看一个测试案例:#include <iostream>#include <string>using namespace std;class Student{public: Student() { cout << ...

2020-04-20 11:40:55 592

原创 Linux系统信息相关命令

4.1 日期和时间命令含义date查看当前时间calcalendar,查看日历,-y查看一年的日历4.2 磁盘信息命令含义df -hdisk free,查看磁盘剩余空间du -h [目录名]disk usage显示目录下文件大小参数 -h就是以人性化的方式显示及大小...

2020-04-06 10:42:37 123

原创 Linux用户和用户组一些命令的简单介绍

我们知道Linux系统是一个多用户多任务的分时操作系统,这就意味着我们要想使用系统资源,我们就必须先向管理员申请一个账号。每个用户账号都拥有一个唯一的用户名和各自的口令。既然是多用户,那系统肯定就有一个管理用户方式,这个就是用户组。Linux系统用户组的管理3.1 groupadd命令格式:groupadd 选项 用户组意义:增加一个新的用户组可以使用的选项有:参数含义...

2020-04-04 12:18:39 224

原创 Linux远程管理命令

2.1 shutdown命令格式:shutdown [OPTION][TIME]意义:关机/重启参数:-r 表示重启示例:写法含义shutdown -r now现在重启shutdown一分钟后关机shutdown +10十分钟后关机shutdown 20:5120:51关机2.2 ifgonfig意义:查看/配置计算机当前的配置信息...

2020-04-03 09:43:23 200

原创 Linux常用文件指令

文章目录1.1 cd1.2 rm1.3 ls1.4 mkdir1.5 cp1.6 cat1.7 tree1.8 pwd1.9 mv1.10 kill1.11 touch1.12 more1.13 grep1.14 echo~表示home目录. 表示当前目录1.1 cd命令格式:cd <路径>意义:cd是单词change directory 的缩写;cd命令后面跟一个路径,...

2020-04-01 09:42:58 199

原创 函数指针??指针函数??傻傻分不清。

在学习C语言的时候,指针是非常让人头疼的,由指针延申出来的函数指针,指针函数,函数指针函数,指针函数指针,数组指针,指针数组等等更是让人难以理解,本文呢,就区分一下函数指针和指针函数的区别及其用法。函数指针定义函数指针本质上是指针,我们所写函数代码在内存中会被分配一段专门的储存空间,这段储存空间的地址就是函数的地址,既然是地址,就可以用指针去表示,自然就有了函数指针。声明格式:类型说明符 ...

2020-03-30 09:51:00 133

原创 UPack调试笔记

文章目录解码函数解密函数重建IAT表OPE前言:之前我们有说到,upack压缩过后的文件的文件头部发生了变化,同时正常文件的第一,第三节区也被压缩到了notepad的第二个节区(第一,第三节区的部分空间已经映射了文件的头部)像麻花一样。我们知道正常的PE文件,文件的第一节区应该是代码段,第二节区是数据段。upack压缩后的数据挤在第二节区,UPack解码需要将该节区的部分数据解密到第一节区。...

2020-02-23 00:50:02 443

原创 UPack文件分析学习笔记

前言:UPack是一款对PE文件头进行变形的运行时压缩器。由于它独特的压缩方式,使得很多人刚开始分析时一头雾水,无从下手,因为它颠覆了很多人对PE头传统的理解,导致很多人刚开始看到经过它压缩的文件时都认为这些文件或许不能运行,但是事实上是可以的。虽说UPack对PE头进行了变形操作,但是我们仍然能从一些蛛丝马迹当中发现其原理。UPack压缩notepad我们使用upack 0.39.exe对w...

2020-02-17 16:56:52 1650

原创 基址重定位

基址重定位概念当向程序的虚拟内存加载PE文件时,文件会被加载到ImageBase所指向的地址。对EXE文件来说,EXE文件会首先加载到内存,每个文件总是使用独立的虚拟地址空间,这就意味着EXE文件不用考虑基址重定位问题;对于DLL文件来说,多个DLL文件使用调用其本身的EXE文件的地址空间,不能保证ImageBase所指向的地址没有被其他DLL文件占用,所以DLL文件当中必须包含重定位信息,...

2020-02-06 19:21:46 1527

原创 Windows编程(3)

前言:我们之前编写了我们的第一个Windows程序,但是那仅仅是个弹窗,并非真正意义上的Windows窗口,弹窗只需要调用MessageBox函数就可以实现,而一个真正意义上的Windows窗口应该具有最大化、最小化、关闭按钮,也包含菜单、单选框等各种控件。也就是之前那个弹窗仅仅是个不完整的Windows程序。接下来我们看看一个完整的Windows程序是怎样的。一个完整的Windows程序框架...

2020-02-05 22:03:59 564

原创 Windows编程(2)

windows有关的重要概念句柄在学习Windows编程的过程当中,相信很多人都听说过“句柄”这个词语吧,相比好多人还是不清楚具体怎么回事儿。接下来我简单介绍一下。所谓“句柄(HANDLE)”;不过就是在Windows编程中,不同窗口、控件、图像等对应的一个唯一的数字,可以理解为ID吧。程序通过句柄获取对应资源的各种信息,修改,删除资源。句柄里面有很多细节,程序员不需要了解背后的机制。比如说...

2020-02-02 19:50:06 201

原创 Unicode编码与ASCII编码

众所周知,计算机是以二进制的形式存储数据的,它只认识由0和1组成的机器码而我们使用的编程语言不管是C语言也好Python也好,都是会转换成汇编语言,再转换成机器码,计算机才能识别。那么,文字与二进制之间有着怎样的对应关系呢?这之间的转换又有怎样的规范呢?ASCII码由于计算机诞生于美国,而早期的计算机使用者大多使用英文,上世纪60年代,美国制定了一套英文字符与二进制位的对应关系,称为ASCII...

2020-02-02 18:06:30 1097

原创 菜鸟逆向实战植物大战僵尸(1)

1.基址我们通过改变阳光的值用ce将阳光修改过后,然后关闭游戏,当我们下次再打开想要修改阳关的值,这时候ce后面就是???也就是说这个曾经管阳光的地址不再管阳光,而是管着其他的值。因为每次程序加载的地址不同,所以我们需要找到基址才行。也就是不管程序如何加载,这个指针都能指向阳光的地址。那么如何找呢?首先,可以肯定的是,阳光肯定是个全局变量。我们可以猜测一个结构体管理着阳光,所以我们需要找到这...

2020-02-01 15:03:22 1849 2

原创 Windows编程(1)

前言:学习C语言很久了,一直在跟黑乎乎的屏幕打交道,像QQ、微信、爱奇艺等等这样的软件都是带界面的,为什么我学习的C语言不能写出这种程序呢?我曾一度怀疑C语言的作用。其实使用C语言可以开发出Windows应用程序,只是大部分C语言教程没有讲,它们只讲了基本语法,让很多初学者认为学C语言没用,什么都做不出来。这个黑乎乎的屏幕叫做控制台应用程序,我们入门学习的C语言写出来的程序都是控制台应用程序,...

2020-02-01 14:22:05 393

原创 攻防世界re 新手区wp

攻防世界re 新手区wp这个几天没有之前忙了,现在有时间整理一下之前做的攻防世界新手区的题目,记录一下学习过程,也复习一下https://adworld.xctf.org.cn/re1方法一:下载附件,die查壳,无壳,载入ida查看简单的明文比较,将比较过后的结果赋给v5,v5就是flag查看上面两个字符串一串数字按r转换为字符串如上,然后写出脚本即可得到flagDUTCTF{...

2019-12-25 00:22:20 1116

空空如也

空空如也

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

TA关注的人

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