Windows逆向提纲

举报
御麟 发表于 2023/04/25 22:15:21 2023/04/25
【摘要】 Windows逆向提纲

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

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

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

第一部分说的是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的这种用法和二进制插桩是异曲同工的

编辑


以上就是Windows逆向的提纲


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。