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

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

?? rebit.c

?? ollydbg反匯編器1.09c 部分源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include <string.h>
#include <odbg\plugin.h>

const DWORD ordinalimp         = 0x80000000;
const char  *szNewSecName      = ".NewIID";
const int   MaxDllNameLength   = 40;
const int   MinDllNameLength   =  4;
const int   MaxFunctNameLength = 80;
const int   BadSectionsNum     = 10;
const char  *BadSections[]     = {".rsrc","rsrc",".bss","bss",".reloc","reloc",".code","code",".edata","edata",".tls","tls"};
const int   FineFileExtsNum    = 6;
const char  *FineFileExts[]    = {".dll",".ocx",".exe",".bpl",".drv",".pak"};

static PIMAGE_DOS_HEADER dosh;
static PIMAGE_NT_HEADERS peh;
static PIMAGE_SECTION_HEADER sectionh;
static PIMAGE_DATA_DIRECTORY pDir;
static DWORD tmpnum,hlib;

// for getdllfunctnames
static DWORD    DllNum;
static int      FunctNum[50];
static char     *Dllnames[50];
static HANDLE   Dllhandles[50];
static char     *Functnames[50][1200];
static DWORD    Functaddresses[50][1200];

// for "SearchForFirstThunk"
// pDllThunkBlock                  : array [1..50] of pointer; // with memBase
// infos about the target memory
static BYTE   *pMemBase;
static DWORD  dwMemBase;
static DWORD  MemSize;


DWORD rva2offset(DWORD dwRva)
{
  int i;
  PIMAGE_SECTION_HEADER sectionh2;

  if(dwRva == 0) {
    return(dwRva);
  }

  sectionh2 = sectionh;
  // in which section is the import table ?
  for(i=0; i<peh->FileHeader.NumberOfSections; i++) {
    if(dwRva >= sectionh2->VirtualAddress && dwRva < sectionh2->VirtualAddress+sectionh2->Misc.VirtualSize) {
      break;
    }
    sectionh2++;
  }
  return(dwRva - sectionh2->VirtualAddress + sectionh2->PointerToRawData);
}

DWORD offset2rva(DWORD dwOffset)
{
  int i;
  PIMAGE_SECTION_HEADER sectionh2;

  if(dwOffset == 0) {
    return(dwOffset);
  }
  sectionh2 = sectionh;
  // in which section is the import table ?
  for(i=0; i<peh->FileHeader.NumberOfSections; i++) {
    if(dwOffset >= sectionh2->PointerToRawData && dwOffset < sectionh2->PointerToRawData+sectionh2->SizeOfRawData) {
      break;
    }
    sectionh2++;
  }
  return(dwOffset + sectionh2->VirtualAddress - sectionh2->PointerToRawData);
}

PIMAGE_SECTION_HEADER rva2section(DWORD dwRva)
{
  PIMAGE_SECTION_HEADER sectionh2;
  int i;

  sectionh2 = sectionh;
  for(i=0; i<peh->FileHeader.NumberOfSections; i++) {
    if(dwRva >= sectionh2->VirtualAddress && dwRva < sectionh2->VirtualAddress+sectionh2->Misc.VirtualSize) {
      break;
    }
    sectionh2++;
  }
  return(sectionh2);
}

DWORD GetAddressOrdinal(char *libname, DWORD MemoryAddress)
{
  DWORD functionentry;
  DWORD *pDW;
  DWORD i;
  DWORD functposition;
  DWORD modulebase;
  // export table values
  DWORD expbase;
  DWORD functnum;
  DWORD functaddr;
  DWORD namenum;
  DWORD nameaddr;
  DWORD ordinaladdr;
  // PE structs
  PIMAGE_DOS_HEADER dosh;
  PIMAGE_NT_HEADERS peh;
  IMAGE_DATA_DIRECTORY dir;

  functposition = 0xFFFFFFFF;

  __try {
    // load the dll
    modulebase = (DWORD)GetModuleHandle(libname);
    if(modulebase == 0) {
      modulebase = (DWORD)LoadLibrary(libname);
      if(modulebase == 0) {
        return(functposition);
      }
    }
    if(MemoryAddress <= modulebase) {
      return(functposition);
    }
    functionentry = MemoryAddress - modulebase;
    // check whether hmodule is a valid PE file
    dosh = (PIMAGE_DOS_HEADER)modulebase;
    if(dosh->e_magic != IMAGE_DOS_SIGNATURE) {
      return(functposition);
    }
    peh = (PIMAGE_NT_HEADERS)((DWORD)dosh + dosh->e_lfanew);
    if(peh->Signature != IMAGE_NT_SIGNATURE) {
      return(functposition);
    }

    dir = peh->OptionalHeader.DataDirectory[0];
    pDW = (DWORD*)(dir.VirtualAddress + 0x10 + (DWORD)dosh); // go fast to the base
  
    // get the export values
    expbase     = *pDW;
    pDW++;
    functnum    = *pDW;
    pDW++;
    namenum     = *pDW;
    pDW++;
    functaddr   = *pDW;
    pDW++;
    nameaddr    = *pDW;
    pDW++;
    ordinaladdr = *pDW;
    // search the entry in the RVA array of the export table
    pDW = (DWORD*)((DWORD)dosh + functaddr);
    //functposition = 0xFFFFFFFF;
    for(i=0; i<functnum; i++) {
      if(functionentry == *pDW) {
        functposition = i;
        break;
      }
      pDW++;
    }
    if(functposition != 0xFFFFFFFF) {
      (DWORD)functposition += (expbase + ordinalimp);
    }
  }
  __except(1) {
    return(-1);
  }
  return(functposition);
}

DWORD FindOldIT(BYTE *DataPointer, DWORD SizeOfImage, DWORD OldITRVA)
{
  DWORD *pDW;
  char *pCH, *pcExt;
  DWORD dwCurrRVA, dwCurrRVA2;
  PIMAGE_IMPORT_DESCRIPTOR IID2;
  DWORD dwTargetPos;
  DWORD dwDllPoi;
  int iii;
  DWORD result;

  result = OldITRVA;
  pCH = DataPointer;
  for(dwCurrRVA=0; dwCurrRVA<=SizeOfImage-4; dwCurrRVA++) {
    if(*pCH > 0x30) {
      if(strlen(pCH) < (size_t)MaxDllNameLength) {
        pcExt = &pCH[strlen(pCH)-4];
        for(iii=0; iii<FineFileExtsNum; iii++) {
          if(!stricmp(pcExt,FineFileExts[iii])) {
            if(!LoadLibrary(pCH)) {
            // we found a dll name
              pDW = (DWORD*)DataPointer;
              dwTargetPos = offset2rva(dwCurrRVA);
              for(dwCurrRVA2=0; dwCurrRVA2<=SizeOfImage-4; dwCurrRVA2++) {
                if(*pDW ==dwTargetPos) {
                  // we found a pointer to the dll
                  //IID2 = (PIMAGE_IMAGE_IMPORT_DESCRIPTOR)((DWORD)DataPointer+dwCurrRVA2-12);
                  IID2 = (PIMAGE_IMPORT_DESCRIPTOR)((DWORD)DataPointer+dwCurrRVA2-12);
                  // check whether it's the first IID !
                  do {
                    IID2--;
                    dwDllPoi = rva2offset(IID2->Name) + (DWORD)DataPointer;
                    if(IsBadStringPtr((char*)dwDllPoi,MaxDllNameLength)) {
                      break;
                    }
                    if(!LoadLibrary((char*)dwDllPoi)) {
                      break;
                    }
                  } while(dwCurrRVA != 0); // will never be true !!!
                  IID2++;
                  // some more checking
                  if(IID2->OriginalFirstThunk < SizeOfImage && IID2->FirstThunk < SizeOfImage) {
                    if((DWORD)IID2 - (DWORD)DataPointer != OldITRVA) {
                      goto DONE;
                    }
                  }
                }
                ((DWORD)pDW)++;
              }
              break;
            }
          }
        }
      }
    }
    pCH++;
  }
  return(result);
DONE:
  result = offset2rva((DWORD)IID2 - (DWORD)DataPointer);
  return(result);
}

void GetFunctNamesEx(DWORD dwFrom, DWORD dwSize)
{
  char *pCH;
  DWORD i, ii;
  //HANDLE hlib;

  // Search all function names
  pCH = (char*)((DWORD)pMemBase + dwFrom);
  for(i=0; i<=dwSize-4; i++) {
    if(*pCH > 0x30) {
      if((int)strlen(pCH) < MaxFunctNameLength) {
        for(ii=0; ii<DllNum; ii++) {
          tmpnum = (DWORD)GetProcAddress(Dllhandles[ii],pCH);
          if(tmpnum != 0) {
            //Functnames[ii][FunctNum[ii]] = (char*)((DWORD)pCH - (DWORD)pMemBase + (DWORD)pMemBase);
            Functnames[ii][FunctNum[ii]] = (char*)(DWORD)pCH;
            pCH += strlen(Functnames[ii][FunctNum[ii]]);
            Functaddresses[ii][FunctNum[ii]] = tmpnum;
            FunctNum[ii]++;
            break;
          }
        }
      }
    }
    pCH++;
  }
}

void GetFunctNamesFast(void)
{
  PIMAGE_SECTION_HEADER pSectionh2;
  int i, ii;
  BOOL checkit;

  memset(FunctNum,0,sizeof(FunctNum));
  pSectionh2 = sectionh;
  for(i=0; i<peh->FileHeader.NumberOfSections; i++) {
    checkit = TRUE;
    // is the current section an bad section ?
    for(ii=0; ii<BadSectionsNum; ii++) {
      if(!stricmp(pSectionh2->Name,BadSections[ii])) {
        checkit = FALSE;
        break;
      }
    }
    if(checkit) {
      GetFunctNamesEx(pSectionh2->PointerToRawData,pSectionh2->SizeOfRawData);
    }
    pSectionh2++;
  }
}

void GetDllNames(void)
{
  char *pCH;
  char *pcExt;
  DWORD i, ii, iii;

  DllNum = 0;
  // Search all dll names
  pCH = pMemBase;
  for(i=0; i<=MemSize-4; i++) {
    if(*pCH > 0x30) {
      if((int)strlen(pCH) < MaxDllNameLength && (int)strlen(pCH) > MinDllNameLength) {
        pcExt = &pCH[strlen(pCH)-4];
        for(iii=0; iii<(DWORD)FineFileExtsNum; iii++) {
          if(!stricmp(pcExt,FineFileExts[iii])) {
            hlib = (DWORD)LoadLibrary(pCH);
            if(hlib) {
              // check if we have this dll already
              for(ii=0; ii<=DllNum; ii++) {
                if(hlib == (DWORD)Dllhandles[ii]) {
                  break;
                }
              }
              if(ii > DllNum || DllNum == 0) {
                Dllhandles[DllNum] = (HANDLE)hlib;
                Dllnames[DllNum] = pCH;
                DllNum++;
                break;
              }
            }
            pCH += strlen(pCH);
            break;
          }
        }
      }
    }
    pCH++;
  }
}

void FixIAT(DWORD pointer2IID)
{
  PIMAGE_IMPORT_DESCRIPTOR IID2;
  DWORD  *pDW;
  char   *pCH;
  DWORD  i, ii;
  BOOL   fixed;
  DWORD  tmpnum;

  IID2 = (PIMAGE_IMPORT_DESCRIPTOR)pointer2IID;
  if(IID2 == NULL) {
    return;
  }
  do {
    tmpnum = (DWORD)LoadLibrary((char*)((BYTE*)(rva2offset(IID2->Name)+dwMemBase)));
    for(i=0; i<DllNum; i++) {
      if(Dllhandles[i] == (HANDLE)tmpnum) {
        break;
      }
    }
    pDW = (DWORD*)(rva2offset(IID2->FirstThunk) + (DWORD)pMemBase);
    pCH = (char*)((DWORD*)rva2offset(IID2->Name)+(DWORD)pMemBase);
    while(*pDW != 0) { // for each firstthunk member
      fixed = FALSE;
      for(ii=0; ii<(DWORD)FunctNum[i]; ii++) {
        if(Functaddresses[i][ii] == *pDW) {
          // correct the pointer to the Imported by Name struct
          *pDW = offset2rva((DWORD)Functnames[i][ii] - (DWORD)pMemBase - 2);
          fixed = TRUE;
          break;
        }
      }
      if(!fixed) { // take an ordinal instead
        tmpnum = GetAddressOrdinal(pCH,*pDW);
        if(tmpnum != 0xFFFFFFFF) {
          *pDW = tmpnum;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av在线发布| 欧美一区二区三区爱爱| 欧美日韩国产电影| 日韩精品专区在线| 亚洲一区二区三区中文字幕在线| 国模大尺度一区二区三区| 91视频在线观看| 久久亚洲一级片| 天天色天天操综合| 日本道在线观看一区二区| 精品av久久707| 午夜精品一区二区三区免费视频 | 成人午夜av电影| 日韩一区二区三区三四区视频在线观看| 国产视频一区在线观看| 日韩avvvv在线播放| 欧美亚洲国产怡红院影院| 国产亚洲成aⅴ人片在线观看| 免费在线视频一区| 91精品国产综合久久福利软件 | 在线免费观看日本一区| 国产欧美精品一区二区色综合朱莉 | 337p粉嫩大胆色噜噜噜噜亚洲| 五月天中文字幕一区二区| 91免费国产在线| 亚洲天堂久久久久久久| 国产.欧美.日韩| 国产日韩高清在线| 国产一区二区在线观看免费| 日韩精品最新网址| 国产综合色精品一区二区三区| 日韩免费视频线观看| 成人av电影观看| 国产精品久久久久婷婷| 高清shemale亚洲人妖| 欧美激情一二三区| 成人中文字幕合集| 亚洲欧美综合另类在线卡通| 97成人超碰视| 亚洲一区二区精品3399| 欧美美女一区二区在线观看| 日韩中文字幕区一区有砖一区| 欧美精品久久一区| 精久久久久久久久久久| 久久免费电影网| 白白色 亚洲乱淫| 亚洲综合久久av| 911国产精品| 国产大片一区二区| 亚洲猫色日本管| 欧美丰满一区二区免费视频 | 亚洲一级在线观看| 在线电影一区二区三区| 韩国在线一区二区| 日韩美女精品在线| 欧美精品日日鲁夜夜添| 黑人精品欧美一区二区蜜桃| 亚洲欧美怡红院| 欧美一区二区国产| 成人avav在线| 毛片不卡一区二区| 最近日韩中文字幕| 日韩欧美国产成人一区二区| 国产成人精品www牛牛影视| 亚洲在线观看免费| 日韩女优电影在线观看| av欧美精品.com| 男人的天堂久久精品| 中文字幕av一区二区三区免费看| 色哟哟在线观看一区二区三区| 免费成人美女在线观看| 亚洲精选免费视频| 久久综合色综合88| 在线精品视频免费播放| 国产尤物一区二区| 99久久婷婷国产综合精品电影 | 中文字幕中文在线不卡住| 欧美日韩精品一区视频| 大胆亚洲人体视频| 青青草国产成人av片免费| 亚洲人妖av一区二区| 精品国产乱码久久久久久1区2区 | 一区二区三区影院| 国产亚洲婷婷免费| 欧美一级精品大片| 欧美三级日韩在线| 色综合激情久久| 成人国产精品免费网站| 精品一区二区三区在线视频| 一区二区免费在线播放| 国产精品伦一区| 久久综合狠狠综合久久综合88| 欧美另类久久久品| 91蝌蚪porny九色| 床上的激情91.| 国产精品2024| 久久精品噜噜噜成人av农村| 亚洲自拍与偷拍| 亚洲蜜臀av乱码久久精品| 日本一区二区高清| 久久久久久久久一| 久久亚洲影视婷婷| 久久综合网色—综合色88| 日韩一区二区免费在线电影| 欧美日韩视频一区二区| 欧洲av在线精品| 在线观看av一区二区| 91麻豆国产自产在线观看| 成人综合婷婷国产精品久久| 国产aⅴ精品一区二区三区色成熟| 精品一区二区三区日韩| 久久99精品久久久久久动态图| 天堂久久久久va久久久久| 亚洲成人激情社区| 婷婷久久综合九色国产成人| 水蜜桃久久夜色精品一区的特点| 午夜精品久久久久久久蜜桃app | 成人免费在线观看入口| 国产精品私人自拍| 亚洲欧美在线视频观看| 亚洲欧美日韩电影| 一区二区三区波多野结衣在线观看| 一区二区三区四区五区视频在线观看 | 爽爽淫人综合网网站| 日韩电影免费一区| 狠狠色丁香婷综合久久| 成人中文字幕电影| 99久久夜色精品国产网站| 欧美在线视频全部完| 欧美老女人第四色| 日韩美女一区二区三区| 久久久久成人黄色影片| 自拍偷拍亚洲欧美日韩| 亚洲精品免费视频| 日韩电影在线看| 精品一区二区日韩| jizz一区二区| 欧美在线免费视屏| 日韩三级视频在线观看| 欧美经典三级视频一区二区三区| 亚洲欧美偷拍卡通变态| 蜜臀av一区二区在线免费观看 | 美国三级日本三级久久99| 国产剧情一区二区| 色综合色狠狠综合色| 7777精品伊人久久久大香线蕉| 欧美精品一区二区三区蜜桃视频| 久久免费电影网| 亚洲国产成人va在线观看天堂| 精品影院一区二区久久久| 97精品国产露脸对白| 欧美成va人片在线观看| 亚洲图片另类小说| 国产一区二区中文字幕| 在线观看日韩高清av| 精品国产乱码久久久久久牛牛| 亚洲免费观看视频| 精品一区二区三区欧美| 欧美日韩在线播放三区四区| 国产亚洲精品超碰| 视频在线观看国产精品| 9人人澡人人爽人人精品| 欧美一区二区人人喊爽| 一区二区三区四区在线播放| 国产乱人伦偷精品视频不卡| 欧美日韩一级黄| 国产精品第四页| 国产又黄又大久久| 欧美精品在线视频| 一区二区在线免费观看| 懂色av一区二区三区蜜臀| 日韩午夜激情电影| 亚洲国产cao| 91亚洲精华国产精华精华液| 精品久久一区二区| 天天综合色天天综合色h| 99riav久久精品riav| 久久亚洲精精品中文字幕早川悠里 | 欧美伦理视频网站| 中文字幕日韩一区| 国产精品一二三四区| 欧美一区二区黄色| 床上的激情91.| 精品国产乱码久久久久久蜜臀| 一区二区三区四区国产精品| jiyouzz国产精品久久| 久久久美女毛片| 久久精品久久综合| 9191成人精品久久| 日韩激情一区二区| 69精品人人人人| 午夜精品福利视频网站| 欧美日韩免费观看一区三区| 玉足女爽爽91| 欧美日韩中文字幕一区二区| 亚洲观看高清完整版在线观看| 色婷婷av一区| 亚洲成a人v欧美综合天堂下载| 91麻豆6部合集magnet| 亚洲一区二区三区四区五区黄|