日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进入保护模式(四)设置一些公用的方法

發布時間:2025/3/20 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进入保护模式(四)设置一些公用的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

總結

以上是生活随笔為你收集整理的进入保护模式(四)设置一些公用的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。