Windows逆向基础知识

Windows逆向基础知识

字节存储顺序:

小端序和大端序,windows平台均为小端序(低字节数据放在低地址处)

ASCII与UNICODE:

ASCII(美国信息交换标准码):是一个7位编码,共128个代码,是现今最通用的单字节编码系统

UNiCODE:包括字符集,编码方案等,为了解决传统的字符数据局限而产生的,为每种语言的每一个字符设置了统一的二进制编码,以满足跨语言,跨平台的要求,宽字符集,是ASCII字符编码的一扩展,在Windows中,用2个字节对其进行编码。所有的字符都是16位,包括7位的ASCII,在高位填充0

99F0E97DAE78F07211CF8D6901258F1E

windows API:apple:

API:全称叫应用程序编程接口,在windows程序设计领域发展初期,程序员所能使用的编程工具只有API函数,这些函数提供程序运行所需要的窗口管理,图形设备接口,内存管理等各项服务功能,这些功能以函数库的形式储备在一起,形成了windows应用程序编程接口,简称WIN API

WIN API子系统负责将API调用转换成windows操作系统的系统服务调用

windows提供了应用程序可利用的丰富的函数调用,这些函数调用采用动态链接库即DLL的形式实现

三个主要的动态链接库:

kernel32.dll,user32.dll,gdi32.dll,分别提供操作系统核心功能服务(包括进程与线程控制,内存管理,文件访问等),用户接口(处理用户接口,包括键盘和鼠标的输入,窗口和菜单的管理等),图形设备接口(允许程序在屏幕和打印机上显示文本和图形)

3060EEEF6FEEA20E418F9B1CD43EB968

windows常见的两个API函数:

MessageBox函数:

在user32.dll中,作用是创建和显示信息框

int MessageBox{

HWND hWnd , //父窗口句柄

LPCTSTR IpText , //消息框文本地址(内容)

LPCTSTR IpCation , //消息框标题样式

UNIT uType , //消息框样式

}

ANSI版是MessageBoxA,Unicode版是MessageBoxW

父窗口句柄,是HWND格式的

句柄handle,32位的一个数值,windows需要使用很多句柄来标识例如应用程序的实例,窗口,图标,菜单,输出设备,文件等对象,程序通过调用windows函数获取句柄,然后在其他windows函数中使用句柄以引用它代表的对象,句柄的实际值对于程序来说无关紧要,这个值是在windows程序内部用来应用相应的对象的

GetDIgltem Text 函数:

在user32.dll用户模块中,获取对话框文本

Unit GetDIgltem Text{

HWND hDlg , //对话框句柄

Int nlDDlgltem , //控件标识(ID号)

LPCTSRT IpString , //文本缓冲区指针

int nMaxCount //字符缓冲区的长度

}

C1E2786BC9AB508D1B45DD9E9B0D1746

ANSI版是GetDIgltem TextA,Unicode版是GetDIgltem TextW

如果函数执行成功,返回值是文本长度,失败则返回0

MB_OK 只有一个对话框按钮

9729A33465A01EDBEB8CA4EAEF6921FC

Windows消息机制:

Windows是一个消息驱动的系统

Windows消息提供应用程序与应用程序之间,应用程序与Windows操作系统之间进行通信的手段,应用程序想要实现的功能由消息来触发,并且靠对消息的响应和处理来完成功能

在windows系统中,有2种消息队列,一种是系统消息队列,一种是应用程序消息队列,计算机的所有输入设备由windows监控,当应用事件发生时,windows先将输入的消息放在系统消息队列里面,再把消息拷贝到相应的应用程序消息队列里面,,然后发送到相应的窗口处理函数中


Windows逆向基础知识
http://example.com/2024/03/06/Windows 逆向基础知识/
作者
John Doe
发布于
2024年3月6日
许可协议