.exe를 내 명령 줄 프로그램에로드하는 중. 출력 : http://www.privatepaste.com/22dc18e88d/outputExe DLL 내보내기 함수 이름 비교에 dll 서수를 반입합니까?
출력에서 알 수 있습니다. 나는 수입 된 dll 21 개를 얻는다.
명령 줄 인수 .exe의 pe 파일 형식의 정보를 계속 구문 분석 할 때 wsock32.dll을 가져옵니다. 참조 :
wsock32.dll 가져 오기는 모두 서수입니다. 80000000 플래그로 보입니다. 모든 사람을 제거하면 다음과 같은 메시지가 표시됩니다.
[Import_By_Ordinal]: 00000016
[Import_By_Ordinal]: 00000003
[Import_By_Ordinal]: 00000073
[Import_By_Ordinal]: 00000017
[Import_By_Ordinal]: 00000015
[Import_By_Ordinal]: 0000000B
[Import_By_Ordinal]: 00000014
[Import_By_Ordinal]: 0000000E
[Import_By_Ordinal]: 0000000A
[Import_By_Ordinal]: 00000034
[Import_By_Ordinal]: 00000011
[Import_By_Ordinal]: 00000013
[Import_By_Ordinal]: 00000010
[Import_By_Ordinal]: 00000009
[Import_By_Ordinal]: 00000002
[Import_By_Ordinal]: 00000008
[Import_By_Ordinal]: 0000006F
[Import_By_Ordinal]: 00000097
[Import_By_Ordinal]: 00000012
[Import_By_Ordinal]: 00000004
[Import_By_Ordinal]: 0000000F
[Import_By_Ordinal]: 0000000C
이제이 정보는 EXE의 pe 파일 형식을 구문 분석하여 볼 수 있습니다. 분명히 우리는 그 함수들의 이름을 알 수 없을 것입니다.
내가 00,000,016 순서를보고 싶다면 나는 기능은 내가 '돈 00000016.
관련되고 있는지 확인하려면 DUMPBIN 또는 CFF 탐색기를 사용하고 WSOCK32.DLL을로드하고 수출을보고 할 것 그걸하고 싶지 않아. 00000016 및 여하튼 wsock32.dll을 열고 exe에서 얻은 서수에 내보내기 테이블을 비교하는 C 또는 C++ 방식이 필요합니다.
현재이 내가 서수 받고 있어요 방법입니다, 그래서
// Start Iterating Tables
nFunctions = 0 ;
nOrdinalFunctions = 0 ;
while((*thunkINT).u1.AddressOfData != 0) /* AddressOfData holds RVA
to INT with the imported API name */
{
/* Each IMAGE_THUNK_DATA structures are indicated by zero values when
you reach the end */
// If the high bit isn't set, the IMAGE_THUNK_ DATA value is an RVA to the IMAGE_IMPORT_BY_NAME.
if(!(thunkINT->u1.AddressOfData & IMAGE_ORDINAL_FLAG))
{
nameData = (PIMAGE_IMPORT_BY_NAME)((*thunkINT).u1.AddressOfData);
nameData = (PIMAGE_IMPORT_BY_NAME)rvaToPtr((DWORD)nameData,
peHeader,
(DWORD)baseAddress);
printf("\t%s", (*nameData).Name);
printf("\n");
}
// Check OriginalFirstThunk ordinal and see if flag is set
// if flag is set, function is called by ordinal number. (import by ordinal)
if(((*thunkINT).u1.Ordinal & IMAGE_ORDINAL_FLAG))
{
printf(" [Import_By_Ordinal]:\t");
printf("\taddress: %08X", thunkINT->u1.Ordinal);
printf("\n");
nOrdinalFunctions++ ;
}
thunkINT++;
thunkIAT++;
nFunctions++;
} // End of while loop
를 DLL 내보내려면 EXE 수입량을 분석하면서 IMPORT ORDINAL 일치 할 수있는 방법이 ... 알고 싶은 임 ORDINAL? ORDINAL의 기능 이름을 찾으십니까?
이 작업을 수행하는 데 C 또는 C++ 방식을 사용하고 싶습니다.
내가 찾는 지식이있는 누군가가 있다면 고마워. 이 물건은 매우 복잡하고 내가하려는 것은 많은 사람들에게 널리 알려져 있지 않습니다.
누군가가 도움이 될 수 있습니다 희망...
감사합니다 ...
그래서해야 할 일은 서수가 주어진 함수의 이름을 찾는 것입니다. 별로 열심히하지 않습니다. 의존, dumpbin 등 모두 그것을 관리합니다. PE 형식이 광범위하게 문서화되어 있기 때문에 왜이 역 엔지니어링을 태그했는지 알 수 없습니다. –