打開文件,數(shù)據(jù)將以如下方式展示在我們面前。左邊是機器碼,右邊是反編譯文本。
![](https://file.elecfans.com/web2/M00/8C/10/poYBAGPaFpGAR9AzAAZJ9NhmHFY935.png)
很顯然,反編譯文本只是按照Ascii對二進制數(shù)據(jù)進行編譯,所以能夠很好地恢復出來。而剩下的因為在Ascii表中沒有對應的編碼,所以也就不能恢復出來。
在扇區(qū)末尾可以很明顯的看到55aa結束標志,而在之間填充的0完全是times 510 - ($-$$) db 0的功勞。如果不以0填充這些區(qū)域,程序拉起后的行為就不一定是我們所能夠預想的。
為了看懂剩下的區(qū)域內容,使用ndisasm進行反編譯。正常來說我們可以得到下列結果,而從7C28到7DFC中間的內容不過是簡單重復,沒有展示出來的必要。
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaFuCAfIGqAAJ5I1tjMnY660.png)
![](https://file.elecfans.com/web2/M00/8C/11/poYBAGPaF3iAKiJpAABgkn3URW0184.png)
首先程序加載到7C00處,從這里進行起跳;
然后數(shù)據(jù)對齊,并調用7C0B的程序;
7C0B命令裝載7c1E起始地址到ax,從1F到22要求端口傳輸字符串。
insb--輸入字符串到端口。
輸入字符串指令(Input String Instruction)。該指令是從某一指定的端口接受一個字符串,并存入一片存儲單元之中。輸入端口由DX指定,存儲單元的首地址和讀入數(shù)據(jù)的個數(shù)分別由ES:DI和CX來確定。在指令的執(zhí)行過程中,還根據(jù)標志位DF對寄存器DI作相應增減。該指令不影響任何標志位。
Outsw—輸出字符串到端口。
輸出字符串指令(Output String Instruction)。該指令是把一個字符串輸入到指定的輸出端口中。輸出端口由DX指定,其輸出數(shù)據(jù)的首地址和個數(shù)分別由DS:SI和CX來確定。在指令的執(zhí)行過程中,還根據(jù)標志位DF對寄存器SI作相應增減。該指令的執(zhí)行不影響任何標志位。
回到7C0E處,從0E到1D內容作用如上文一致,不再解析。
7C0A有一個短跳轉到7C0A,即是要程序在此循環(huán),可是該命令存在空耗計算機資源嫌疑。
至此整個程序解析完畢,而剩余沒有解析的部分希望看客自行查找資料,這對于學習匯編與操作系統(tǒng)有好處。
三、運行環(huán)境搭建
運行環(huán)境使用VBox虛擬機,也可以使用物理機驗證。
Ⅰ.創(chuàng)建虛擬機。
新建
![](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)
最后點擊創(chuàng)建。
Ⅱ.裝載.bin文件到虛擬硬盤。
使用李忠老師開發(fā)的工具。
打開按照如下方式寫入即可。
![](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操作系統(tǒng)在X86上的設計與實現(xiàn)[D].2022.23-24.
-
計算機
+關注
關注
19文章
7494瀏覽量
87978 -
匯編
+關注
關注
2文章
214瀏覽量
25934 -
虛擬機
+關注
關注
1文章
917瀏覽量
28207
發(fā)布評論請先 登錄
相關推薦
評論