PE 내보내기 테이블
// export_test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
int export_jixi(unsigned long pmodule ,char *function)
{
if(pmodule == 0)
return -1;
if(IMAGE_DOS_SIGNATURE != *(unsigned short*)pmodule)
return -1;
unsigned long peheader=pmodule + *(unsigned long*)(pmodule + 0x3C);
if(IMAGE_NT_SIGNATURE != *(unsigned long*)peheader)
return -1;
unsigned long export=*(unsigned long*)(peheader + 0x78) + pmodule;
if(export == pmodule)
return -1;
unsigned long base=0;
unsigned long numoffunction=0;
unsigned long numofname=0;
unsigned long *addrofname=NULL;
unsigned long *addroffunction=NULL;
unsigned short *addroforgname=NULL;
//printf("base:%d name:%s\r
" ,*(unsigned long*)(export+0x10) ,*(unsigned long*)(export+0x0C)+pmodule);
numoffunction = *(unsigned long*)(export + 0x14);
numofname = *(unsigned long*)(export + 0x18);
//printf("numoffunction :%d ,numofname :%d \r
" ,numoffunction ,numofname);
addrofname = (unsigned long*)(*(unsigned long*)(export + 0x20) + pmodule);
addroforgname = (unsigned short*)(*(unsigned long*)(export + 0x24) + pmodule);
addroffunction = (unsigned long*)(*(unsigned long*)(export + 0x1C) + pmodule);
int index=0;
for (int i=0 ;i<numofname ;i++)
{
if(!strncmp(function ,(char*)(addrofname[i]+pmodule) ,strlen(function)))
{
index =base + addroforgname[i];
return addroffunction[index] + pmodule;
}
}
return 0;
}
int main(int argc, char* argv[])
{
HMODULE hlib=LoadLibrary("kernel32");
printf("%x\r
" ,export_jixi((unsigned long)hlib ,"GetProcAddress"));
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.