亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? jitter.h

?? ddk wizard demo for vc programe
?? H
字號(hào):
/*
 * Copyright (c) 2002
 *	Politecnico di Torino.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that: (1) source code distributions
 * retain the above copyright notice and this paragraph in its entirety, (2)
 * distributions including binary code include the above copyright notice and
 * this paragraph in its entirety in the documentation or other materials
 * provided with the distribution, and (3) all advertising materials mentioning
 * features or use of this software display the following acknowledgement:
 * ``This product includes software developed by the Politecnico
 * di Torino, and its contributors.'' Neither the name of
 * the University nor the names of its contributors may be used to endorse
 * or promote products derived from this software without specific prior
 * written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

/** @ingroup NPF 
 *  @{
 */

/** @defgroup NPF_include NPF structures and definitions 
 *  @{
 */

//
// Registers
//
#define EAX 0
#define ECX 1
#define EDX 2
#define EBX 3
#define ESP 4
#define EBP 5
#define ESI 6
#define EDI 7

#define AX 0
#define CX 1
#define DX 2
#define BX 3
#define SP 4
#define BP 5
#define SI 6
#define DI 7

#define AL 0
#define CL 1
#define DL 2
#define BL 3

/*! \brief A stream of X86 binary code.*/
typedef struct binary_stream{
	INT cur_ip;		///< Current X86 instruction pointer.
	INT bpf_pc;		///< Current BPF instruction pointer, i.e. position in the BPF program reached by the jitter.
	PCHAR ibuf;		///< Instruction buffer, contains the X86 generated code.
	PUINT refs;		///< Jumps reference table.
}binary_stream;


/*! \brief Prototype of a filtering function created by the jitter. 

  The syntax and the meaning of the parameters is analogous to the one of bpf_filter(). Notice that the filter
  is not among the parameters, because it is hardwired in the function.
*/
typedef UINT (*BPF_filter_function)( binary_stream *, ULONG, UINT);

/*! \brief Prototype of the emit functions.

  Different emit functions are used to create the reference table and to generate the actual filtering code.
  This allows to have simpler instruction macros.
  The first parameter is the stream that will receive the data. The secon one is a variable containing
  the data, the third one is the length, that can be 1,2 or 4 since it is possible to emit a byte, a short
  or a work at a time.
*/
typedef void (*emit_func)(binary_stream *stream, ULONG value, UINT n);

/*! \brief Structure describing a x86 filtering program created by the jitter.*/
typedef struct JIT_BPF_Filter{
	BPF_filter_function Function;	///< The x86 filtering binary, in the form of a BPF_filter_function.
	PINT mem;
}
JIT_BPF_Filter;




/**************************/
/* X86 INSTRUCTION MACROS */
/**************************/

/// mov r32,i32
#define MOVid(r32, i32) \
  emitm(&stream, 11 << 4 | 1 << 3 | r32 & 0x7, 1); emitm(&stream, i32, 4);

/// mov dr32,sr32
#define MOVrd(dr32, sr32) \
  emitm(&stream, 8 << 4 | 3 | 1 << 3, 1); emitm(&stream,  3 << 6 | (dr32 & 0x7) << 3 | sr32 & 0x7, 1);

/// mov dr32,sr32[off]
#define MOVodd(dr32, sr32, off) \
  emitm(&stream, 8 << 4 | 3 | 1 << 3, 1); \
  emitm(&stream,  1 << 6 | (dr32 & 0x7) << 3 | sr32 & 0x7, 1);\
  emitm(&stream,  off, 1);

/// mov dr32,sr32[or32]
#define MOVobd(dr32, sr32, or32) \
  emitm(&stream, 8 << 4 | 3 | 1 << 3, 1); \
  emitm(&stream,  (dr32 & 0x7) << 3 | 4 , 1);\
  emitm(&stream,  (or32 & 0x7) << 3 | (sr32 & 0x7) , 1);

/// mov dr16,sr32[or32]
#define MOVobw(dr32, sr32, or32) \
  emitm(&stream, 0x66, 1); \
  emitm(&stream, 8 << 4 | 3 | 1 << 3, 1); \
  emitm(&stream,  (dr32 & 0x7) << 3 | 4 , 1);\
  emitm(&stream,  (or32 & 0x7) << 3 | (sr32 & 0x7) , 1);

/// mov dr8,sr32[or32]
#define MOVobb(dr8, sr32, or32) \
  emitm(&stream, 0x8a, 1); \
  emitm(&stream,  (dr8 & 0x7) << 3 | 4 , 1);\
  emitm(&stream,  (or32 & 0x7) << 3 | (sr32 & 0x7) , 1);

/// mov [dr32][or32],sr32
#define MOVomd(dr32, or32, sr32) \
  emitm(&stream, 0x89, 1); \
  emitm(&stream,  (sr32 & 0x7) << 3 | 4 , 1);\
  emitm(&stream,  (or32 & 0x7) << 3 | (dr32 & 0x7) , 1);

/// bswap dr32
#define BSWAP(dr32) \
  emitm(&stream, 0xf, 1); \
  emitm(&stream,  0x19 << 3 | dr32 , 1);

/// xchg al,ah
#define SWAP_AX() \
  emitm(&stream, 0x86, 1); \
  emitm(&stream,  0xc4 , 1);

/// push r32
#define PUSH(r32) \
  emitm(&stream, 5 << 4 | 0 << 3 | r32 & 0x7, 1);

/// pop r32
#define POP(r32) \
  emitm(&stream, 5 << 4 | 1 << 3 | r32 & 0x7, 1);

/// ret
#define RET() \
  emitm(&stream, 12 << 4 | 0 << 3 | 3, 1);

/// add dr32,sr32
#define ADDrd(dr32, sr32) \
  emitm(&stream, 0x03, 1);\
  emitm(&stream, 3 << 6 | (dr32 & 0x7) << 3 | (sr32 & 0x7), 1);

/// add eax,i32
#define ADD_EAXi(i32) \
  emitm(&stream, 0x05, 1);\
  emitm(&stream, i32, 4);

/// add r32,i32
#define ADDid(r32, i32) \
  emitm(&stream, 0x81, 1);\
  emitm(&stream, 24 << 3 | r32, 1);\
  emitm(&stream, i32, 4);

/// add r32,i8
#define ADDib(r32, i8) \
  emitm(&stream, 0x83, 1);\
  emitm(&stream, 24 << 3 | r32, 1);\
  emitm(&stream, i8, 1);

/// sub dr32,sr32
#define SUBrd(dr32, sr32) \
  emitm(&stream, 0x2b, 1);\
  emitm(&stream, 3 << 6 | (dr32 & 0x7) << 3 | (sr32 & 0x7), 1);

/// sub eax,i32
#define SUB_EAXi(i32) \
  emitm(&stream, 0x2d, 1);\
  emitm(&stream, i32, 4);

/// mul r32
#define MULrd(r32) \
  emitm(&stream, 0xf7, 1);\
  emitm(&stream, 7 << 5 | (r32 & 0x7), 1);

/// div r32
#define DIVrd(r32) \
  emitm(&stream, 0xf7, 1);\
  emitm(&stream, 15 << 4 | (r32 & 0x7), 1);

/// and r8,i8
#define ANDib(r8, i8) \
  emitm(&stream, 0x80, 1);\
  emitm(&stream, 7 << 5 | r8, 1);\
  emitm(&stream, i8, 1);

/// and r32,i32
#define ANDid(r32, i32) \
  if (r32 == EAX){ \
  emitm(&stream, 0x25, 1);\
  emitm(&stream, i32, 4);}\
  else{ \
  emitm(&stream, 0x81, 1);\
  emitm(&stream, 7 << 5 | r32, 1);\
  emitm(&stream, i32, 4);}

/// and dr32,sr32
#define ANDrd(dr32, sr32) \
  emitm(&stream, 0x23, 1);\
  emitm(&stream,  3 << 6 | (dr32 & 0x7) << 3 | sr32 & 0x7, 1);

/// or dr32,sr32
#define ORrd(dr32, sr32) \
  emitm(&stream, 0x0b, 1);\
  emitm(&stream,  3 << 6 | (dr32 & 0x7) << 3 | sr32 & 0x7, 1);

/// or r32,i32
#define ORid(r32, i32) \
  if (r32 == EAX){ \
  emitm(&stream, 0x0d, 1);\
  emitm(&stream, i32, 4);}\
  else{ \
  emitm(&stream, 0x81, 1);\
  emitm(&stream, 25 << 3 | r32, 1);\
  emitm(&stream, i32, 4);}

/// shl r32,i8
#define SHLib(r32, i8) \
  emitm(&stream, 0xc1, 1);\
  emitm(&stream, 7 << 5 | r32 & 0x7, 1);\
  emitm(&stream, i8, 1);

/// shl dr32,cl
#define SHL_CLrb(dr32) \
  emitm(&stream, 0xd3, 1);\
  emitm(&stream,  7 << 5 | dr32 & 0x7, 1);

/// shr r32,i8
#define SHRib(r32, i8) \
  emitm(&stream, 0xc1, 1);\
  emitm(&stream, 29 << 3 | r32 & 0x7, 1);\
  emitm(&stream, i8, 1);

/// shr dr32,cl
#define SHR_CLrb(dr32) \
  emitm(&stream, 0xd3, 1);\
  emitm(&stream,  29 << 3 | dr32 & 0x7, 1);

/// neg r32
#define NEGd(r32) \
  emitm(&stream, 0xf7, 1);\
  emitm(&stream,  27 << 3 | r32 & 0x7, 1);

/// cmp dr32,sr32[off]
#define CMPodd(dr32, sr32, off) \
  emitm(&stream, 3 << 4 | 3 | 1 << 3, 1); \
  emitm(&stream,  1 << 6 | (dr32 & 0x7) << 3 | sr32 & 0x7, 1);\
  emitm(&stream,  off, 1);

/// cmp dr32,sr32
#define CMPrd(dr32, sr32) \
  emitm(&stream, 0x3b, 1); \
  emitm(&stream,  3 << 6 | (dr32 & 0x7) << 3 | sr32 & 0x7, 1);

/// cmp dr32,i32
#define CMPid(dr32, i32) \
  if (dr32 == EAX){ \
  emitm(&stream, 0x3d, 1); \
  emitm(&stream,  i32, 4);} \
  else{ \
  emitm(&stream, 0x81, 1); \
  emitm(&stream,  0x1f << 3 | (dr32 & 0x7), 1);\
  emitm(&stream,  i32, 4);}

/// jne off32
#define JNEb(off8) \
   emitm(&stream, 0x75, 1);\
   emitm(&stream, off8, 1);

/// je off32
#define JE(off32) \
   emitm(&stream, 0x0f, 1);\
   emitm(&stream, 0x84, 1);\
   emitm(&stream, off32, 4);

/// jle off32
#define JLE(off32) \
   emitm(&stream, 0x0f, 1);\
   emitm(&stream, 0x8e, 1);\
   emitm(&stream, off32, 4);

/// jle off8
#define JLEb(off8) \
   emitm(&stream, 0x7e, 1);\
   emitm(&stream, off8, 1);

/// ja off32
#define JA(off32) \
   emitm(&stream, 0x0f, 1);\
   emitm(&stream, 0x87, 1);\
   emitm(&stream, off32, 4);
   
/// jae off32
#define JAE(off32) \
   emitm(&stream, 0x0f, 1);\
   emitm(&stream, 0x83, 1);\
   emitm(&stream, off32, 4);

/// jg off32
#define JG(off32) \
   emitm(&stream, 0x0f, 1);\
   emitm(&stream, 0x8f, 1);\
   emitm(&stream, off32, 4);

/// jge off32
#define JGE(off32) \
   emitm(&stream, 0x0f, 1);\
   emitm(&stream, 0x8d, 1);\
   emitm(&stream, off32, 4);

/// jmp off32
#define JMP(off32) \
   emitm(&stream, 0xe9, 1);\
   emitm(&stream, off32, 4);

/**
 *  @}
 */

/**
 *  @}
 */

/**************************/
/* Prototypes             */
/**************************/

/** @ingroup NPF 
 *  @{
 */

/** @defgroup NPF_code NPF functions 
 *  @{
 */

/*!
  \brief BPF jitter, builds an x86 function from a BPF program.
  \param fp The BPF pseudo-assembly filter that will be translated into x86 code.
  \param nins Number of instructions of the input filter.
  \return The JIT_BPF_Filter structure containing the x86 filtering binary.

  BPF_jitter allocates the buffers for the new native filter and then translates the program pointed by fp
  calling BPFtoX86().
*/ 
JIT_BPF_Filter* BPF_jitter(struct bpf_insn *fp, INT nins);

/*!
  \brief Translates a set of BPF instructions in a set of x86 ones.
  \param ins Pointer to the BPF instructions that will be translated into x86 code.
  \param nins Number of instructions to translate.
  \param mem Memory used by the x86 function to emulate the RAM of the BPF pseudo processor.
  \return The x86 filtering function.

  This function does the hard work for the JIT compilation. It takes a group of BPF pseudo instructions and 
  through the instruction macros defined in jitter.h it is able to create an function directly executable
  by NPF.
*/ 
BPF_filter_function BPFtoX86(struct bpf_insn *ins, UINT nins, INT *mem);
/*!
  \brief Deletes a filtering function that was previously created by BPF_jitter().
  \param Filter The filter to destroy.

  This function frees the variuos buffers (code, memory, etc.) associated with a filtering function.
*/ 
void BPF_Destroy_JIT_Filter(JIT_BPF_Filter *Filter);

/**
 *  @}
 */

/**
 *  @}
 */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
17c精品麻豆一区二区免费| av电影在线不卡| 免费成人小视频| 午夜精品久久久| 三级一区在线视频先锋| 亚洲18色成人| 青娱乐精品视频在线| 美女视频网站久久| 国内一区二区在线| 国产黑丝在线一区二区三区| 国产一区二区剧情av在线| 国产真实精品久久二三区| 国产美女娇喘av呻吟久久| 国产99久久久精品| 91视视频在线观看入口直接观看www| av日韩在线网站| www.成人在线| 97精品视频在线观看自产线路二| 91同城在线观看| 欧美午夜精品电影| 7777精品伊人久久久大香线蕉超级流畅| 欧美日韩国产美| 欧美不卡123| 欧美韩国日本不卡| 亚洲综合视频网| 美女在线视频一区| 国产69精品久久久久毛片| www..com久久爱| 欧美日韩一区二区三区四区五区 | 国产精品538一区二区在线| 成人免费视频免费观看| 欧美性受xxxx| 精品久久久网站| 中文字幕视频一区| 日日夜夜精品视频免费| 国产精品一二二区| 欧美在线一区二区| 久久网站最新地址| 一区二区三区四区在线播放| 日韩经典中文字幕一区| 国产精品一区二区三区乱码| 色综合一个色综合亚洲| 欧美电影免费观看高清完整版在 | 蜜桃一区二区三区在线| 国产69精品久久99不卡| 欧美在线999| 久久婷婷国产综合国色天香| 亚洲蜜桃精久久久久久久| 久久福利资源站| 91久久一区二区| 久久久久国产精品麻豆| 一区二区三区成人在线视频 | 日韩精品一区二区三区在线观看| 国产视频一区在线播放| 亚洲国产裸拍裸体视频在线观看乱了| 精品无码三级在线观看视频| 91日韩精品一区| www久久久久| 亚洲国产精品久久一线不卡| 国产精品乡下勾搭老头1| 欧美三级日韩在线| 中文av一区二区| 久久精品国产亚洲a| 欧美怡红院视频| 国产精品传媒视频| 精品亚洲国内自在自线福利| 欧美视频在线一区二区三区 | 国产精品久久毛片a| 人人精品人人爱| 91久久精品一区二区三| 中文av一区特黄| 国产精品一区在线观看你懂的| 欧美午夜片在线观看| 国产精品久久久久久久久图文区 | 欧美日韩精品一区二区三区| 国产精品久久久一区麻豆最新章节| 蜜臀av一区二区| 欧美日韩国产经典色站一区二区三区| 国产精品国产三级国产有无不卡| 国产乱一区二区| 日韩一卡二卡三卡四卡| 亚洲成人在线网站| 在线免费观看日本欧美| 成人免费一区二区三区视频| 成人一级黄色片| 国产丝袜欧美中文另类| 国产精品一线二线三线精华| 精品国产伦理网| 日本aⅴ亚洲精品中文乱码| 欧美高清性hdvideosex| 亚洲国产精品人人做人人爽| 在线中文字幕一区| 一区二区三区色| 91成人在线精品| 樱桃国产成人精品视频| a级高清视频欧美日韩| 国产精品日韩精品欧美在线| 国产ts人妖一区二区| 久久免费午夜影院| 国产精品夜夜嗨| 国产欧美中文在线| 成人久久视频在线观看| 最新中文字幕一区二区三区 | 国产精品日韩精品欧美在线| 国产91综合网| 国产精品久久久久久久午夜片| 成人深夜福利app| 1区2区3区精品视频| 91亚洲午夜精品久久久久久| 日韩伦理电影网| 在线观看亚洲a| 亚洲国产一区在线观看| 91精品欧美久久久久久动漫| 免费观看日韩av| 久久久三级国产网站| 成人深夜在线观看| 亚洲精品视频一区二区| 欧美日韩高清在线播放| 免费成人在线视频观看| 久久综合九色综合欧美就去吻| 国产成a人亚洲精品| 日韩一区在线看| 精品视频全国免费看| 免费成人在线影院| 国产日产精品1区| 97se亚洲国产综合自在线| 亚洲午夜久久久久久久久久久| 8v天堂国产在线一区二区| 国产一区二区三区电影在线观看| 国产精品美女www爽爽爽| 色狠狠综合天天综合综合| 天堂影院一区二区| 久久久久国产精品麻豆ai换脸 | 欧美精品一区二区在线播放| 国产福利一区二区三区视频在线 | 性做久久久久久免费观看欧美| 日韩视频免费观看高清完整版| 国产精品一区二区果冻传媒| 亚洲欧洲性图库| 欧美一区二区三区播放老司机| 国产乱码精品一区二区三区av | 日本伊人色综合网| 国产日韩成人精品| 欧美色网站导航| 国产成人在线观看| 一级女性全黄久久生活片免费| 日韩欧美国产一区二区三区 | 久久精品人人做人人综合| 91国偷自产一区二区三区观看| 免费在线观看一区二区三区| 国产精品久久久久久久久免费丝袜 | 亚洲国产精品精华液2区45| 在线观看av一区| 国产乱子伦视频一区二区三区| 亚洲在线观看免费| 久久免费视频色| 欧美精品乱码久久久久久| 成人午夜精品在线| 免费在线观看日韩欧美| 亚洲视频免费在线观看| 欧美精品一区二区在线观看| 欧美特级限制片免费在线观看| 福利一区在线观看| 美日韩一级片在线观看| 亚洲美女一区二区三区| 久久久国产精品午夜一区ai换脸| 欧美日韩精品欧美日韩精品| 岛国一区二区三区| 久久精品72免费观看| 亚洲va欧美va国产va天堂影院| 国产精品夫妻自拍| 国产亚洲精品精华液| 日韩精品一区二区三区中文精品| 日本丶国产丶欧美色综合| 粉嫩av亚洲一区二区图片| 日本中文字幕一区二区有限公司| 亚洲激情男女视频| 国产精品成人免费在线| 久久久久久久一区| 欧美刺激脚交jootjob| 欧美亚洲国产一区在线观看网站 | 久久伊99综合婷婷久久伊| 欧美亚洲禁片免费| 色噜噜狠狠成人中文综合| youjizz国产精品| 成人午夜av在线| 国产老女人精品毛片久久| 日产国产高清一区二区三区| 亚洲图片一区二区| 亚洲在线视频网站| 亚洲乱码国产乱码精品精的特点 | 激情综合五月天| 美美哒免费高清在线观看视频一区二区 | 日本大香伊一区二区三区| 99在线精品视频| 不卡电影免费在线播放一区| 国产成人精品综合在线观看| 国产精品一二三在| 丁香一区二区三区| 国产成人av一区二区三区在线观看|