2011年9月1日星期四

ODbgScript源碼學習(十二)

Progress.h:

#define PROG_CMD_LEN 256 //定義程序命令行長度
#define PROG_RES_LEN 128
#define PROG_VAL_LEN 256

#define PROG_TYPE 0x0F //類型
#define PROG_TYPE_COMMAND 0x01 //命令類型
#define PROG_TYPE_ASM 0x02 //彙編類型
#define PROG_TYPE_LABEL 0x04 //標籤類型
#define PROG_TYPE_COMMENT 0x08 //註釋類型

#define PROG_ATTR 0xF0
#define PROG_ATTR_EXECUTED 0x10
#define PROG_ATTR_ERROR 0x80

// 腳本執行表This is the table for Script Execution
typedef struct t_wndprog_data {

unsigned long line; //行
unsigned long size;             // 地址空間大小Size occupied by element in address space
unsigned long type;             //類型 Type of data element, TY_xxx
char     command[PROG_CMD_LEN]; //命令
char     result[PROG_RES_LEN]; //返回值
char     values[PROG_VAL_LEN]; //值
unsigned long eip;              // eip before execution
unsigned char pause;            // 腳本斷點script breakpoint
int jumpto;           // 跳轉到to display jumps in script window

} t_wndPROG_data;

LRESULT CALLBACK wndprog_winproc(HWND hw,UINT msg,WPARAM wp,LPARAM lp); //囘調函數窗口程序窗口過程

void initProgTable(); //初始化程序表

int wndprog_sort_function(const t_sortheader *p1,const t_sortheader *p2,const int sort); //分類函數
int wndprog_get_text(char *s, char *mask, int *select, t_sortheader *ph, int column); //獲取文本

void InvalidateProgWindow(void); //廢止窗口
void FocusProgWindow(void); //焦點窗口

int  addProgLine(int line, string & command, int type=false); //添加行
int  setProgLineEIP(int line, int eip); //設置行得eip
int  setProgLineValue(int line, string& value); //設置行的值
int  setProgLineValue(int line, DWORD value); //設置行的值
int  setProgLineValueFloat(int line, long double value); //設置行值float
int  setProgLineResult(int line, var& result); //設置行返回值
int  setProgLineResult(int line, string& result);
int  setProgLineResult(int line, DWORD result);
int  setProgLineResultFloat(int line, long double result);
int  isProgLineBP(int line); //判斷行斷點
int  isProgLineComment(int line); //判斷行註釋
int  getProgLineType(int line); //判斷行類型
int  setProgLineAttr(int line,int type) ;

void clearProgLines(); //清除行
void resetProgLines(); //重設行

bool editProgLine(t_wndprog_data *ppl) ; //編輯行

没有评论:

发表评论