电子说
打开文件,数据将以如下方式展示在我们面前。左边是机器码,右边是反编译文本。
![](https://file.elecfans.com/web2/M00/8C/10/poYBAGPaFpGAR9AzAAZJ9NhmHFY935.png)
很显然,反编译文本只是按照Ascii对二进制数据进行编译,所以能够很好地恢复出来。而剩下的因为在Ascii表中没有对应的编码,所以也就不能恢复出来。
在扇区末尾可以很明显的看到55aa结束标志,而在之间填充的0完全是times 510 - ($-$$) db 0的功劳。如果不以0填充这些区域,程序拉起后的行为就不一定是我们所能够预想的。
为了看懂剩下的区域内容,使用ndisasm进行反编译。正常来说我们可以得到下列结果,而从7C28到7DFC中间的内容不过是简单重复,没有展示出来的必要。
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaFuCAfIGqAAJ5I1tjMnY660.png)
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaF3iAKiJpAABgkn3URW0184.png)
首先程序加载到7C00处,从这里进行起跳;
然后数据对齐,并调用7C0B的程序;
7C0B命令装载7c1E起始地址到ax,从1F到22要求端口传输字符串。
insb--输入字符串到端口。
输入字符串指令(Input String Instruction)。该指令是从某一指定的端口接受一个字符串,并存入一片存储单元之中。输入端口由DX指定,存储单元的首地址和读入数据的个数分别由ES:DI和CX来确定。在指令的执行过程中,还根据标志位DF对寄存器DI作相应增减。该指令不影响任何标志位。
Outsw—输出字符串到端口。
输出字符串指令(Output String Instruction)。该指令是把一个字符串输入到指定的输出端口中。输出端口由DX指定,其输出数据的首地址和个数分别由DS:SI和CX来确定。在指令的执行过程中,还根据标志位DF对寄存器SI作相应增减。该指令的执行不影响任何标志位。
回到7C0E处,从0E到1D内容作用如上文一致,不再解析。
7C0A有一个短跳转到7C0A,即是要程序在此循环,可是该命令存在空耗计算机资源嫌疑。
至此整个程序解析完毕,而剩余没有解析的部分希望看客自行查找资料,这对于学习汇编与操作系统有好处。
三、运行环境搭建
运行环境使用VBox虚拟机,也可以使用物理机验证。
Ⅰ.创建虚拟机。
新建
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaF4-AIzflAAH-Kl8AVto242.png)
按图填写,下一步
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaF5mAMMm5AAH0VhiVbWk346.png)
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaF8CAKNY4AAFSm8R45V8246.png)
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaF8uAb9M_AAGx-fcYXQs713.png)
![](https://file.elecfans.com/web2/M00/8C/97/pYYBAGPaF9WAUGwrAAGVnOqaEl4977.png)
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaGEiAFfRSAAIXroAAvMM634.png)
![](https://file.elecfans.com/web2/M00/8C/97/pYYBAGPaGEyAND-BAAFCpvdT4ss153.png)
最后点击创建。
Ⅱ.装载.bin文件到虚拟硬盘。
使用李忠老师开发的工具。
打开按照如下方式写入即可。
![](https://file.elecfans.com/web2/M00/8C/97/pYYBAGPaGKOAHAMAAAD3x-j1MZA820.png)
Ⅲ.将盘片安装到虚拟机。
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaGMSAY2FDAAG-MpR2dw0920.png)
参考文献:
[1] General Software.[EB/OL]. https://cdn.embeddedts.com/resource-attachments/x86-edio-41.pdf
[2] 谢焕强.精简32位Linux操作系统在X86上的设计与实现[D].2022.23-24.
全部0条评论
快来发表一下你的评论吧 !