- 博客(40)
- 收藏
- 关注
原创 新手的恶意代码分析记录(一)_Lab01-01
一、基本信息样本基本信息:样本名称:Lab01-01.dll样本大小:163840 bytesMD5:290934C61DE9176AD682FFDD65F0A669样本名称:Lab01-01.exe样本大小:16384 bytesMD5:5A016FACBCB77E2009A01EA5C67B39AF209C3FCB使用cff_Explorer 查看样本基本信息使用查壳工具die查看,可以看出来,两个程序并没有加壳,并且是使用VC6.0编写的。查看 Lab01-01.dll 程
2021-08-18 14:57:12 1549 2
原创 关于汇编的那些事
关于汇编的那些事$ 和 $$地址只是数字,描述各种符号在源程序中的位置,他是源代码文件中各符号偏移文件开头的距离编译器给程序中各符号(变量名或者函数名等)分配的地址,就是各符号相对于文件开头的偏移量**$ 和 $$**是编译器NASM预留的关键字,用来表示当前行和本section的地址,起到了标号的作用,他是NASM提供的,并不是CPU原生支持的,相当于伪指令一样,对CPU来说是假的,默认情况下,它们的值相对于本文件开头的偏移量伪指令是相对于CPU可识别的指令来说的,它只是编译器定义的,CPU中并
2020-10-11 19:52:38 428
原创 隔壁弟弟十篇博客node入门而且写了个前后端分离项目,我怎么还在打游戏?—1篇博客教你搞定Mysql数据库
前言参考书籍: Mysql 必知必会友情链接:臭弟弟的十篇博客数据库和Mysql基本概念数据库数据库是一个以某种有组织的方式存储的数据集合表表是一种结构化的文件,可用来存储某种特定数据类型的数据数据库中的每个表都有一个名字,用来标识自己。这个名字是唯一的。模式模式可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)列和数据类型表由列组成。列中存储着表中某部分的信息...
2020-04-01 15:29:12 480 1
原创 C++(STL)学习(二)—string容器
基本概念string类,定义在头文件<string>中String和C风格字符串相比:Char *是一个指针,String是一个类String封装了char* ,管理这个字符串,是个 char*类型的容器String封装了很多使用的成员方法查找、拷贝、删除、替换、插入不用考虑内存释放和越界String管理Char*所分配的内存,每一次string的复制,取值都由str...
2020-03-22 21:02:24 177
原创 C++(STL)学习(一)
基本概念STL(标准模板库)STL从广义上分为:容器、算法、迭代器,容器和算法之间通过迭代器进行无缝链接。STL六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器容器:各种数据结构(类模板)算法:各种常用的算法(函数模板)迭代器:所有的容器都有自己的迭代器容器序列式容器关联式容器算法质变算法:运算过程中改变区间内的元素的内容,例如拷贝,替换,删除等非质变算法:运算过程...
2020-03-21 20:46:40 149
原创 Windows10下利用VS2017搭建x86或64汇编语言环境
所需工具VS2017详细步骤运行VS2017选择文件新建项目这里我们新建一个c++空项目然后我们选择新建源文件,注意。这里我们要将文件的后缀名改为.asm我们右击解决方案选择生成依赖项,然后选择生成自定义我们勾选masm.,点击确定我们右击创建好的.asm源文件,选择属性,选择如图所示的选项,点击确定修改好这些还没完,我们还需要修改项目配置哦选择配置属性-&...
2020-03-18 13:22:09 1135 2
原创 汇编语言复习(三)
汇编语言基础定义数据汇编器识别一组基本的内部数据类型,按照数据大小(字节,字,双字等等)、是否有符号、是整数还是实数来描述其类型。数据定义语句数据定义语句在内存中为变量留出存储空间,并赋予一个可选的名字。数据定义语句根据内部数据类型定义变量下面举一个简单的例子:count DWORD 12345**名字:**分配给变量的可选名字必须遵守标识符规范**伪指令:**数据定义语句中的...
2020-03-15 19:59:31 778
原创 汇编语言复习(二)
汇编语言基础基本语言元素整数常量整数常量(又称为整形常量)由一个可选前置符号、一个或多个数字、以及一个指明其基数的可选基数字符构成 : [ { + | - } ] digite [ radix]注意: 以字母开头的十六进制数必须加个前置0,以防汇编器将其解释为标识符整形常量表达式整形常量表达式是一种算术表达式,它包含了整数常量和算术运算符。每个表达式的计算结果必须是个整数...
2020-03-14 16:52:43 447
原创 C++学习(十八)—模板(二)
模板机制编译器并不是把函数模板处理成能够处理任何类型的函数函数模板通过具体类型产生不同的函数(产生了模板函数)编译器会对函数模板进行两次编译,在声明的地方对模板代码本身进行编译,在调用的地方对参数替换后的代码进行编译。模板的局限性模板并不是真正的通用的代码,对于一些自定义数据类型,模板有时候不能实现效果可以通过具体化实现对自定义数据类型进行操作。#include<iostr...
2020-03-13 20:54:39 124
原创 汇编语言复习(一)
基本概念机器语言机器语言: 机器语言是一种数字语言,专门设计成能够被计算机处理器(Cpu)理解。汇编语言汇编语言: 包含用助记符书写的语句,汇编语言不是可移植的可移植性: 一种语言,如果它的源程序能够在各种各样的计算机系统中进行编译和运行,那么这种语言是被称为可移植得 。汇编语言和机器语言是一对一的关系:每一条汇编语言指令对应一条机器语言指令汇编语言的规则: 大多数汇编语言规则都是以...
2020-03-11 17:47:11 1944
原创 C++学习(十七)—模板(一)
函数模板基本用法函数模板template 告诉编译器T是万能数据类型,下面紧跟着的函数或者类中出现T类型,不要报错调用模板函数自动类型推导 必须让编译器推导出一致T类型才可以使用模板显式指定类型 显式的告诉编译器T的类型模板必须要指出T的类型,才可以使用#include<iostream>using namespace std;void myswapInt(...
2020-03-10 21:05:41 165
原创 C++学习(十六)—多态(二)
多态的好处多态的好处扩展性提高 组织性强 可读性强如果父类中有了虚函数,子类并没有重写父类的虚函数,那麽这样的代码是毫无意义的如果子类不重写父类虚函数,那麽没有用到多态带来的好处,而且内部结构还变得更为复杂#include<iostream>using namespace std;class calculator{public: int getResul...
2020-03-09 23:35:21 134
原创 C++学习(十五)—多态(一)
多态多态分类静态多态:运算符重载 函数重载动态多态:父子之间继承 + 虚函数动态多态满足的条件父类中有虚函数子类重写父类的虚函数父类的指针或者引用指向子类的对象注意:子类重新实现父类中的虚函数,必须返回值、函数名、参数一致才称为重写 子类在做重写的时候,可以不加关键字virtual多态原理当父类中存在虚函数后,内部发生结构变化多了指针 vfptr 虚函数表指针—指向...
2020-03-09 18:13:54 151
原创 C++学习(十四)—继承(二)
多继承class子类:继承方式 父类1,继承方式 父类2当两个或多个父类中,有同名的成员 被子类继承后,调用时候需要加作用域进行#include<iostream>using namespace std;class Base1{public: Base1() { this->m_a = 10; } int m_a;};class Base2{...
2020-03-08 11:55:24 184
原创 C++学习(十三)—继承(一)
继承的基本语法语法:class子类:继承方式 父类父亲:基类子类:派生类继承的作用:可以将少重复代码的出现继承方式公共继承父类中 public到子类中 public父类中protected 到子类中 protectded父类中private到子类中 访问不到保护继承父类中 public到子类中 protectded父类中protected 到子类中 protec...
2020-03-07 09:48:43 165
原创 C++练习(二)—案例(二)
字符串封装MyString.h#pragma once#include<iostream>using namespace std;class MyString{public: friend ostream & operator<<(ostream &cout, const MyString &str); friend istrea...
2020-03-05 21:03:15 211
原创 C++学习(十二)—运算符重载(二)
智能指针用途:用来托管堆区创建的对象的释放#include<iostream>using namespace std;class Person{public: Person(int age) { this->m_age = age; cout << "Person的有参函数构造" << endl; } void showag...
2020-03-04 17:52:57 159
原创 C++学习(十一)—运算符重载(一)
加号运算符重载对于内置数据类型,编译器知道如何进行运算但是对于自定义数据类型,编译器并不知道该如何运算利用运算符重载可以解决这个问题注意:运算符重载也可以发生函数重载#include<iostream>using namespace std;// 加号运算符重载class Person{public: Person() {}; Person(int a, ...
2020-03-03 21:27:04 169
原创 C++练习(一)—案例(一)
数组类的封装Myarray.h#pragma once#include<iostream>using namespace std;class My_Array{public: // 默认构造函数 My_Array(); // 有参构造函数 My_Array(int capacity); // 拷贝构造函数 My_Array(const My_Ar...
2020-03-02 21:41:22 304
原创 计算机组成原理(一)—计算机系统概论(二)
计算机系统概论(二)—计算机软硬件系统组成和计算机系统层次结构1.3 计算机硬件系统1.3.1 冯诺依曼体系结构冯诺依曼体系结构计算机的基本设计思想是存储程序和程序控制特点由运算器、控制器、存储器、输入设备和输出设备五大部件组成计算机硬件系统。采用存储程序的方式,程序和数据放在存储器中...
2020-03-01 19:51:26 440
原创 C++学习(十)—类和对象(五)
类的大小#include<iostream>#pragma pack(show) // 对齐模式using namespace std;class Person{public: int a; // 成员属性 算在类的大小中 // 成员函数 并不算在类的大小中 void f() { } static int b; // 静态成员变量 ...
2020-03-01 14:45:02 135
原创 C++学习(九)—类和对象(四)
new和delete运算符#include<iostream>using namespace std;// malloc 和 new区别// new和delete是一个运算符 malloc和free是一个库函数// malloc 返回值是 void * new返回的是new出来的对象的指针// malloc 需要判断是否开辟成功 而new内部做好了操作(...
2020-02-29 21:53:17 221 1
原创 C++学习(八)—类和对象(三)
浅拷贝与深拷贝#include<iostream>#include<string>using namespace std;// 系统提供的拷贝函数,只会做简单的值拷贝// 如果类中有属性开辟到堆区,那么在释放的时候,由于浅拷贝问题导致堆区内容会重复释放程序down掉 利用深拷贝 解决浅拷贝带来的问题class Persion{public:...
2020-02-28 14:11:41 120
原创 C++学习(七)—类和对象(二)
构造函数和析构函数#include<iostream>using namespace std;class MYclass{public: // 1、构造函数的写法 // 没有返回值 也不写void 函数名与类名相同 // 由编译器自动调用 不需要手动调用;而且编译器只会调用一次 MYclass() { cout << "MYclas...
2020-02-27 22:41:49 119
原创 C++学习(六)—类和对象(一)
类的封装#include<iostream>using namespace std;class Persion{public: char p_name[20]; int p_age; void PersonEat() { cout << p_name << "在吃饭" << endl; }private: // 私有...
2020-02-26 19:35:54 147
原创 C++学习(五)—函数(二)
函数重载#include<iostream>using namespace std;// 函数重载 // 满足函数重载条件// 1、作用域必须相同// /*class Teacher{ void f() {}; 成员函数,不能作为重载的条件};*/// 2、函数名称要相同// 3、函数参数类型不同或者个数不同或着顺序不同void f(){...
2020-02-26 14:11:16 92
原创 C++学习(四)—函数(一)
宏函数和内联函数#include<iostream>using namespace std;#define MYADD(x,y) ((x)+(y))// 缺陷1:为了保证运算的完整性,需要加小括号修饰void test01(){ int a = 10; int b = 20; // int c = MYADD(a, b)*20; // cout <&...
2020-02-25 21:54:37 278 1
原创 C++学习(三)—基础(三)
引用引用基础#include<iostream>using namespace std;/* 1、引用的基本语法 引用:给一段内存空间起别名 语法:类型 & 别名 = 原名 */void test1(){ int a = 10; int &b = a; b = 20; cout << "a = " << a &...
2020-02-24 10:08:28 114
原创 微型计算机原理(一)—微型计算机系统导论
写在前面的话,这学期开设了微型计算机原理这门课,这门课里面的知识在大一大二这段时间学习逆向的时候有的都接触过,这次在学习的同时也就当复习吧。重点是把原来不会的弄会,原来不清楚的搞清楚微型计算机系统导论计算机的发展历史第一代1946~1957电子管计算机第二代1958~1964晶体管计算机第三代1965~1971集成电路计算机第四代1972~1990...
2020-02-23 18:06:41 494
原创 C++学习(二)——基础(二)
C++对C语言的增强以下面的代码最为例子C语言:#include<stdio.h>#include<stdlib.h>#include<string.h>/* 1、全局变量检测增强 在C语言中,这段代码是可以编译通过的int a;int a = 10 *//* 2、函数检测增强 在C语言中,这段代码是可以编译通过的f(a, b){ ...
2020-02-23 14:41:15 609
原创 C++学习(一)——基础(一)
上一周把C语言简单的复习了一下子,收获还是蛮大的,但C语言中还有许多问题,希望在以后的练习中能够得到强化,从这周就开始了对C++语言的学习。一、概述1、C++简介1.C++语言可以认为是对C语言的扩展,因此C++可以说是C语言的超集,这意味着任何有效的C语言程序都是C++程序。C++程序可以使用原有的C语言库。2.C++语言在C语言的基础上添加了面向对象编程和泛型编程的支持。C++语言继承...
2020-02-23 00:52:12 172
原创 计算机组成原理(一)——计算机系统概论(一)
写在前面的话因为疫情比较严重,所以从下周一开始我们就要进行网上授课,这学期开的几门计算机专业基础课都是比较重要的,所以,以后会把这几门课的重点与难点记录在这里,供自己学习,也方便以后复习。计算机系统概论1.1 计算机的分类和应用1.1.1 计算机的分类电子计算机从总体上分为两大类:电子模拟计算机: 数值由连续量来表示,运算过程也是连续的电子数字计算机: 按位运算,并且不连续地跳动计算...
2020-02-22 14:08:36 905
原创 C语言复习(八)——文件
首先看一下一些简单的概念概念文件的分类按文件的逻辑结构:记录文件:由具有一定结构的记录组成(定长和不定长)。流式文件:由一个个字符(字节)数据顺序组成。按存储介质:普通文件:存储介质文件(磁盘、磁带等)。设备文件:非存储介质(键盘、显示器、打印机等)。按数据的组织形式:文本文件: ASCII文件,每个字节存放一个字符的ASCII码。二进制文件:数据按其在内存中的存储形式原样...
2020-02-21 20:45:47 303
原创 C语言复习(七)——结构体
这一篇博客主要总结结构体相关的知识点,简单的基础知识这里就不再赘述了,这里说几下结构体中需要注意的问题。基础接下来看下这段代码#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct teacher{ char name[30]; int age;}Teacher...
2020-02-20 20:30:26 674
原创 C语言复习(六)——数组
概念从元素类型的角度看,数组是相同类型的变量的有序集合;从内存的角度看,数组是连续的一大片内存空间初始化数组的初始化比较简单,这里就不详细赘述了,现在就总结几个注意点。注意数组首元素的地址和数组地址是两个不同的概念。数组名代表数组首元素的地址,它是一个常量。数组首元素的地址和数组的地址是相等的。C语言规定int a[10];printf("%d",a);//获取数组首元素的地...
2020-02-19 14:56:38 171
原创 C语言复习(五)——多级指针与多维数组
上一篇博客总结了一级指针与字符串,这篇博客主要总结多级指针与多维数组的重点与难点。二级指针二级指针的基础在这里就不再赘述了,二级指针,顾名思义,它就是一个指向指针的指针,它的指向是一个指针。主要简单的总结一下二级指针的用法。指针的输入输出特性前面简单的介绍过,当指针所指向的内存空间是在主调函数中分配好的,那么指针就做输入,当指针所指向的内存空间是在被调函数中分配好德,那么指针就做输出。接下来...
2020-02-18 18:15:04 594 1
原创 C语言复习(四)——一级指针与字符串
上一篇博客主要总结了指针概念,以及相关的基础知识,接下来主要要总结一下一级指针与字符串之间的关系,说到字符串,就会想到字符数组,在C语言中,是没有字符串这个数据类型的,所以,首先总结一下字符串与字符数组之间的关系。字符串与字符数组C语言中是不存在字符串这个数据类型的,在C语言中使用字符数组来模拟字符串。字符串:用双引号括起来的任意字符序列。字符数组:存放字符的数组。对于一个字符串,它必须...
2020-02-17 17:37:59 1691
原创 C语言复习(三)——指针(一)
指针在C语言中是比较重要的,个人认为,C语言中最重要的是内存,如何操作内存是至关重要的,指针是C语言的精华,学好了指针才可以说C语言入了门。接下来认真总结一下C语言中指针的用法。指针基础1、指针是一种数据类型数据类型的本质是固定大小内存块的别名,指针毫无例外,指针也是占有内存空间的,在32位机器中,指针是占4个字节的,指针存储的是一个地址,通过这个地址可以访问到一段内存空间。#includ...
2020-02-16 23:37:03 443
原创 用计算机底层的逻辑看待C语言中的函数调用
上一篇博客对栈没有进行一个详细的介绍,是因为对一个函数的调用与栈有着紧密的联系,加之在学逆向的时候对栈有过详细的接触,所以今天就把栈和函数放在一起做一个详细的总结。栈首先说一下数据结构中的栈和内存中的栈这两者之间的区别。数据结构中的栈栈作为一种数据结构,它是一种操作受限的线性表,它只允许在表的一端进行插入与删除操作,它按照先入后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需...
2020-02-16 15:07:10 471
原创 C语言复习(一)——程序内存
因为寒假空闲时间少,加之今年疫情比较严重,所以就有时间把C语言重点与难点复习一遍。数据类型概念类型是对数据的抽象。类型相同的数据具有相同的表示形式、存储格式以及相关的操作。程序中使用的数据类型必定属于某一种数据类型。如下图示这张图片展示了C语言中的数据类型。数据类型的本质:固定大小内存块的别名。数据类型的作用:编译器预先为变量分配的内存大小。数据类型的大小:sizeof...
2020-02-15 16:44:55 1836
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人