Windows逆向学习提纲

简介: Windows逆向学习提纲


作为最流行的操作系统之一,对于Windows逆向的学习是很有必要的

而且官方的一些资料没有讲述很多Windows的细节,Windows是不开源的,但是你可以用逆向分析的手段来自己探索这些细节,懂很多别人无法懂的知识

在CTF中Windows逆向也是很重要的知识

image.png

第一部分说的是Windows有关的系统知识,按照要求查阅相关资料学习

不要刻意记忆,操作系统这种抽象结构层次的概念是不要记的,尽量多理解和思考,在实际操作中熟练


字节存储顺序

大端法

小端法

Windows API

    1. Windows程序员能使用的编程工具只有API函数
    2. 应用程序开发人员能看到的就是Win API,Windows操作系统的其他部分是完全透明的
    3. Win API是基于C语言的接口,Win API中的函数可以由不同的语言编写

    Windows的消息机制

      1. Windows是一个消息系统
      2. 消息提供在应用程序之间

      PE文件格式

      PE文件的使用就一个平面地址空间,所有代码和数据都合并在一起,组成了一个很大的结构

        1. MS—DOS头部
        2. 区块
        3. 输入表

        PE文件就是对有些什么区块,这些区块是干什么的了解一下,逆向中边操作边查阅

        PE分析工具

          • LordPE
          • Stud_PE

          Windows内核基础

            • 权限级别
            • 内存空间布局
            • Windows的R3和R0之间的通信
            • 内核函数
            • TEB,PEB

            内核对象

            在Windows内核中有一种很重要的数据结构管理机制,就是内核对象,应用层的进程,线程,文件,驱动模块,时间,信号量

              • Dispatcher对象
              • I/O对象
              • 其他对象

              Windbg

              Windbg在本地调试无法通过下断点来跟踪内核的执行,一般用联机调试,一台机器运行内核,一台机器运行Windbg

              SSDT

              SSDT全称为System Services Descriptor Table,中文为系统服务描述符表,SSDT表就是把ring3的Win32 API和ring0的内核API联系起来。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。

              Win32 调试API

                • Win32自带了一些API函数,提供了相当于一般调试器的大部分功能,这些就是Win32API
                • 可以使用这些API编写一个进程调试器
                • 还可以做一些别的工作

                DLL注入技术

                  • 在Windows中,各个进程的内存空间是相互独立的,我们可以用DLL注入来实现跨进程的一些操作
                  • 在输入表被处理之前进行替换,在输入表中增加一个项目,指向要加载的目标DLL,新进程在初始化的时候就会主动加载目标DLL
                  • IAT Import Address Table

                  Hook技术

                    • 指令流就像水流一样,在适当的地方“下网”,就可  以对程序的运行流程进行拦截,监控
                    • Hook就是钩子,在逆向工程中将某些函数“钩住”,替换为自己编写的函数

                    使用Hook解题的一个例子(CTF)

                    感觉Hook的这种用法和二进制插桩是异曲同工的

                    image.png


                    相关文章
                    |
                    存储 C语言 C++
                    [笔记]windows逆向学习
                    [笔记]windows逆向学习
                    |
                    5月前
                    |
                    Windows
                    逆向学习Windows篇:通过编写函数处理菜单消息
                    逆向学习Windows篇:通过编写函数处理菜单消息
                    37 0
                    |
                    5月前
                    |
                    安全 API C++
                    逆向学习Windows篇:C++中多线程的使用和回调函数的实现
                    逆向学习Windows篇:C++中多线程的使用和回调函数的实现
                    186 0
                    |
                    5月前
                    |
                    安全 API Windows
                    逆向学习Windows篇:文件操作详解
                    逆向学习Windows篇:文件操作详解
                    31 0
                    |
                    5月前
                    |
                    存储 数据安全/隐私保护 Windows
                    逆向学习Windows篇:进程句柄操作详解
                    逆向学习Windows篇:进程句柄操作详解
                    197 0
                    |
                    5月前
                    |
                    监控 安全 Windows
                    逆向学习Windows篇:lab的使用和生成过程,以及“dell”的导出函数和作用
                    逆向学习Windows篇:lab的使用和生成过程,以及“dell”的导出函数和作用
                    75 0
                    |
                    5月前
                    |
                    Windows
                    逆向学习Windows篇:动态加载与def导出
                    逆向学习Windows篇:动态加载与def导出
                    52 0
                    |
                    5月前
                    |
                    C++ UED 开发者
                    逆向学习 MFC 篇:视图分割和在 C++ 的 Windows 窗口程序中添加图标的方法
                    逆向学习 MFC 篇:视图分割和在 C++ 的 Windows 窗口程序中添加图标的方法
                    81 0
                    |
                    6月前
                    |
                    SQL 关系型数据库 MySQL
                    Trinitycore学习之windows上用cmake生成vs项目并尝试在windows上启动服务
                    Trinitycore学习之windows上用cmake生成vs项目并尝试在windows上启动服务
                    126 0
                    |
                    IDE Unix 编译器
                    Windows下配置CMake(入门级教程,适合新人收藏学习)
                    Windows下配置CMake(入门级教程,适合新人收藏学习)
                    3380 1