__asm
    {
        push eax
            mov eax, dword ptr fs : [0x30]   // eax = PEB的地址
            mov eax, [eax + 0x0C]            // eax = 指向PEB_LDR_DATA结构的指针
            mov eax, [eax + 0x1C]            // eax = 模块初始化链表的头指针InInitializationOrderModuleList
            mov eax, [eax]                   // eax = 列表中的第二个条目
            mov eax, [eax]                   // eax = 列表中的第三个条目
            mov eax, [eax + 0x08]            // eax = 获取到的Kernel32.dll基址(Win7下第三个条目是Kernel32.dll)
            mov dwKernel32Addr, eax
            pop eax
    }

 

PEB--->LDR--->InLoadOrderModuleList

通过循环遍历LDR_DATA_TABLE_ENTRY中的BaseDllName找到Kernel32.dll
找到Dll ntdll!_LDR_DATA_TABLE_ENTRY +0x030 DllBase得到文件内存首地址
通过PE文件导入表的解析 找到MessageBox的地址

转发函数的函数名格式 <DLL name>.<function>

相关文章:

  • 2022-12-23
  • 2021-08-06
  • 2022-12-23
  • 2021-12-22
  • 2021-12-31
  • 2021-09-04
  • 2022-12-23
猜你喜欢
  • 2021-07-16
  • 2022-12-23
  • 2021-08-11
  • 2021-09-17
  • 2022-01-18
  • 2021-04-15
  • 2021-11-17
相关资源
相似解决方案