コード例 #1
0
ファイル: Ufont.cpp プロジェクト: jimmccurdy/ArchiveGit
static int IsSymbolFont ( const scChar * name )
{
	if ( ( scStrcmp ( name, "Symbol" ) == 0 ) ||
		 ( scStrcmp ( name, "Wingdings" ) == 0 ) ||
		 ( scStrcmp ( name, "Monotype Sorts" ) == 0 ) )
		return 1;
	else
		return 0;
}
コード例 #2
0
ファイル: pe.c プロジェクト: jabedude/C-Projects
SCFUNC PVOID scGetProcAddr(PVOID modBase, const char *exportName)
{
    LPVOID pFunc = NULL;
    PBYTE pMod = (PBYTE)modBase;
    PIMAGE_NT_HEADERS pNt = GET_NT_HEADERS(pMod);
    PIMAGE_DATA_DIRECTORY pDir = &GET_DIRECTORY(pNt, IMAGE_DIRECTORY_ENTRY_EXPORT);
    PIMAGE_EXPORT_DIRECTORY pExportDir;
    WORD *pOrdinal;
    DWORD *pName;
    DWORD *pFuncs;
    DWORD i;

    // get the export directory
    pExportDir = (PIMAGE_EXPORT_DIRECTORY)(pMod + pDir->VirtualAddress);

    // sanity check the export directory
    if (pDir->Size == 0 || pExportDir->NumberOfFunctions == 0 || pExportDir->NumberOfNames == 0)
        return NULL;

    // iterate the exported names
    pName = (DWORD *) (pMod + pExportDir->AddressOfNames);
    pOrdinal = (WORD *) (pMod + pExportDir->AddressOfNameOrdinals);

    // hi EMET!
    pFuncs = (DWORD *) (pMod + pExportDir->AddressOfFunctions);

    for (i = 0; i < pExportDir->NumberOfNames; i++, pName++, pOrdinal++)
    {
        if (scStrcmp(exportName, (const char *)(pMod + *pName)) == 0)
        {
            // found the name, get the function
            pFunc =  pMod + pFuncs[*pOrdinal];
            break;
        }
    }

    return pFunc;
}