shellcode学习第一个例子。以下有一段c语言编写的命令行程序,检验用户输入的数字,并判断是否合法。这里用户的输入被放在了函数的缓冲区里,但程序没有对缓冲区长度做检查,留下了漏洞。这里可以利用该漏洞绕过数字检察,使得任意输入都会被判定为正确。
在 validate_serial 中,do_valid_stuff 的地址溢出到函数的返回值上,就可实现。源程序#include ...
分类:
系统相关 时间:
2015-05-11 17:57:39
阅读次数:
150
**windows C++ 互相等待线程同步示例**开发中遇到线程同步问题,可抽象为如下模型:
1、主线程的继续执行的前提是子线程的变量已经初始化完毕。
2、子线程待主线程执行完毕后继续执行后续的初始化操作。
重复1,2执行......直到通信结束。如下图所示:
源码(VS2010编译、运行通过)#include "stdafx.h"
#include
using namesp...
分类:
编程语言 时间:
2015-05-11 17:57:04
阅读次数:
195
今天总结栈的顺序存储结构
什么是栈?
栈是一种线性表,其特点是限定尽在表尾进行插入和删除操作,表尾栈一段也叫栈顶,另一端就是栈底了。既然栈是线性表,那么栈也就有两种存储数据的方式,顺序存储和链式存储。今天实现的是顺序存储的栈,也就顺序栈。
图示(来自百度图片):
顺序栈的实现:
栈的顺序存储还是比较简单的,就是对数组进行操作。
#include
using name...
分类:
编程语言 时间:
2015-05-11 17:56:25
阅读次数:
179
//用并查集记录有几个集合,然后将总的集合数剪一即为所求答案
//注意一下全0就行
#include
#include
#include
using namespace std ;
const int maxn = 110 ;
int map[maxn][maxn] ;
int F[maxn] ;
int n , m ;
int find(int x)
{
if(F...
分类:
其他好文 时间:
2015-05-11 17:55:58
阅读次数:
111
位向量(bit vector)是一个仅包含0和1的数组。长度为m的位向量所占空间要比包含m个指针的数组少的多。用一个位向量来表示一个包含不同元素的动态集合。字典操作的运行时间为0(1)
代码:
#include
#include
#define INT_BIT 32
typedef struct {
unsigned int *table;
...
分类:
编程语言 时间:
2015-05-11 16:16:31
阅读次数:
159
ZOJ 3872 :Beauty of Array
对于每个数,计算这个数被累加的次数。找到这个数左边这个数出现的地方,在这之间的所有数的数量*这个数后面的数的数量,即为这个数被计算的次数
#include
#include
typedef long long ll;
int a[1000005],post[1000005];
int main(){
#ifndef ONLINE_J...
分类:
其他好文 时间:
2015-05-11 16:12:58
阅读次数:
138
// 位段赋值的例子
#include
int main()
{
unsigned char puc[4];
struct tagPIM
{
unsigned char ucPiml;
unsigned char ucData0 : 1;
unsigned char ucData1 : 2;
unsigned char ucData2 : 3;
}*pstPimDat...
分类:
编程语言 时间:
2015-05-11 16:11:06
阅读次数:
185
// 结构体大小计算的例子
// 默认对齐数为4
#include
union tagAAA
{
struct
{
char ucFirst;//1
short ucSecond;//2
char ucThird;//1
}half;
short kk;//2
}number;
struct tagBBB
{
char ucFirst;//1
short ucSec...
分类:
编程语言 时间:
2015-05-11 16:10:15
阅读次数:
271
这里模仿了Word2vec里面构建Hash索引的思想。#include
#include
#include
#include
#include
#include
#include
#define MaxString 50
#define MaxUserSi...
分类:
编程语言 时间:
2015-05-11 16:10:04
阅读次数:
148
这道题目一开始就能知道考点在如何缩短查找时间。所以加快查找是我们的重点。但是在大数据面前,查找算法都不够快,所以我们用简单的hash思想来做。
我们开一个数组a,当出现了一个数b时,把该数作为下标调整值,即a[b] = -1,下一次出现该值的时候直接去找这个值作为下标的a值是否为-1即可。
#include
#include
#define MAX 5000010
int p[MAX]={0}...
分类:
其他好文 时间:
2015-05-11 16:08:36
阅读次数:
145