滴水逆向win32学习笔记

  • 一、字符编码
    • 基本介绍
    • 关于utf-16、utf-8和unicode的关系
    • BOM头
  • 二、宽字符
    • 基本介绍
    • 常用函数
  • 三、Win32 API中的宽字符
    • 什么是win32 API
    • messagebox函数

一、字符编码

基本介绍

首先介绍了ASCII码,但是除美国外还需要显示其他字符,所以在ASCII码扩展表的基础上引入了GB2312之类的编码。由于每个国家有自己的一套扩展表,所以还是会出现问题。那怎么办呢?
采用unicode编码,编码范围是0-010FFFF,任何一个符号都能在编码表中体现。

关于utf-16、utf-8和unicode的关系

unicode只告诉了字符如何编码,没有解决编码以何种方式存储。举个例子,汉字的unicode编码为4E 2D,另一个汉字的编码为1 AB CD,或者字符A的编码为41,这些字符如何存储呢?
utf-16编码以16位无符号整数为单位,也就是二个字节为一组。如果编码只有一个字节,前面补零。如果有三个字节,那就凑齐四个。
字utf-16编码。
utf-16这样的存储方式比较简单,但是对于网络传输而言,如果单纯的传输字母数字类,只占一个字节的符号时,会造成空间的浪费(由于补零,导致一个字节变成两个字节)。于是出现了utf-8编码。
utf-8遵循下面的规则:

unicode编码(16进制) utf-8字节流(二进制)
000000-00007F 0xxx xxxx
000080-0007FF 110x xxxx 10xx xxxx
000800-00FFFF 1110 xxxx 10xx xxxx 10xx xxxx
010000-10FFFF 1111 0xxx 10xx xxxx 10xx xxxx 10xxxxxx

首先查看字符在什么范围内,然后进行转换。还是字,4E 2D000800-00FFFF范围内,0100 1110 0010 1101转换的结果就是 1110 0100 1011 1000 1010 1101,转换成16进制 E4 B8 AD

BOM头

为了让计算机知道一个文件是按照什么方式存储的,需要在文件的头部添加表示,这个东西叫BOM。
utf-8 EF BB BF
utf-16 小端存储 FF FE
utf-16 大端存储 FE FF

二、宽字符

基本介绍

我们在vs中写程序,如果默认的字符集为ASCII,那么在定义一个字符串的时候,会按照gb2312来进行编码。
如果使用宽字符集,则使用utf-16,注意字符串结尾00占两个字节。

常用函数

char wchar_t
printf wprintf 控制台打印
strlen wcslen 长度
strcpy wcscpy 字符串复制
strcat wcscat 拼接
strcmp wcscmp 比较
strstr wcsstr 查找

三、Win32 API中的宽字符

什么是win32 API

主要是存放c:\windows\system32下面的所有dll。64位系统和32位系统都在这个文件夹下,64位系统中32位的dll在C:\Windows\SysWOW64中。
几个重要的dll

  1. Kernel32.dll。最核心的功能模块,比如内存管理、进程和线程相关的函数。
  2. User32.dll。是Windows用户界面相关应用程序接口,如创建窗口和发送消息。
  3. GDI32.dll。图形设备接口,用于画图和显示文本。

messagebox函数

具体看文档吧,没什么好写的了。

滴水逆向win32学习笔记1相关推荐

  1. Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog

    Win32学习笔记 作者: 姜学哲(netsail0@163.net) 教材: Windows程序设计(第五版)北京大学出版社  [美]Charles Petzold 著  北京博彦科技发展有限公司 ...

  2. 静态链接库,动态链接库【滴水逆向三期48笔记】

    在开发过程中,我们通常会有很多函数,需要多次使用或在不同的程序中使用该函数,也有可能我们会将我们写好的函数给别人使用,但是我们又不想给他源代码,毕竟代码是我们花了很多功夫写出来的,那么我们如何不发给其 ...

  3. 滴水逆向3期笔记与作业——01汇编

    防止OneNote丢失. 海哥牛逼. 01汇编笔记 01进制 进制定义 10-2进制转换 八进制 02数据宽度/逻辑运算 数据宽度与存储 逻辑运算 计算机做加法的本质 作业 03通用寄存器_内存读写 ...

  4. IAT表入门简析【滴水逆向三期52笔记】

    在讲IAT表之前,我们来回忆一下之前学习的知识: 如果我们将函数写在程序的源文件中,那么该函数就会被编译器直接编译到程序的二进制文件中,在程序调用该函数的时候,E8后跟的地址是直接写死的,程序直接在e ...

  5. 导入表解析,IAT表解析【滴水逆向三期53笔记】

    我们再上一章节简要介绍了IAT表,我们知道如果程序调用dll中的函数时,必须通过IAT表来找到函数,我们基本了解了IAT表之后,我们今天来讲解一下导入表,通过本章节的学习,我们可以了解导入表,也能对I ...

  6. Win32学习笔记 - WndProc回调函数

    Windows操作系统向应用程序发送一系列消息,如左键按下和左键抬起,应用程序将通过GetMessage等方法,最终将消息提交到窗口过程(WndProc)指向一个应用程序定义的窗口过程的指针. 每个窗 ...

  7. Win32 学习笔记_列表控件(ListBox)

    ListBox控件 1. 创建控件 // 创建ListBox控件 HWND hListBox = CreateWindowEx(0, TEXT("ListBox"), NULL, ...

  8. Win32学习笔记(五)消息

    Windows平台下 消息的组成:由六个部分组成,缺一不可(窗口句柄,消息ID,消息的两个参数(两个附带信息),消息产生的事件,消息产生时的鼠标位置) 消息的作用:当系统通知窗口工作时,就采用消息的方 ...

  9. win32学习笔记(八) 图标资源、光标资源、字符串资源、加速键资源

    图标资源 添加资源 注意图标的大小,一个图标文件中可以有多个不同大小的图标. 加载图标: HICON LoadIcon(     HINSTANCE hInstance     LPCTSTR lpI ...

最新文章

  1. 安装包制作工具 SetupFactory使用1 详解
  2. 从外资银行上看国内银行的差距
  3. 数据库读写分离(aop方式完整实现)
  4. 【HDU - 5468】Puzzled Elena(容斥原理,dfs序,数学,素因子分解,有坑)
  5. 程序员笔记|常见的Spring异常处理
  6. CSDN Cookbook by Eric
  7. linux系统监控命令汇总
  8. PhoneGap开发环境搭建
  9. 逐像元地表反射率计算(GF4)
  10. 从技术和历史的视角,理解Too many technical terms in FE BE
  11. UAV运动学方面的约束
  12. 微信多开软件(Java版)
  13. 央行数字货币(CBDC)基础知识
  14. html模糊遮罩层磨砂玻璃,常见的PPT背景:如何设计PPT背景?
  15. redmine插件安装
  16. 验证网站代码的免费在线工具
  17. Chrome浏览器无法启动,因为应用程序的并行配置不正确
  18. 前端代码规范(个人约束)
  19. 【自然语言处理】条件随机场【Ⅰ】马尔可夫随机场
  20. (染色归一化)病理图像(HE或者WSI)图像标准化方法小介绍

热门文章

  1. 上台紧张的原因有哪些
  2. P3906 Geodetic集合
  3. vba报错:不能设置类worksheet的visible属性
  4. 张宏系列又又双叒叕售罄了
  5. Java项目毕业设计:基于springboot+vue的校园新闻网站
  6. 关于5位编程高手涉嫌侵犯腾讯著作权被受审的一些看法
  7. 微信小程序(优惠券)
  8. android html5 rtmp,利用H5实现RTMP流的WEB移动端直播
  9. 数字化转型经典案例:2020年国企100例
  10. JavaScript对象数组归类处理