(IDA中) 内存 字节之理解研究

本文介绍了内存中字节的存储方式,包括字节的大小、高低位表示,以及在INTEL架构下的small endian格式。通过实例解析了如何在IDA中dump内存并进行数据类型转换,如字符、短整型的转换。此外,讨论了字符串的表示和在不同情况下的拼接方法,特别是涉及JavaScript调用时的注意事项。
摘要由CSDN通过智能技术生成

存的基本单位是字节(BYTE). 每个字节是8个二进制位, 所以每个字节能表示的最大的数是11111111, 即十进制的255. 一般来说, 用十六进制比较方便, 因为每4个二进制位刚好等于1个十六进制位, 11111111b = 0xFF. 内存中的字节是连续存放的, 两个字节构成一个字(WORD), 两个字构成一个双字(DWORD)。
在INTEL架构中, 采用small endian格式, 即在内存中,高位字节在低位字节后面. 举例说明:十六进制数803E7D0C, 每两位是一个字节, 在内存中的形式是: 0C 7D 3E 80.
这里所说的高低位转换 是针对 数值 类型 而言的

在32位寄存器中则是正常形式,如在EAX就是803E7D0C.
/*
当我们的形式地址指向这个数的时候,实际上是指向第一个字节,即0C. 我们可以指定访问长度是字节, 字或者双字. 假设DS:[EDX]指向第一个字节0C:
mov AL, byte ptr DS:[EDX] ;把字节0C存入AL
mov AX, word ptr DS:[EDX] ;把字7D0C存入AX
mov EAX, dword ptr DS:[EDX] ;把双字803E7D0C存入EAX
*/

举例 IDA中dump内存 :
68 66 05 04
这里是有4个字节 是十六进制表现形式

char 字符类型 占一个字节
如果68这个字节 存放的是 char类型
那么它是代表啥呢 怎么转换呢?
这里我用易语言的
字符() 命令来转换
首先把字节 68 十六进制转成 十进制 是 104
再用命令 调试输出(字符(104)) 则是输出 字符 h
又例如 05 如果存放的是 char类型
那么它是这样的 十六进制 转成 十进制 也是 5 再
调试输出(字符(5)&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值