进入保护模式(四)设置一些公用的方法
2019獨角獸企業重金招聘Python工程師標準>>>
一、下雨
????????最近一直在下雨,對于這樣的天氣真是厭煩,但也沒辦法,是不?夏天到是期盼,可以降溫,這個季節太冷。
????????這算是第三次拿起這本書,希望在年前能夠看完。
????????最近除去工作也算很忙,上下班路上看看文學小說,還有就是這個第三次打算看完的書。因為地點是在有點遠,玩個游戲手機電池經不住,所以就這樣了;看這本書是因為這次算是有督促,所以這次不想中途放棄。
二、言歸正傳
??????? 第三次看的技術書是《x86實模式到保護模式》,希望這次能夠看完。當然是抄書了,不知道什么時候養的習慣
??????? 書中介紹的如何調用系統API的一個實現。
??????? 在保護模式中想要訪問代碼,就要知道 選擇子+偏移量 這個就是目的地的地址,不然怎么坐車都不知道
???????下面是一個程序的頭部,在頭部偏移0x28的地方有個表,記錄的是當前程序要用到的系統提供的函數?
???????????????????????????????????????????????????????????????????????? 函數名的長度是256個字節???????
;=============================================================================== SECTION header vstart=0program_length dd program_end ;程序總長度#0x00head_len dd header_end ;程序頭部的長度#0x04stack_seg dd 0 ;用于接收堆棧段選擇子#0x08stack_len dd 1 ;程序建議的堆棧大小#0x0c;以4KB為單位prgentry dd start ;程序入口#0x10 code_seg dd section.code.start ;代碼段位置#0x14code_len dd code_end ;代碼段長度#0x18data_seg dd section.data.start ;數據段位置#0x1cdata_len dd data_end ;數據段長度#0x20;-------------------------------------------------------------------------------;符號地址檢索表salt_items dd (header_end-salt)/256 ;#0x24salt: ;#0x28PrintString db '@PrintString'times 256-($-PrintString) db 0TerminateProgram db '@TerminateProgram'times 256-($-TerminateProgram) db 0ReadDiskData db '@ReadDiskData'times 256-($-ReadDiskData) db 0header_end:在系統中也有個表記錄的是 系統提供的函數名、偏移量、選擇子
????????????????????????????????當加載程序的時候就在這個表中匹配字符串
??????????????????????????????? 把加載的程序名用偏移量+選擇子替換掉了,那么程序就可以飛了
??????????????????????????????? 參數傳遞要么寄存器、要么共有的堆棧了
;符號地址檢索表salt:salt_1 db '@PrintString'times 256-($-salt_1) db 0dd put_stringdw sys_routine_seg_selsalt_2 db '@ReadDiskData'times 256-($-salt_2) db 0dd read_hard_disk_0dw sys_routine_seg_selsalt_3 db '@PrintDwordAsHexString'times 256-($-salt_3) db 0dd put_hex_dworddw sys_routine_seg_selsalt_4 db '@TerminateProgram'times 256-($-salt_4) db 0dd return_pointdw core_code_seg_selsalt_item_len equ $-salt_4salt_items equ ($-salt)/salt_item_len?
????
???????
轉載于:https://my.oschina.net/findurl/blog/185412
總結
以上是生活随笔為你收集整理的进入保护模式(四)设置一些公用的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [大數據、Big Data、巨量資料、海
- 下一篇: 关于dell - R710的磁盘管理