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

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

?? ntreg.c

?? The Offline NT Password Editor (c) 1997-2004 Petter Nordahl-Hagen
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
/* * ntreg.c - NT Registry Hive access library * * 2004-aug: Deep indirect index support. NT351 support. Recursive delete. *           Debugged a lot in allocation routines. Still no expansion. * 2004-jan: Verbosity updates * 2003-jan: Allocation of new data, supports adding/deleting keys & stuff. *           Missing is expanding the file. * 2003-jan: Seems there may be garbage pages at end of file, not zero pages *           now stops enumerating at first non 'hbin' page. *  * NOTE: The API is not frozen. It can and will change every release. * * Copyright (c) 1997-2004 Petter Nordahl-Hagen. * Freely distributable in source or binary for noncommercial purposes, * but I allow some exceptions to this. * Please see the COPYING file for more details on * copyrights & credits. *   * THIS SOFTWARE IS PROVIDED BY PETTER NORDAHL-HAGEN `AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */ #include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <string.h>#include <unistd.h>#include "ntreg.h"/* Set to abort() and debug on more critical errors */#define DOCORE 0const char ntreg_version[] = "ntreg lib routines, v0.92 040818, (c) Petter N Hagen";char *val_types[REG_MAX+1] = {  "REG_NONE", "REG_SZ", "REG_EXPAND_SZ", "REG_BINARY", "REG_DWORD",       /* 0 - 4 */  "REG_DWORD_BIG_ENDIAN", "REG_LINK",                                     /* 5 - 6 */  "REG_MULTI_SZ", "REG_RESOUCE_LIST", "REG_FULL_RES_DESC", "REG_RES_REQ", /* 7 - 10 */};/* Utility routines */char *str_dup( const char *str ){    char *str_new;    if (!str)        return 0 ;    CREATE( str_new, char, strlen(str) + 1 );    strcpy( str_new, str );    return str_new;}int fmyinput(char *prmpt, char *ibuf, int maxlen){      printf("%s",prmpt);      fgets(ibuf,maxlen+1,stdin);      ibuf[strlen(ibuf)-1] = 0;      return(strlen(ibuf));}/* Print len number of hexbytes */void hexprnt(char *s, unsigned char *bytes, int len){int i;   printf("%s",s);   for (i = 0; i < len; i++) {      printf("%02x ",bytes[i]);   }   printf("\n");}/* HexDump all or a part of some buffer */void hexdump(char *hbuf, int start, int stop, int ascii){   char c;   int diff,i;      while (start < stop ) {            diff = stop - start;      if (diff > 16) diff = 16;            printf(":%05X  ",start);      for (i = 0; i < diff; i++) {	 printf("%02X ",(unsigned char)*(hbuf+start+i));      }      if (ascii) {	for (i = diff; i < 16; i++) printf("   ");	for (i = 0; i < diff; i++) {	  c = *(hbuf+start+i);	  printf("%c", isprint(c) ? c : '.');	}      }      printf("\n");      start += 16;   }}/* General search routine, find something in something else */int find_in_buf(char *buf, char *what, int sz, int len, int start){   int i;      for (; start < sz; start++) {      for (i = 0; i < len; i++) {	if (*(buf+start+i) != *(what+i)) break;      }      if (i == len) return(start);   }   return(0);}/* Get INTEGER from memory. This is probably low-endian specific? */int get_int( char *array ){	return ((array[0]&0xff) + ((array[1]<<8)&0xff00) +		   ((array[2]<<16)&0xff0000) +		   ((array[3]<<24)&0xff000000));}/* Quick and dirty UNICODE to std. ascii */void cheap_uni2ascii(char *src, char *dest, int l){      for (; l > 0; l -=2) {      *dest = *src;      dest++; src +=2;   }   *dest = 0;}/* Quick and dirty ascii to unicode */void cheap_ascii2uni(char *src, char *dest, int l){   for (; l > 0; l--) {      *dest++ = *src++;      *dest++ = 0;   }}void skipspace(char **c){   while( **c == ' ' ) (*c)++;}int gethex(char **c){   int value;      skipspace(c);      if (!(**c)) return(0);   sscanf(*c,"%x",&value);   while( **c != ' ' && (**c)) (*c)++;   return(value);}   /* Get a string of HEX bytes (space separated), * or if first char is ' get an ASCII string instead. */int gethexorstr(char **c, char *wb){   int l = 0;      skipspace(c);      if ( **c == '\'') {      (*c)++;      while ( **c ) {	 *(wb++) = *((*c)++);	 l++;      }   } else {      do {	 *(wb++) = gethex(c);	 l++;	 skipspace(c);      } while ( **c );   }   return(l);}/* Simple buffer debugger, returns 1 if buffer dirty/edited */int debugit(char *buf, int sz){   char inbuf[100],whatbuf[100],*bp;   int dirty=0,to,from,l,i,j,wlen,cofs = 0;      printf("Buffer debugger. '?' for help.\n");      while (1) {      l = fmyinput(".",inbuf,90);      bp = inbuf;      skipspace(&bp);      if (l > 0 && *bp) {	 switch(*bp) {	  case 'd' :	    bp++;	    if (*bp) {	       from = gethex(&bp);	       to   = gethex(&bp);	    } else {	       from = cofs; to = 0;	    }	    if (to == 0) to = from + 0x100;	    if (to > sz) to = sz;	    hexdump(buf,from,to,1);	    cofs = to;	    break;	  case 'a' :	    bp++;	    if (*bp) {	       from = gethex(&bp);	       to   = gethex(&bp);	    } else {	       from = cofs; to = 0;	    }	    if (to == 0) to = from + 0x100;	    if (to > sz) to = sz;	    hexdump(buf,from,to,0);	    cofs = to;	    break;#if 0	  case 'k' :	    bp++;	    if (*bp) {	       from = gethex(&bp);	    } else {	       from = cofs;	    }	    if (to > sz) to = sz;	    parse_block(from,1);	    cofs = to;	    break;#endif#if 0	  case 'l' :	    bp++;	    if (*bp) {	       from = gethex(&bp);	    } else {	       from = cofs;	    }	    if (to > sz) to = sz;	    nk_ls(from+4,0);	    cofs = to;	    break;#endif	  case 'q':	    return(0);	    break;	  case 's':	    if (!dirty) printf("Buffer has not changed, no need to write..\n");	    return(dirty);	    break;	  case 'h':	    bp++;	    if (*bp == 'a') {	       from = 0;	       to = sz;	       bp++;	    } else {	       from = gethex(&bp);	       to   = gethex(&bp);	    }	    wlen = gethexorstr(&bp,whatbuf);	    if (to > sz) to = sz;	    printf("from: %x, to: %x, wlen: %d\n",from,to,wlen);	    for (i = from; i < to; i++) {	       for (j = 0; j < wlen; j++) {		  if ( *(buf+i+j) != *(whatbuf+j)) break;	       }	       if (j == wlen) printf("%06x ",i);	    }	    printf("\n");	    break;	  case ':':	    bp++;	    if (!*bp) break;	    from = gethex(&bp);	    wlen = gethexorstr(&bp,whatbuf);	    	    printf("from: %x, wlen: %d\n",from,wlen);	    memcpy(buf+from,whatbuf,wlen);	    dirty = 1;	    break;#if 0	  case 'p':	    j = 0;	    if (*(++bp) != 0) {	       from = gethex(&bp);	    }	    if (*(++bp) != 0) {	       j = gethex(&bp);	    }	    printf("from: %x, rid: %x\n",from,j);	    seek_n_destroy(from,j,500,0);	    break;#endif	  case '?':	    printf("d [<from>] [<to>] - dump buffer within range\n");	    printf("a [<from>] [<to>] - same as d, but without ascii-part (for cut'n'paste)\n");	    printf(": <offset> <hexbyte> [<hexbyte> ...] - change bytes\n");	    printf("h <from> <to> <hexbyte> [<hexbyte> ...] - hunt (search) for bytes\n");	    printf("ha <hexbyte> [<hexbyte] - Hunt all (whole buffer)\n");	    printf("s - save & quit\n");	    printf("q - quit (no save)\n");	    printf("  instead of <hexbyte> etc. you may give 'string to enter/search a string\n");	    break;	  default:	    printf("?\n");	    break;	 }      }   }}/* ========================================================================= *//* The following routines are mostly for debugging, I used it * much during discovery. the -t command line option uses it, * also the 'st' and 's' from the editor & hexdebugger. * All offsets shown in these are unadjusted (ie you must add * headerpage (most often 0x1000) to get file offset) *//* Parse the nk datablock * vofs = offset into struct (after size linkage) */void parse_nk(struct hive *hdesc, int vofs, int blen){  struct nk_key *key;  int i;  printf("== nk at offset %0x\n",vofs);#define D_OFFS(o) ( (void *)&(key->o)-(void *)hdesc->buffer-vofs )  key = (struct nk_key *)(hdesc->buffer + vofs);  printf("%04x   type              = 0x%02x %s\n", D_OFFS(type)  , key->type,	                           (key->type == KEY_ROOT ? "ROOT_KEY" : "") );  printf("%04x   timestamp skipped\n", D_OFFS(timestamp) );  printf("%04x   parent key offset = 0x%0lx\n", D_OFFS(ofs_parent) ,key->ofs_parent);  printf("%04x   number of subkeys = %ld\n", D_OFFS(no_subkeys),key->no_subkeys);  printf("%04x   lf-record offset  = 0x%0lx\n",D_OFFS(ofs_lf),key->ofs_lf);  printf("%04x   number of values  = %ld\n", D_OFFS(no_values),key->no_values);  printf("%04x   val-list offset   = 0x%0lx\n",D_OFFS(ofs_vallist),key->ofs_vallist);  printf("%04x   sk-record offset  = 0x%0lx\n",D_OFFS(ofs_sk),key->ofs_sk);  printf("%04x   classname offset  = 0x%0lx\n",D_OFFS(ofs_classnam),key->ofs_classnam);  printf("%04x   *unused?*         = 0x%0lx\n",D_OFFS(dummy4),key->dummy4);  printf("%04x   name length       = %d\n", D_OFFS(len_name),key->len_name);  printf("%04x   classname length  = %d\n", D_OFFS(len_classnam),key->len_classnam);  printf("%04x   Key name: <",D_OFFS(keyname) );  for(i = 0; i < key->len_name; i++) putchar(key->keyname[i]);  printf(">\n== End of key info.\n");}/* Parse the vk datablock * vofs = offset into struct (after size linkage) */void parse_vk(struct hive *hdesc, int vofs, int blen){  struct vk_key *key;  int i;  printf("== vk at offset %0x\n",vofs);  key = (struct vk_key *)(hdesc->buffer + vofs);  printf("%04x   name length       = %d (0x%0x)\n", D_OFFS(len_name),	                             key->len_name, key->len_name  );  printf("%04x   length of data    = %ld (0x%0lx)\n", D_OFFS(len_data),	                             key->len_data, key->len_data  );  printf("%04x   data offset       = 0x%0lx\n",D_OFFS(ofs_data),key->ofs_data);  printf("%04x   value type        = 0x%0lx  %s\n", D_OFFS(val_type), key->val_type,                 (key->val_type <= REG_MAX ? val_types[key->val_type] : "(unknown)") ) ;  printf("%04x   flag              = 0x%0x\n",D_OFFS(flag),key->flag);  printf("%04x   *unused?*         = 0x%0x\n",D_OFFS(dummy1),key->dummy1);  printf("%04x   Key name: <",D_OFFS(keyname) );  for(i = 0; i < key->len_name; i++) putchar(key->keyname[i]);  printf(">\n== End of key info.\n");}/* Parse the sk datablock * Gee, this is the security info. Who cares? *evil grin* * vofs = offset into struct (after size linkage) */void parse_sk(struct hive *hdesc, int vofs, int blen){  struct sk_key *key;  /* int i; */  printf("== sk at offset %0x\n",vofs);  key = (struct sk_key *)(hdesc->buffer + vofs);  printf("%04x   *unused?*         = %d\n"   , D_OFFS(dummy1),     key->dummy1    );  printf("%04x   Offset to prev sk = 0x%0lx\n", D_OFFS(ofs_prevsk), key->ofs_prevsk);  printf("%04x   Offset to next sk = 0x%0lx\n", D_OFFS(ofs_nextsk), key->ofs_nextsk);  printf("%04x   Usage counter     = %ld (0x%0lx)\n", D_OFFS(no_usage),	                                            key->no_usage,key->no_usage);  printf("%04x   Security data len = %ld (0x%0lx)\n", D_OFFS(len_sk),	                                            key->len_sk,key->len_sk);  printf("== End of key info.\n");}/* Parse the lf datablock (>4.0 'nk' offsets lookuptable) * vofs = offset into struct (after size linkage) */void parse_lf(struct hive *hdesc, int vofs, int blen){  struct lf_key *key;  int i;  printf("== lf at offset %0x\n",vofs);  key = (struct lf_key *)(hdesc->buffer + vofs);  printf("%04x   number of keys    = %d\n", D_OFFS(no_keys), key->no_keys  );  for(i = 0; i < key->no_keys; i++) {    printf("%04x      %3d   Offset: 0x%0lx  - <%c%c%c%c>\n", 	   D_OFFS(hash[i].ofs_nk), i,	   key->hash[i].ofs_nk,           key->hash[i].name[0],           key->hash[i].name[1],           key->hash[i].name[2],           key->hash[i].name[3] );  }  printf("== End of key info.\n");}/* Parse the lh datablock (WinXP offsets lookuptable) * vofs = offset into struct (after size linkage) * The hash is most likely a base 37 conversion of the name string */void parse_lh(struct hive *hdesc, int vofs, int blen){  struct lf_key *key;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一线二线三线精华| 日韩精品一二区| 欧美日韩dvd在线观看| 国产精品亚洲第一区在线暖暖韩国| 亚洲色图视频免费播放| 日韩一级片在线播放| 色哟哟国产精品免费观看| 久久激五月天综合精品| 一区二区三区欧美日| 亚洲国产精品成人综合| 日韩亚洲欧美成人一区| 欧美午夜不卡视频| 97se亚洲国产综合自在线不卡| 免费在线观看一区| 视频一区视频二区中文| 亚洲天堂a在线| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩精品一区二区三区四区 | 精品日韩在线观看| 欧美视频三区在线播放| 97久久精品人人澡人人爽| 国产毛片精品视频| 久久精品国产精品青草| 五月综合激情网| 亚洲自拍偷拍av| 亚洲乱码国产乱码精品精小说 | 亚洲第一狼人社区| 亚洲色图视频免费播放| 中文字幕一区二区5566日韩| 久久午夜老司机| 欧美v亚洲v综合ⅴ国产v| 制服丝袜亚洲播放| 91麻豆精品国产91久久久资源速度| 在线观看免费亚洲| 欧美优质美女网站| 欧美三级视频在线播放| 欧美三片在线视频观看| 欧美日韩精品一区二区在线播放| 91成人看片片| 欧美午夜不卡视频| 欧美精品一二三| 欧美一区二区视频网站| 欧美一级欧美三级在线观看 | 欧美一区二区三区系列电影| 91麻豆精品国产91久久久更新时间| 欧美日韩亚洲丝袜制服| 在线不卡欧美精品一区二区三区| 欧美精品自拍偷拍| 欧美成人一区二区三区| 久久久夜色精品亚洲| 国产亚洲精品免费| 国产精品久久久久久久久搜平片| 中文字幕一区二区三区蜜月 | 欧美一区二区日韩一区二区| 欧美群妇大交群中文字幕| 在线播放亚洲一区| 精品国产一区二区在线观看| 久久久久久**毛片大全| 国产精品女同互慰在线看| 亚洲欧美日韩小说| 天堂精品中文字幕在线| 精品夜夜嗨av一区二区三区| 国产一区二区三区综合| 成人国产一区二区三区精品| 91网站黄www| 欧美一区二区三区在线观看视频| 久久麻豆一区二区| 亚洲免费在线电影| 日韩电影免费在线| 成人一级片网址| 在线日韩国产精品| 精品国产一区二区三区四区四 | 男女男精品网站| 粉嫩蜜臀av国产精品网站| 色综合天天性综合| 337p亚洲精品色噜噜| 国产清纯白嫩初高生在线观看91 | jlzzjlzz欧美大全| 欧美日韩国产影片| 久久久一区二区三区捆绑**| 亚洲精品成人a在线观看| 免费人成网站在线观看欧美高清| 高清日韩电视剧大全免费| 欧美亚洲综合网| 久久精品一区四区| 亚洲电影视频在线| 粉嫩在线一区二区三区视频| 欧美浪妇xxxx高跟鞋交| 国产精品网站导航| 日韩精彩视频在线观看| 成人国产精品免费| 日韩欧美一区二区三区在线| 国产精品久久久久久一区二区三区 | 欧美日韩中文另类| 国产日产精品一区| 免费黄网站欧美| 色一情一伦一子一伦一区| 久久亚洲精品小早川怜子| 亚洲成人在线免费| aa级大片欧美| 国产欧美日韩精品在线| 日本视频一区二区三区| 色婷婷av一区二区三区大白胸| 26uuu国产在线精品一区二区| 亚洲国产成人va在线观看天堂| 成人免费毛片嘿嘿连载视频| 日韩欧美国产一二三区| 亚洲国产成人精品视频| jlzzjlzz亚洲女人18| 国产无一区二区| 乱中年女人伦av一区二区| 欧美手机在线视频| 亚洲青青青在线视频| 高清成人免费视频| 26uuu另类欧美| 精品一区二区三区欧美| 在线成人免费视频| 亚洲成人中文在线| 欧美日韩一级片在线观看| 亚洲乱码日产精品bd| 色综合中文综合网| 午夜影院久久久| 色综合欧美在线| 亚洲精品乱码久久久久久久久| 成人毛片视频在线观看| 久久蜜桃一区二区| 国产美女精品在线| 久久日一线二线三线suv| 六月丁香综合在线视频| 欧美一区二区精品在线| 同产精品九九九| 在线不卡中文字幕播放| 日韩va亚洲va欧美va久久| 911精品产国品一二三产区| 亚洲福利视频一区二区| 欧美日韩午夜在线| 午夜精品一区二区三区电影天堂| 在线免费不卡电影| 图片区日韩欧美亚洲| 51精品秘密在线观看| 日本美女一区二区三区| 日韩你懂的电影在线观看| 六月丁香综合在线视频| 亚洲精品在线观| 国产成人超碰人人澡人人澡| 国产视频一区二区在线| 国产成人av资源| 1024成人网色www| 91福利在线免费观看| 亚洲国产精品久久人人爱| 51精品久久久久久久蜜臀| 久久国产视频网| 国产三级三级三级精品8ⅰ区| 成人av片在线观看| 亚洲精品免费在线播放| 欧美年轻男男videosbes| 美女mm1313爽爽久久久蜜臀| 久久久久88色偷偷免费| 99re热这里只有精品视频| 亚洲一区影音先锋| 日韩欧美在线不卡| 成人一级视频在线观看| 亚洲一卡二卡三卡四卡无卡久久| 欧美一区二区在线不卡| 国产成人综合在线| 亚洲激情欧美激情| 日韩一级片在线播放| 成人性生交大片免费看视频在线| 亚洲一区免费在线观看| 亚洲精品一区二区精华| 国产成人免费视频| 亚洲一区二区三区影院| 日韩精品一区二区三区四区| 99视频一区二区三区| 日韩1区2区日韩1区2区| 欧美激情一区二区三区蜜桃视频| 日本高清不卡一区| 黄色资源网久久资源365| 亚洲欧美综合色| 日韩午夜在线播放| 99在线热播精品免费| 久久国产剧场电影| 一区二区免费视频| 久久久亚洲午夜电影| 欧美三电影在线| 成人成人成人在线视频| 日本不卡一区二区三区高清视频| 国产女主播一区| 91麻豆精品国产91久久久使用方法 | 麻豆成人91精品二区三区| 中文字幕五月欧美| 欧美白人最猛性xxxxx69交| aa级大片欧美| 精品在线观看视频| 亚洲成人av在线电影| 亚洲人成小说网站色在线 | 欧美天天综合网| 成人av手机在线观看| 久久精品久久99精品久久| 亚洲伦理在线免费看|