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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ntreg.c

?? The Offline NT Password Editor (c) 1997-2004 Petter Nordahl-Hagen
?? C
?? 第 1 頁 / 共 5 頁
字號:
  int i;  printf("== lh 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  - <hash: %08lx>\n", 	   D_OFFS(lh_hash[i].ofs_nk), i,	   key->lh_hash[i].ofs_nk,           key->lh_hash[i].hash );  }  printf("== End of key info.\n");}/* Parse the li datablock (3.x 'nk' offsets list) * vofs = offset into struct (after size linkage) */void parse_li(struct hive *hdesc, int vofs, int blen){  struct li_key *key;  int i;  printf("== li at offset %0x\n",vofs);#define D_OFFS(o) ( (void *)&(key->o)-(void *)hdesc->buffer-vofs )  key = (struct li_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\n", 	   D_OFFS(hash[i].ofs_nk), i,	   key->hash[i].ofs_nk);  }  printf("== End of key info.\n");}/* Parse the ri subindex-datablock * (Used to list li/lf/lh's when ~>500keys) * vofs = offset into struct (after size linkage) */void parse_ri(struct hive *hdesc, int vofs, int blen){  struct ri_key *key;  int i;  printf("== ri at offset %0x\n",vofs);#define D_OFFS(o) ( (void *)&(key->o)-(void *)hdesc->buffer-vofs )  key = (struct ri_key *)(hdesc->buffer + vofs);  printf("%04x   number of subindices = %d\n", D_OFFS(no_lis), key->no_lis  );  for(i = 0; i < key->no_lis; i++) {    printf("%04x      %3d   Offset: 0x%0lx\n", 	   D_OFFS(hash[i].ofs_li), i,	   key->hash[i].ofs_li);  }  printf("== End of key info.\n");}/* Parse the datablock * vofs = offset into struct (after size linkage) */int parse_block(struct hive *hdesc, int vofs,int verbose){  unsigned short id;  int seglen;  seglen = get_int(hdesc->buffer+vofs);    if (verbose || seglen == 0) {    printf("** Block at offset %0x\n",vofs);    printf("seglen: %d, %u, 0x%0x\n",seglen,seglen,seglen);  }  if (seglen == 0) {    printf("Whoops! FATAL! Zero data block size! (not registry or corrupt file?)\n");    debugit(hdesc->buffer,hdesc->size);    return(0);  }    if (seglen < 0) {    seglen = -seglen;    hdesc->usetot += seglen;    hdesc->useblk++;    if (verbose) {      printf("USED BLOCK: %d, 0x%0x\n",seglen,seglen);      /*      hexdump(hdesc->buffer,vofs,vofs+seglen+4,1); */    }  } else {    hdesc->unusetot += seglen;    hdesc->unuseblk++;    bzero(hdesc->buffer+vofs+4,seglen-4);    if (verbose) {      printf("FREE BLOCK!\n");       /*      hexdump(hdesc->buffer,vofs,vofs+seglen+4,1); */    }  }  /*  printf("Seglen: 0x%02x\n",seglen & 0xff ); */  vofs += 4;  id = (*(hdesc->buffer + vofs)<<8) + *(hdesc->buffer+vofs+1);  if (verbose) {    switch (id) {    case 0x6e6b: /* nk */      parse_nk(hdesc, vofs, seglen);      break;    case 0x766b: /* vk */      parse_vk(hdesc, vofs, seglen);      break;    case 0x6c66: /* lf */      parse_lf(hdesc, vofs, seglen);      break;    case 0x6c68: /* lh */      parse_lh(hdesc, vofs, seglen);      break;    case 0x6c69: /* li */      parse_li(hdesc, vofs, seglen);      break;    case 0x736b: /* sk */      parse_sk(hdesc, vofs, seglen);      break;    case 0x7269: /* ri */      parse_ri(hdesc, vofs, seglen);      break;    default:      printf("value data, or not handeled yet!\n");      break;    }  }  return(seglen);}/* ================================================================ *//* Scan and allocation routines *//* Find start of page given a current pointer into the buffer * hdesc = hive * vofs = offset pointer into buffer * returns: offset to start of page (and page header) */int find_page_start(struct hive *hdesc, int vofs){  int r,prev;  struct hbin_page *h;  /* Again, assume start at 0x1000 */  r = 0x1000;  while (r < hdesc->size) {    prev = r;    h = (struct hbin_page *)(hdesc->buffer + r);    if (h->id != 0x6E696268) return(0);    if (h->ofs_next == 0) {      printf("find_page_start: zero len or ofs_next found in page at 0x%x\n",r);      return(0);    }    r += h->ofs_next;    if (r > vofs) return (prev);  }  return(0);}/* Find free space in page * size = requested size in bytes * pofs = offset to start of actual page header * returns: offset to free block, or 0 for error */#define FB_DEBUG 0int find_free_blk(struct hive *hdesc, int pofs, int size){  int vofs = pofs + 0x20;  int seglen;  struct hbin_page *p;    p = (struct hbin_page *)(hdesc->buffer + pofs);  while (vofs-pofs < (p->ofs_next - HBIN_ENDFILL)) {    seglen = get_int(hdesc->buffer+vofs);  #if FB_DEBUG    printf("** Block at offset %0x\n",vofs);    printf("seglen: %d, %u, 0x%0x\n",seglen,seglen,seglen);#endif    if (seglen == 0) {      printf("find_free_blk: FATAL! Zero data block size! (not registry or corrupt file?)\n");      debugit(hdesc->buffer,hdesc->size);      return(0);    }        if (seglen < 0) {      seglen = -seglen;#if FB_DEBUG	printf("USED BLOCK: %d, 0x%0x\n",seglen,seglen);#endif	/*      hexdump(hdesc->buffer,vofs,vofs+seglen+4,1); */    } else {#if FB_DEBUG	printf("FREE BLOCK!\n"); #endif	/*      hexdump(hdesc->buffer,vofs,vofs+seglen+4,1); */	if (seglen >= size) {#if FB_DEBUG	  printf("find_free_blk: found size %d block at 0x%x\n",seglen,vofs);#endif#if 0	  if (vofs == 0x19fb8) {	    printf("find_free_blk: vofs = %x, seglen = %x\n",vofs,seglen);	    debugit(hdesc->buffer,hdesc->size);	    abort();	  }#endif	  return(vofs);	}    }    vofs += seglen;  }  return(0);  }#undef FB_DEBUG/* Search pages from start to find free block * hdesc - hive * size - space requested, in bytes * returns: offset to free block, 0 if not found or error */int find_free(struct hive *hdesc, int size){  int r,blk;  struct hbin_page *h;  /* Align to 8 byte boundary */  if (size & 7) size += (8 - (size & 7));  /* Again, assume start at 0x1000 */  r = 0x1000;  while (r < hdesc->size) {    h = (struct hbin_page *)(hdesc->buffer + r);    if (h->id != 0x6E696268) return(0);    if (h->ofs_next == 0) {      printf("find_free: zero len or ofs_next found in page at 0x%x\n",r);      return(0);    }    blk = find_free_blk(hdesc,r,size);    if (blk) return (blk);    r += h->ofs_next;  }  return(0);}/* Allocate a block of requested size if possible * hdesc - hive * pofs - If >0 will try this page first (ptr may be inside page) * size - number of bytes to allocate * returns: 0 - failed, else pointer to allocated block. * This function WILL CHANGE THE HIVE (change block linkage) if it * succeeds. */int alloc_block(struct hive *hdesc, int ofs, int size){  int pofs = 0;  int blk = 0;  int trail, trailsize, oldsz;  if (hdesc->state & HMODE_NOALLOC) {    printf("alloc_block: ERROR: Hive %s is in no allocation safe mode,"	   "new space not allocated. Operation will fail!\n", hdesc->filename);    return(0);  }  size += 4;  /* Add linkage */  if (size & 7) size += (8 - (size & 7));  /* Check current page first */  if (ofs) {    pofs = find_page_start(hdesc,ofs);    blk = find_free_blk(hdesc,pofs,size);  }  /* Then check whole hive */  if (!blk) {    blk = find_free(hdesc,size);  }  if (blk) {  /* Got the space */    oldsz = get_int(hdesc->buffer+blk);#if 0    printf("Block at         : %x\n",blk);    printf("Old block size is: %x\n",oldsz);    printf("New block size is: %x\n",size);#endif    trailsize = oldsz - size;    if (trailsize == 4) {      trailsize = 0;      size += 4;    } #if 1    if (trailsize & 7) { /* Trail must be 8 aligned */      trailsize -= (8 - (trailsize & 7));      size += (8 - (trailsize & 7));    }    if (trailsize == 4) {      trailsize = 0;      size += 4;    }#endif#if 0    printf("trail after comp: %x\n",trailsize);    printf("size  after comp: %x\n",size);#endif    /* Now change pointers on this to reflect new size */    *(int *)((hdesc->buffer)+blk) = -(size);    /* If the fit was exact (unused block was same size as wee need)     * there is no need for more, else make free block after end     * of newly allocated one */    hdesc->useblk++;    hdesc->unuseblk--;    hdesc->usetot += size;    hdesc->unusetot -= size;    if (trailsize) {      trail = blk + size;      *(int *)((hdesc->buffer)+trail) = (int)trailsize;      hdesc->useblk++;    /* This will keep blockcount */      hdesc->unuseblk--;      hdesc->usetot += 4; /* But account for more linkage bytes */      hdesc->unusetot -= 4;    }      /* Clear the block data, makes it easier to debug */    bzero( (void *)(hdesc->buffer+blk+4), size-4);    hdesc->state |= HMODE_DIRTY;        return(blk);  } else {    printf("alloc_block: failed to alloc %d bytes, and hive expansion not implemented yet!\n",size);  }  return(0);}/* Free a block in registry * hdesc - hive * blk   - offset of block, MUST POINT TO THE LINKAGE! * returns bytes freed (incl linkage bytes) or 0 if fail * Will CHANGE HIVE IF SUCCESSFUL (changes linkage) */#define FB_DEBUG 1int free_block(struct hive *hdesc, int blk){  int pofs,vofs,seglen,prev,next,nextsz,prevsz,size;  struct hbin_page *p;  if (hdesc->state & HMODE_NOALLOC) {    printf("free_block: ERROR: Hive %s is in no allocation safe mode,"	   "space not freed. Operation will fail!\n", hdesc->filename);    return(0);  }  size = get_int(hdesc->buffer+blk);  if (size >= 0) {    printf("free_block: trying to free already free block!\n");#ifdef DOCORE      printf("blk = %x\n",blk);      debugit(hdesc->buffer,hdesc->size);      abort();#endif    return(0);  }  size = -size;  /* So, we must find start of the block BEFORE us */  pofs = find_page_start(hdesc,blk);  if (!pofs) return(0);  p = (struct hbin_page *)(hdesc->buffer + pofs);  vofs = pofs + 0x20;  prevsz = -32;  if (vofs != blk) {  /* Block is not at start of page? */    while (vofs-pofs < (p->ofs_next - HBIN_ENDFILL) ) {      seglen = get_int(hdesc->buffer+vofs);              if (seglen == 0) {	printf("free_block: EEEK! Zero data block size! (not registry or corrupt file?)\n");	debugit(hdesc->buffer,hdesc->size);	return(0);      }            if (seglen < 0) {	seglen = -seglen;	/*      hexdump(hdesc->buffer,vofs,vofs+seglen+4,1); */      }       prev = vofs;      vofs += seglen;      if (vofs == blk) break;    }        if (vofs != blk) {      printf("free_block: ran off end of page!?!? Error in chains?\n");#ifdef DOCORE      printf("vofs = %x, pofs = %x, blk = %x\n",vofs,pofs,blk);      debugit(hdesc->buffer,hdesc->size);      abort();#endif      return(0);    }        prevsz = get_int(hdesc->buffer+prev);      }  /* We also need details on next block (unless at end of page) */  next = blk + size;  nextsz = 0;  if (next-pofs < (p->ofs_next - HBIN_ENDFILL) ) nextsz = get_int(hdesc->buffer+next);#if 0  printf("offset prev : %x , blk: %x , next: %x\n",prev,blk,next);  printf("size   prev : %x , blk: %x , next: %x\n",prevsz,size,nextsz);#endif  /* Now check if next block is free, if so merge it with the one to be freed */  if ( nextsz > 0) {#if 0    printf("Swallow next\n");#endif    size += nextsz;   /* Swallow it in current block */    hdesc->useblk--;    hdesc->usetot -= 4;    hdesc->unusetot -= 4;  }  /* Now free the block (possibly with ajusted size as above) */   bzero( (void *)(hdesc->buffer+blk), size);  *(int *)((hdesc->buffer)+blk) = (int)size;  hdesc->usetot -= size;  hdesc->unusetot -= size;  hdesc->unuseblk--;  hdesc->state |= HMODE_DIRTY;   /* Check if previous block is also free, if so, merge.. */  if (prevsz > 0) {#if 0    printf("Swallow prev\n");#endif    hdesc->usetot -= prevsz;    hdesc->unusetot += prevsz;    prevsz += size;    /* And swallow current.. */      bzero( (void *)(hdesc->buffer+prev), prevsz);    *(int *)((hdesc->buffer)+prev) = (int)prevsz;    hdesc->useblk--;    return(prevsz);  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品美女被调教视频大全网站| 亚洲激情图片qvod| 18成人在线观看| 人人超碰91尤物精品国产| 成人av影院在线| 日韩欧美中文字幕制服| 亚洲黄色小视频| 国产乱码精品一品二品| 色噜噜久久综合| 国产精品情趣视频| 国产一区二区影院| 精品捆绑美女sm三区| 亚洲国产日日夜夜| 91美女片黄在线观看| 国产精品久久久久一区| 韩国欧美国产1区| 欧美mv日韩mv国产网站| 日韩福利视频导航| 欧美日韩一卡二卡三卡| 一区二区三区产品免费精品久久75| 国产成人av一区二区三区在线 | 1024亚洲合集| 国产精品资源在线| 久久综合五月天婷婷伊人| 视频一区欧美精品| 欧美福利一区二区| 亚洲第一综合色| 欧美日韩和欧美的一区二区| 夜夜嗨av一区二区三区| 97se狠狠狠综合亚洲狠狠| 中文字幕免费观看一区| 成人永久aaa| 国产欧美一区二区精品久导航 | 在线观看国产一区二区| 1000部国产精品成人观看| thepron国产精品| 国产精品久99| 在线视频国产一区| 亚洲一区影音先锋| 制服丝袜国产精品| 美脚の诱脚舐め脚责91| 精品久久久久久久久久久久久久久 | 免费在线观看一区| 91精品婷婷国产综合久久| 麻豆91在线看| 中文字幕不卡在线播放| 国产一区福利在线| 中文字幕人成不卡一区| 欧美伊人久久久久久久久影院| 午夜视频在线观看一区二区三区 | 免费在线视频一区| 久久久久久99精品| 色综合久久久久网| 天堂成人免费av电影一区| 欧美电影精品一区二区 | 成人综合婷婷国产精品久久蜜臀 | 欧美伊人久久久久久久久影院| 亚洲色图欧美在线| 91视频com| 亚洲影视在线播放| 欧美一级欧美三级在线观看 | 精品污污网站免费看| 亚洲va欧美va国产va天堂影院| 欧美日韩国产三级| 日本欧美肥老太交大片| 91片在线免费观看| 日韩黄色免费电影| 久久精品视频免费观看| 成人综合在线观看| 亚洲午夜精品网| 日韩一区二区免费电影| 国产精品资源站在线| 国产精品盗摄一区二区三区| 色婷婷精品久久二区二区蜜臀av| 亚洲国产一区二区三区青草影视| 在线这里只有精品| 五月婷婷欧美视频| 国产偷国产偷亚洲高清人白洁 | 欧美日韩精品一区二区三区蜜桃| 免播放器亚洲一区| 国产精品美女一区二区在线观看| 在线亚洲+欧美+日本专区| 麻豆久久久久久| 亚洲欧美视频在线观看| 欧美一级艳片视频免费观看| 国产成人精品免费| 亚洲香肠在线观看| 日本一区二区三区视频视频| 欧美喷潮久久久xxxxx| 国产精品一区在线观看你懂的| 国产精品视频观看| 精品国产电影一区二区| 91久久精品一区二区三区| 日本网站在线观看一区二区三区 | 国产欧美日本一区二区三区| 欧美色综合影院| 国产精品资源在线| 婷婷久久综合九色综合绿巨人| 国产三级三级三级精品8ⅰ区| 欧美特级限制片免费在线观看| 国产成人精品三级| 麻豆精品视频在线观看免费| 亚洲人亚洲人成电影网站色| 欧美mv日韩mv国产网站app| 在线欧美一区二区| 粉嫩13p一区二区三区| 免费观看成人av| 亚洲精品写真福利| 国产精品第13页| 日韩精品中文字幕一区二区三区 | 国产精品综合网| 美女在线视频一区| 亚洲图片欧美视频| 一区二区三区自拍| 国产精品免费久久| 久久亚洲免费视频| 欧美一卡2卡三卡4卡5免费| 欧洲一区在线电影| 91在线观看一区二区| 国产一区二区三区电影在线观看| 麻豆极品一区二区三区| 午夜精品福利一区二区蜜股av| 亚洲精品中文字幕乱码三区| 国产精品久久久久一区| 久久精品亚洲一区二区三区浴池 | 欧美日韩国产一级| 欧美色成人综合| 欧美精品久久久久久久多人混战| 色菇凉天天综合网| 91在线无精精品入口| 91丝袜高跟美女视频| 91亚洲精品乱码久久久久久蜜桃 | 欧美日韩国产高清一区二区三区| 欧美精品欧美精品系列| 在线电影院国产精品| 欧美美女一区二区在线观看| 欧美日韩在线直播| 制服丝袜国产精品| 精品国产乱码久久久久久1区2区| 精品国产91亚洲一区二区三区婷婷| 日韩视频中午一区| 欧美变态tickling挠脚心| 欧美一区二区三区性视频| 国产亚洲综合性久久久影院| 国产精品久久夜| 玉米视频成人免费看| 亚洲国产综合在线| 美女性感视频久久| 国产乱码精品一区二区三区忘忧草 | 成人黄色av电影| 成人精品视频.| 一本色道亚洲精品aⅴ| 色妹子一区二区| 欧美浪妇xxxx高跟鞋交| 日韩欧美在线影院| 久久久不卡网国产精品二区| 久久久久一区二区三区四区| 国产精品久久久久久久久动漫 | 午夜久久电影网| 久久精品国产澳门| 成人av在线资源网站| 色婷婷av久久久久久久| 91精品国产综合久久福利软件| 精品欧美一区二区久久| 综合分类小说区另类春色亚洲小说欧美| 亚洲国产电影在线观看| 日韩va亚洲va欧美va久久| 国产999精品久久| 欧美乱熟臀69xxxxxx| 国产欧美日韩不卡免费| 亚洲成年人网站在线观看| 国产精品资源网站| 欧美日本在线一区| 国产目拍亚洲精品99久久精品| 国产精品女人毛片| 青青草国产精品97视觉盛宴| 99热精品国产| 日韩免费观看高清完整版| 悠悠色在线精品| 国产成人av电影在线播放| 欧美日韩激情在线| 中文字幕综合网| 久久99精品视频| 91美女在线看| 1000部国产精品成人观看| 久久99精品网久久| 欧美三级在线视频| 亚洲桃色在线一区| 国产乱码精品一区二区三区av| 欧美日韩一区成人| 亚洲欧美日韩电影| 激情国产一区二区| 欧美精品一区二区蜜臀亚洲| 亚洲成av人影院在线观看网| 成人福利视频网站| 国产清纯白嫩初高生在线观看91 | 国产精品欧美一区喷水| 老司机午夜精品| 欧美精品久久99久久在免费线| 亚洲国产成人自拍|