比如有0x01020304(C语言中对十六进制数的表示方式)这样一个数值,如果用大尾方式存储,其存储方式为01 02 03 04,而用小尾方式进行存储则是04 03 02 01,用更直观的方式展示其区别,如表1-5所列。
表1-5字节顺序对比表
、

从两个地址列可以看出,地址的值都是一定的,没有变化,而数据的存储顺序却是不相同的。unicode字符n从表中可以得到如下结论。
大尾存储方式:内存高位地址存放数据低位字节数据,内存低位地址存放数据高位字节数据;
小尾存储方式:内存高位地址存放数据高位字节数据,内存低位地址存放数据低位字节数据。
通常情况下,Windows操作系统兼容的CPU为小尾存储方式,而Unix操作系统兼容的CPU多为大尾存储方式。在网络中传输的数据的字节顺序使用的是大尾存储方式。
1.2.4ASCII码
计算机智能存储二进制数据,那么计算机是如何存储字符的呢?为了存储字符,计算机必须支持特定的字符集,字符集的作用是将字符映射为整数。早期字符集仅仅使用8个二进制数据位进行存储,即ASCII码。后来,由于全世界语言的种类繁多,又产生了新的字符集Unicode字符编码。
ASCII码是美国标准信息交换码的字母缩写,在ASCII字符集中,每个字符由唯一的7位整数表示。ASCII码仅使用了每个字节的低7位,最高位被不同计算机用来创建私有字符集。由于标准ASCII码仅使用7位,因此十进制表示范围是0~127共128个字符。
在编程与逆向中都会用到ASCII码,因此有必要记住常用的ASCII字符对应的十六进制和十进制数。常用的ASCII字符如表1-6所列。
表1-6常用ASCII码表

表1-6是经常使用到的ASCII字符,这些字符是经常会见到和用到的,希望读者能将其保存,以便使用之时可以快速查阅。
Unicode编码是为了使字符编码更进一步符合国际化而进行的扩展,Unicode使用一个字(也就是两个字节,即16位)来表示一个字符。这里不做过多的介绍。
1.3在OD中查看数据
在逆向分析中,调试工具可以说是非常重要的。调试器能够跟踪一个进程的运行时状态,在逆向分析中称为动态分析工具。动态调试会用在很多方面,比如漏洞的挖掘、游戏外挂的分析、软件加密解密等方面。本节介绍应用层下最流行的调试工具OllyDbg。
OllyDbg简称OD,是一款具有可视化界面的运行在应用层的32位的反汇编逆向调试分析工具。OD是所有进行逆向分析人员都离不开的工具。它的流行,主要原因是操作简单、参考文档丰富、支持插件功能等。
熟悉OD
OD的操作非常简单,但是由于逆向是一门实战性和综合性非常强的技术,因此要真正熟练掌握OD的使用却并不是容易的事,单凭操作而言看似没有太多的技术含量,但是其真正的精髓在于配合逆向的思路来达到逆向者的目的。
1.OD的选型
为什么先介绍OD的选型,而不直接开始介绍OD的使用呢?OD的主流版本是1.10和待崛起的2.0。虽然它的主流版本是1.10,但是它仍然存在很多修改版。所谓修改版,就是由用户自己对OD进行修改而产生的,类似于病毒的免杀。OD虽然是动态调试工具,但是由于其强大的功能经常被很用在软件破解等方面,导致很多作者的心血付诸东流。软件的作者为了防止软件被OD调试,加入了很多专门针对OD进行调试的反调试功能来保护自
己的软件不被调试,从而不被破解;而破解者为了能够继续使用OD来破解软件,则不得不对OD进行修改,从而达到反反调试的效果。
调试、反调试、反反调试,对于新接触调试的爱好者来说容易混淆。unicode字符n简单来说,反调试是阻止使用OD进行调试,而反反调试是突破反调试继续进行调试。OD的修改版本之所以很多,目的就是为了能够更好地突破软件的反调试功能。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-59929-3.html
人若犯我
当然或许会出现战争