自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 SySeVR: A Framework for Using Deep Learning to Detect Software Vulnerabilities(翻译)

深度学习框架检测软件漏洞——翻译记录深度学习不需要人类专家定义特征本文首先提出框架SySeVR——基于语法Syntax-based、基于语义Semantics-based和向量表示Vector Representations,侧重于获得能够容纳与漏洞相关的语法和语义信息的程序表示。基于源代码的静态分析是检测漏洞的很重要方法包括基于代码相似性:主要检测代码克隆引起的漏洞和基于模式的方法:人类专家定义特征深度学习包括:递归神经网络RNN,卷积神经网络CNN深度置信网络DBN(主要应用于图

2020-12-28 17:02:07 2042 1

原创 Runtime Intrusion Prevention Evaluator运行时入侵防御检测

RIPE包含850种缓冲区溢出 的攻击形式ProPolice(栈保护stack-smashing)未命中60%,LibSafePlus+BIED(缓冲区溢出检测)未命中23%,CRED未命中21%,Ubuntu 9.10不可执行内存和堆栈保护未命中11%虽然对于缓冲区溢出攻击有具体的性能测试基准SPEC,但没有标准的方法来测试和比较这些对策的覆盖范围。RIPE目的:执行广泛的缓冲区溢出攻击,记录其成功或失败,来量化给定防御措施的保护范围。850=4个缓冲区溢出位置*16个目标代码

2020-10-31 12:09:44 312 1

原创 python--4

多任务的实现有3种方式:多进程模式; 多线程模式; 多进程+多线程模式。同时执行多个任务通常各个任务之间并不是没有关联的,而是需要相互通信和协调,有时,任务1必须暂停等待任务2完成后才能继续执行,有时,任务3和任务4又不能同时执行,所以,多进程和多线程的程序的复杂度要远远高于我们前面写的单进程单线程的程序Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一

2020-09-25 16:26:50 355

原创 python面向对象

面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。class Student(object): def __init__(self, name, score): self.name = name self.score = score def print_score(self): print('%s: %s' % (self.na

2020-09-25 15:58:23 102

原创 python--3

在Python中,一个.py文件就称之为一个模块(Module)。如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。选择一个顶层包名,比如mycompany,按照如下目录存放:mycompany├─ __init__.py├─ abc.py└─ xyz.py引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py模块的名字就变成了mycompany.abc,类似的,xyz.py

2020-09-25 14:58:27 266

原创 python--2

函数就是最基本的一种代码抽象的方式。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。Python提供了切片(Slice)操作符,能大大简化这种操作。对应上面的问题,取前3个元素,用一行代码就可以完成切片:>>> L[0:3]['Michael', 'Sarah', 'Tracy']dict就可以迭代:>>> d = {'a': 1, 'b': 2, 'c': 3}>>> for key in d:.

2020-09-25 14:47:25 271

原创 PYthon学习

输入name = input('please enter your name: ')print('hello,', name)Python程序是大小写敏感的,转义字符\在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:#!/usr/bin/env python3# -*- cod

2020-09-25 11:45:49 58

原创 软件破解

三大平台可执行文件格式windows: PElinux: ELFMAC : Mac-o代码段、数据段、堆空间、栈空间

2020-08-13 17:15:28 92

原创 静态

#include <iostream>using namespace std;class Car {public: int age; void run(){ cout << "sss" << endl; } static void run1() { cout << "sss" << endl; }};int main() { Car car;...

2020-08-12 12:33:23 91

原创 多态

#include <iostream>using namespace std;class Animal {public: void speak() { cout << "animal speack()" << endl; } virtual void run() { cout << "animal run()" << endl; }};class Cat : publi...

2020-08-03 11:05:18 108

原创 C++多态

2020-08-02 19:24:04 68

原创 C++类初始化列表

C++中提供初始化列表对成员变量进行初始化语法规则Constructor::Contructor() : m1(v1), m2(v1,v2), m3(v3){ // some other assignment operation}class foo{public:foo(string s, int i):name(s), id(i){} ; // 初始化列表//语法糖private:string name ;int id ;};...

2020-07-29 20:43:37 65

原创 回调函数

2020-07-29 20:43:33 49

原创 继承

2020-07-25 20:20:12 74

原创 封装

2020-07-25 20:00:02 71

原创

lea eax,[ebx+8]就是将ebx+8这个值直接赋给eax,而不是把ebx+8处的内存地址里的数据赋给eax。而mov指令则恰恰相反,例如:mov eax,[ebx+8]则是把内存地址为ebx+8处的数据赋给eax。(*this).age=3//点左边只能放对象this->=3//箭头左边是指针堆空间只能用指针cc === int3中断断电#include <iostream>using namespace std;class P...

2020-07-25 17:57:24 89

原创 Q

Q:更容易的漏洞利用强化背景:地址随机化ASLR技术随机化libc的位置,以抵御返回导向编程(ROP)攻击,以及W⊕X技术,以阻止控制流劫持攻击。但ASLR方法仍有少量可执行代码无法随机化,本文通过构建的Q技术从这些代码中自动创建ROP有效负载,以绕过当前部署的防御。思想Q的思想是使用语义定义来确定指令序列的功能。例如,我们没有将movl*,*;ret定义为移动小工具,而是使用语义定义OutReg←InReg。这使我们能够找到意想不到的小部件,例如实现imul$1、%eax、%ebx;ret.

2020-07-09 17:42:23 142

原创 汇编代码

lea load effect addressCPU大小端模式小端模式:小地址放小的...

2020-07-07 11:27:54 153

原创 引用

#include <iostream>using namespace std;int main() { int age = 10; int &refage = age;//定义了age的引用,refage相当于age的别名 refage = 20; cout << age << endl; getchar(); return 0;}引用弱化的指针...

2020-07-07 10:03:07 105

原创 inline内联函数,const

内联函数:将函数调用展开为函数体代码const是常量,不可修改.修饰类,结构体不可修改,也不能通过指针进行修改结构体const修饰其右边的内容const int age =20;struct Date{int age;char name;};int main(){Date d1={2011,sss};Date *p=&d1;p->age=2015;//结构体指针访问结构体成员使用->,结构体本身访问成员用点.}...

2020-07-07 09:34:05 266

原创 extern “C”

extern “C”用于C++引用C代码默认定义宏 #define __cplusplus#ifdef __cplusplus判断是否为C++语言#endif内联函数使用inline修饰声明和实现函数编译器在编译阶段完成对 inline 函数的处理,即对 inline 函数的调用替换为函数的本体。直接天幻函数内的代码,进行替换,...

2020-07-01 11:30:49 54

原创 函数

函数指针变量的声明:typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型实例以下实例声明了函数指针变量 p,指向函数test:#include<iostream>using namespace std;void test(int a) { cout << "ssss" << a << endl;}int main() { void(*p)(int) ...

2020-07-01 10:43:50 64

原创 函数重载

#include<Windows.h>#include<iostream>using namespace std;int Add(int a, int b){ return a + b;}double Add(double a, double b){ return a + b;}float Add(float a, float b){ return a + b;}int main(){ co...

2020-06-30 10:56:32 73

原创 寄存器与内存

linux unix汇编格式AT&T格式windows x86汇编intel格式

2020-06-27 11:53:59 83

原创 引入外部库

1.设置包含目录:把头文件包含进来2.设置库路径:把库文件包含进来3.#include<xxx.h>//包含头文件,进行调用 实际为函数声明4#pragma comment(lib,"xxxx.lib")//加载函数库,加载函数实体

2020-06-24 20:07:16 304

原创 函数

可变参数#include<stdarg.h>//可以处理可变参数double add(int num,...)//...代表可变的参数{double alst=0.0;va_list argp;//创建一个插入类型的指针}指针函数定义指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针int *fun(int x,int y);函数指针定义//可以将函数地址作为参数传递给其他函数...

2020-06-24 20:06:53 85

原创 结构体

struct mystruct{char str[200],int num};struct youstruct{int data;char you[200];struct mystruct my1;};void main(){struct youstruct yous;yous.data=100;strcpy(yous.you,"sss");yous.my1.num=111;strcpy(yous.my1.str,"ssss");}

2020-06-24 18:03:13 62

原创 四区

左值:能放在等号左边进行赋值的值代码区:define定义在代码区,字符串常量(char *p="你好";),程序代码。只读静态数据区: 全局变量、常量(const int m=10;(谁都可以访问,只能读不能写)),静态变量(static int a=1;(一旦创建不会因为循环而重建))、静态常量(static(放到静态区) const in a=1;)。全局,哪个函数都可以访问。const int a=1;仍在栈区,不是静态...

2020-06-23 18:18:41 141

原创 编译链接

2020-06-23 17:23:54 67

原创

函数进行取地址的时候直接写函数名就行,函数进行调用时需要加括号函数指针 void (*p1)(int a,int b)=(void ()(int a,int b))&a; 强制类型转换p1()//调用void change() { MessageBoxA(0, "2222", "3333", 0);}void main() { ...

2020-06-21 17:17:10 70

原创 内存函数

所有的循环可用递归实现,递归有些无法用循环实现memsetmemset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作#include<memory.h>//内存操作头文件char str[100] = "sssssssssss sdsds ssd"; memset(str, 'A', 10); printf("%s",str);memset(str,'0',strlen(...

2020-06-18 18:43:21 84

原创 结构体作为函数参数

数组没有副本机制结构体有副本机制

2020-06-18 10:38:53 73

原创 结构体函数

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include<stdlib.h>#include<string.h>struct myself { char name[10]; int age; int data;};struct myself * my(struct myself *aa) { struct myself *ww = (struct myself*...

2020-06-18 09:58:34 566

原创 函数参数 副本 传值 传地址

无论传递什么参数函数都有副本机制,函数返回值也有副本机制函数参数传递具有传值和传地址两种参数传递两种方式--传值&传址 传值方式:将实参的值拷贝给函数或方法,在函数内对形参进行操作,操作的对象是实参的拷贝,对实参本身没有影响,在函数结束返回后,形参被丢弃释放,实参的内容不会被改变 传址方式:将实参的地址传递给函数,在函数内对形参进行操作等同于对实参进行相同的操作,在函数调用结束返回后,形参被释放,实参的内容是对形参进行操作后的结果。 传址又分为:引用传递&指针传递

2020-06-17 18:54:13 287

原创 指针数组,数组指针

指针数组就是存放指针的数组,其本质为数组int * p1 [10];p1先与“[ ]”结合构成一个包含10个元素的数组,int*表示的则是数组的内容。数组指针是指向数组的指针,其本质为指针指向的对象是数组int (* p2)[10];  // 数组指针  p2先与“ * ”构成指针定义,int表示数组内容,[10]表示数组内元素个数。函数名也是指向函数第一条指令的常量指针。所以说函数的调用可以通过函数名,也可以通过指向函数的指针来调用。函数指针还允许将函数作为参数传递给其他函数,也就是.

2020-06-17 16:46:40 50

原创 结构体数组

数组在函数内部会退化成指针,普通数组就是指针,指针数组退化成二级指针指向数组的指针#include<stdio.h>void main(int argc,char *argv[]) { int a[5] = { 1,2,3,4,5 }; int *p; p = a; for (int i = 0; i <= 5; i++) { printf("%d,%x\n", *(p + i), p + i);} prin...

2020-06-17 16:22:41 1020

原创 指针

函数指针数组int jia(){return a+b;}int jian(){return a+b;}int (*p[5])(int a,int b)={jia,jian};//定义函数指针数组,每个元素都是函数指针int a=10,b=20;for(int i=0;i<5;i++){p[i](a,b);//p[i]===*(p+i)等价内存中数据往下加}int(**pp)(int a,int b)=p;for(**pp,pp<p+..

2020-06-14 17:19:58 53

原创 函数指针

如何用函数指针调用函数给大家举一个例子:int Func(int x); /*声明一个函数*/ int (*p) (int x); /*定义一个函数指针*/ p = Func; /*将Func函数的首地址赋给指针变量p*/赋值时函数 Func 不带括号,也不带参数。由于函数名 Func 代表函数的首地址,因此经过赋值以后,指针变量 p 就指向函数 Func() 代码的首地址了。下面来写一个程序,看了这个程序你们就明白函数指针怎么使用了:# include <st..

2020-06-14 09:24:48 368 1

原创 缓冲区溢出与数据执行保护DEP实验

1 实验目的构造shellcode代码,Linux系统平台上在关闭数据执行保护机制情况下实现缓冲区溢出攻击。2 缓冲区溢出原理缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上。程序员通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用...

2020-04-20 23:16:40 1038

原创 测试发布

@TOC文章发布测试标题测试继续你的创作

2019-04-11 20:19:57 96

空空如也

空空如也

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

TA关注的人

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