zoukankan      html  css  js  c++  java
  • kernel32.dll!API调用流程分析

    用IDA, OD分析kernel32.dll的API调用流程,知其所以然。


    1.用CreateFileW,CreateFileA函数来分析


    CreateFileA 整个流程:

    kernel32.dll!CreateFileA流程
    kernel32.dll!Basep8BitStringToDynamicUnicodeString
    kernel32.dll!CreateFileWImplementation ; 实际就是 kernel32.dll导出表 CreateFil 地址
    kernel32.dll!RtlFreeUnicodeString


    每个流程的包含流程:
    A. kernel32.dll!CreateFileWImplementation流程
    ds:RtlInitUnicodeStringEx
    BaseIsThisAConsoleName
    API-MS-Win-Core-File-L1-1-0.CreateFileW ; 实际就是 kernel32.dll导入表 CreateFileW 地址


    B. API-MS-Win-Core-File-L1-1-0.CreateFileW流程
    ntdll.SbSelectProcedure
    ntdll.dll!zwCreateFile
    调用完成, CreateFileA返回.....

    C. ntdll.dll!zwCreateFile流程
    ntdll.dll!ntCreateFile
    ntdll.dll!KiFastSystemCall
    sysenter ;sysenter指令切入内核

     /*-------------------------------------------------------------------------------------------------*/

    CreateFileW整个流程:
    kernel32.dll!CreateFileWImplementation ; 实际就是 kernel32.dll导出表 CreateFil 地址

     /*----------------------------------------------------------------------------------------------------------*/

    流程描述:
    1. 调用 CreateFileA后 会转换成UNICODE版本, 然后直接调用CreateFileW(就是导出表的CreateFileW地址)
    2. 然后在调用 CreateFileW(就是导入表CreateFileW地址, API-MS-Win-Core-File-L1-1.dll理解为转换调用下)
    3. 导入表的CreateFileW才是函数的实现, 继续调用a,b,c

    a. xxx初始api, ntdll.dll!zwCreateFile, ntdll.dll!ntCreateFile
    b. ntdll.dll!KiFastSystemCall
    c. sysenter指令切入内核
    ....................
    内核函数调用
    ....................
    ......................
    省略xxxxxxxxx


    总结一下心得:
    1. 如果API为A版本. 先转换为W版本, W版本不用转换, CreateFileA和CreateFileW的流程都一样, 前者比后者多了一个unicode转换。
    2. 通过 导出表的相应API地址 调用API, 经过若干个初始化功能函数调用
    3. 通过 导入表的相应API地址 在调用API, 经过ntdll.dll!zwAPI 到ntdll.dll!ntAPI 的若干个调用后, 通过汇编指令
    sysenter切入内核
    4. 内核函数调用, 省略xxxxxxxxx

  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/mayingkun/p/5408663.html
Copyright © 2011-2022 走看看