資源簡介
緩沖區溢出實驗

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#pragma?comment(lib“ws2_32“)
#include?
#define?MAX_NUM?2
#define?clear(p)?ZeroMemory(p?sizeof?(p)?);
//---------------------------------------------------------------------------
//??4bit?binary?to?char?0-F
char?Hex2Chr(?unsigned?char?n?)
{
n?&=?0xF;
????if?(?n?10?)
???? return?(?char?)(?n?+?‘0‘?);
????else
???? return?(?char?)(?n?-?10?+?‘A‘?);
}
//---------------------------------------------------------------------------
//??char?0-F?to?4bit?binary
unsigned?char?Chr2Hex(?char?c?)
{
if?(?c?>=?‘a‘?&&?c?<=?‘z‘?)??//??it‘s?toupper
???? c?=?c?-?‘a‘?+?‘A‘;
????if?(?c?>=?‘0‘?&&?c?<=?‘9‘?)
???? return?(?int?)(?c?-?‘0‘?);
????else?if?(?c?>=?‘A‘?&&?c?<=?‘F‘?)
???? return?(?int?)(?c?-?‘A‘?+?10?);
????else
???? return?-1;
}
//---------------------------------------------------------------------------
//??base64?code?table
//??0-63?:?A-Z(25)?a-z(51)?0-9(61)?+(62)?/(63)
char??base2Chr(?unsigned?char?n?)
{
n?&=?0x3F;
if?(?n?26?)
???? return?(?char?)(?n?+?‘A‘?);
????else?if?(?n?52?)
???? return?(?char?)(?n?-?26?+?‘a‘?);
????else?if?(?n?62?)
???? return?(?char?)(?n?-?52?+?‘0‘?);
????else?if?(?n?==?62?)
???? return?‘+‘;
????else
???? return?‘/‘;
}
//---------------------------------------------------------------------------
unsigned?char?Chr2base(?char?c?)
{
if?(?c?>=?‘A‘?&&?c?<=?‘Z‘?)
???? return?(?unsigned?char?)(?c?-?‘A‘?);
????else?if?(?c?>=?‘a‘?&&?c?<=?‘z‘?)
???? return?(?unsigned?char?)(?c?-?‘a‘?+?26?);
????else?if?(?c?>=?‘0‘?&&?c?<=?‘9‘?)
???? return?(?unsigned?char?)(?c?-?‘0‘?+?52?);
????else?if?(?c?==?‘+‘?)
???? return?62;
????else?if?(?c?==?‘/‘?)
???? return?63;
????else
????????return?64;??//??無效字符
}
//---------------------------------------------------------------------------
//??aLen?為?aSrc?的大小,?aDest?所指的緩沖區必須至少為?aLen?的?3?倍!!!
//??返回?aDest?的長度
int?QPEncode(?char?*?const?aDest?const?unsigned?char?*?aSrc?int?aLen?)
{
char?*?p?=?aDest;
????int????i?=?0;
????while?(?i++?????{
???? *p++?=?‘=‘;
????????*p++?=?Hex2Chr(?*aSrc?>>?4?);
????????*p++?=?Hex2Chr(?*aSrc++?);
????}
????*p?=?0;??//??aDest?is?an?ASCIIZ?string
return?(?p?-?aDest?);??//??exclude?the?end?of?zero
}
//---------------------------------------------------------------------------
//??aDest?所指的緩沖區必須至少為?aSrc?長度的?1/3?!!!
//??返回?aDest?的長度
int?QPDecode(?unsigned?char?*?const?aDest?const?char?*?aSrc?)
{
unsigned?char?*?p?=?aDest;
????int?????????????n?=?strlen(?aSrc?);
????unsigned?char???ch?cl;
????while?(?*aSrc?)??//??aSrc?is?an?ASCIIZ?string
????{
???? if?(?(?*aSrc?==?‘=‘?)?&&?(?n?-?2?>?0?)?)
????????{
???????? ch?=?Chr2Hex(?aSrc[1]?);
????????????cl?=?Chr2Hex(?aSrc[2]?);
????????????if?(?(?ch?==?(?unsigned?char?)-1?)?||?(?cl?==?(?unsigned?char?)-1?)?)
???????????? *p++?=?*aSrc++;
????????????else
????????????{
*p++?=?(?ch?<4?)?|?cl;
???? ?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......??????1425??2004-12-17?19:09??cn_xp(sp1).bmp
-----------?---------??----------?-----??----
?????????????????1425????????????????????1
評論
共有 條評論