zoukankan      html  css  js  c++  java
  • 汇编 MessageBox 不使用头文件

    __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>

    爱程序 不爱bug 爱生活 不爱黑眼圈 我和你们一样 我和你们不一样 我不是凡客 我要做geek
  • 相关阅读:
    Mysql 删除表
    Mysql 创建表
    Mysql left join
    Qt(Mac) 进程的启动
    Mysql update
    Mysql insert
    Mysql select
    Mysql INNER JOIN
    Mysql 别名
    Mysql 排序
  • 原文地址:https://www.cnblogs.com/yifi/p/6480602.html
Copyright © 2011-2022 走看看