Debug忽略.exe文件的地址address参数。如果指定.exe文件,Debug将文件重新定位到.exe文件的标题中指定的加载地址。在.exe文件被加载到内存前,标题自身从.exe文件脱离,因此磁盘上的.exe文件大小与内存中的不同。如果要检查整个.exe文件,请使用不同的扩展名重命名文件。
打开十六进制文件
Debug将具有.hex扩展名的文件认为十六进制格式文件。键入不带参数的l命令,可以加载从十六进制文件中指定的地址处开始的十六进制文件。如果键入的l命令包含address参数,Debug将把指定的地址加到在十六进制文件中找到的地址上,以确定起始地址。
Debug:M(移动)
将一个内存块中的内容复制到另一个内存块中。
m range address
参数
range
指定要复制内容的内存区域的起始和结束地址,或起始地址和长度。
address
指定要将range内容复制到该位置的起始地址。
范例
假定键入以下命令:
mcs:100110cs:500
Debug首先将CS:110地址中的内容复制到地址CS:510中,然后将CS:10F地址中的内容复制到CS:50F中,如此操作直至将CS:100地址中的内容复制到地址CS:500中。要查看结果,请使用Debugd(转储)命令,并使用m命令指定目标地址。
说明复制操作对现有数据的影响
如果新数据没有写入正在被复制的数据块中的地址,则元数据将保持不变。但是,如果目标块已经包含数据(就象它在覆盖副本操作中一样),这将改写该数据。(覆盖复制操作是指那些目标数据块部分内容覆盖原数据块部分内容的操作。)
执行覆盖复制操作
m命令执行目标地址的覆盖复制操作,而不丢失数据。将改写的地址内容首先复制。因此,如果将较高位地址的数据复制到较低位地址,则复制操作从原块的最低位地址开始并向最高位地址进行。反之,如果要将数据从低地址复制到高地址,复制操作从原块的最高地址开始,向最低地址进行。
Debug:N(名称)
指定Debugl(加载)或w(写入)命令的可执行文件的名称,或者指定正在调试的可执行文件的参数。
n[drive:][path]filename
领取专属 10元无门槛券
私享最新 技术干货