Example #1
0
/// <summary>
/// Enumerate process modules
/// </summary>
/// <param name="result">Found modules</param>
/// <param name="mtype">Module type: x86 or x64</param>
/// <returns>Module count</returns>
std::vector<ModuleDataPtr> Native::EnumModules( eModSeachType search/*= LdrList*/, eModType mtype /*= mt_default */ )
{
    if (search == LdrList)
    {
        // Detect module type
        if (mtype == mt_default)
            mtype = _wowBarrier.targetWow64 ? mt_mod32 : mt_mod64;

        return CALL_64_86( mtype == mt_mod64, EnumModulesT );
    }
    else if(search == Sections)
    {
        return EnumSections();
    }
    else if(search == PEHeaders)
    {
        return EnumPEHeaders();
    }

    return std::vector<ModuleDataPtr>();
}
/// <summary>
/// Enumerate process modules
/// </summary>
/// <param name="result">Found modules</param>
/// <param name="mtype">Module type: x86 or x64</param>
/// <returns>Module count</returns>
size_t Native::EnumModules( listModules& result, eModSeachType search/*= LdrList*/, eModType mtype /*= mt_default */ )
{
    if (search == LdrList)
    {
        // Detect module type
        if (mtype == mt_default)
            mtype = _wowBarrier.targetWow64 ? mt_mod32 : mt_mod64;

        return (mtype == mt_mod32) ? EnumModulesT<DWORD>( result ) : EnumModulesT<DWORD64>( result );
    }
    else if(search == Sections)
    {
        return EnumSections( result );
    }
    else if(search == PEHeaders)
    {
        return EnumPEHeaders( result );
    }

    return 0;
}