青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Ay's Blog@CNSSUESTC

關于jmp相對跳的一道程序分析

夜深人靜,嘿嘿 ? 只有這個時候才有時間靜下來看點東西

前幾天在看 16 位匯編語言程序設計 ? 王爽 老師寫的 ? 寫得真的很好 ? 呵呵 ? 不是賣廣告哈 資源共享嘛

遇到一個問題 ? 通過這個問題發現能深刻理解到 jmp 指令很具內涵的一些內容

甚歡 乃著此文以記之

?

程序如下:

assume cs:codesg

codesg segment

?? mov ax,4c00h

?? int 21h

start :

?? mov ax,0

s:

?? nop

?? nop

?? mov di,offset s 這里應該是計算 s 對于 segment 處的偏移量,賦值給 di

?? mov si,offset s2 計算 s2 對于 segment 處的偏移,保存到 si

?? mov ax , cs:[si]? s 處的 1 個字節指令內容讀入 ax (注意,基址是 cs ~ 不是 ds

?? mov cs:[di],ax?? ax 內容寫到 s 處,也就是填充上邊那 2 nop

s0:

?? jmp short s ;跳到 s ,那么這個時候位于 s 處指令應該是 jmp s1 ;接著執行應該是 mov ax 0 然后 int 21

s1:

?? mov ax,0

?? int 21h??

?? mov ax,0

s2:?

?? jmp short s1

?? nop

codesg ends

end start

?

?

結果發現我推測的跟執行的內容完全不一樣 …… 暈厥 ING~

又過了一天 一覺醒來想了想這個結果 哈哈 恍然大悟

?

書上的例子用的是 windows 自帶的 debug 調試 …… 我也只會用這個了 …… windbg 太麻煩 od 好像只能開 32 位的

只能截圖看了

ab.bmp

jmp 指令在被編譯器編譯的時候會自動計算跳轉時指針與目的地址的偏移量 然后通過加減 ip 這個數值實現跳轉的

也就是說 jmp s 這指令實現的是相對位移跳轉,跳到哪那是編譯器編譯的時候就計算好的了

我們來看看 1814 0016 這個地方的 jmp 指令 EBF0 這個指令對應的匯編語句應該是 jmp s

S 是在 1814 0008 所以反編譯的結果是 jmp 0008? 沒錯 跟我們的語句沒出入

那么我們可以看看機器碼 BEF0? BE jmp 指令 F0 代表相對位移 以補碼形式保存

那么我們計算下發現 F0 對應的 10 進制是 -16 也就是說要往后跳 16 個字節(注意是字節, 8bit 一個字節哦 ~

1814 0016 這個是我們執行到 jmp cs ip 的地址,也就是取指令的地址

注意這個時候我們已經取出 jmp s 這個指令了 那么 IP 指針應該 +2 指向 1814 0018 這個位置了

往后跳 16 個字節 1814 0018 – 10 10 進制就是 16 咯) = 1814 0008

應該是跳到 0008 這個位置上了 正好就是 s 對應的位置

那么我們看看 1814 0020 這個指令 EBF6? F6 是跳轉的相對位移 補碼形式存放 換算成 10 進制就是 -10

想象下當程序執行到 s0 那個時候 s 處的那 2 nop 指令已經被填充成 EBF6 ? 根據相對位移的計算

? 這個時候程序運行的步驟應該是

通過 jmp s 跳轉到 1814 0008 地址(這個時候下一個指令對應的機器碼是 BEF0

取出下一個指令 IP+2? 這個時候 IP 指向 1814 000a

執行 BEF6 這個指令(向后跳 10 個字節)

也就是應該跳到 1814 000a – a 10 16 進制表示) = 1814 0000

也就是說這個時候 jmp 指令應該是 jmp 0000 跳到 segment 開始處而不是跳到 s1 處了

接著應該是執行

?? mov ax,4c00h

?? int 21h

實際調試的結果也是這樣的

如下圖示

?

sa.bmp

看到沒 ? 執行 jmp 0008 也就是 jmp s 以后然后就是跳到 1814 0000 而不是跳到 s1 對應的那個偏移處

接著就是跟我們想的一樣 執行了 mov ax 4c 00h 然后就 int 21h

aabb.bmp

?

也就是說我們 jmp 的地址記錄的是相對偏移量 這個程序也說明了 jmp 的地址是在運行時計算出來的而不是編譯器一開始就硬編碼進去的

不過當然也有硬編碼進去的跳轉指令啦 ~~ 好像是 jmp far 地址吧 忘了的說 呵呵 ?

只不過小小闡明下 jmp 相對跳的執行流程和細節部分

這樣也有個小小啟示就是以后用相對跳的時候小心咯 貌似 shellcode 編寫或者改內核代碼的時候可以注意下 呵呵

跳轉的相對地址最好計算出來表直接就來個偏移 ? 一不小心機子就當掉了 ? 哇咔咔 ~

?

posted on 2009-02-13 02:11 __ay 閱讀(1685) 評論(2)  編輯 收藏 引用 所屬分類: 操作系統&&內核

Feedback

# re: 關于jmp相對跳的一道程序分析 2009-02-13 09:43 zuhd

理解jmp的時候,只要理解為ip"平移了n byte"而不是"移動到"這樣就不會搞錯了,我也是uestc的,不過畢業2年了,我郵箱:huhf#21mmo.com,大家一起學習  回復  更多評論   

# re: 關于jmp相對跳的一道程序分析 2009-02-13 10:18 __ay

@zuhd
呵呵 校友?幸會幸會~~  回復  更多評論   


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久99爱| 亚洲精品一区二区三区四区高清| 亚洲综合色在线| 欧美一区=区| 欧美1级日本1级| 亚洲视频中文字幕| 男人插女人欧美| 国产欧美日韩在线播放| 亚洲欧洲另类| 久久久亚洲午夜电影| 亚洲免费高清| 老司机午夜精品视频在线观看| 欧美日韩高清在线一区| 激情六月综合| 欧美在线三区| 一区二区三区欧美| 欧美jizzhd精品欧美巨大免费| 亚洲欧洲日本在线| 99xxxx成人网| 欧美日韩精品是欧美日韩精品| 亚洲一级特黄| 在线视频亚洲欧美| 欧美日韩久久| 在线播放视频一区| 久久久久久9| 欧美一区二区三区四区在线观看 | 亚洲欧洲在线观看| 久久av二区| 老司机午夜精品视频在线观看| 99国产一区二区三精品乱码| 欧美.www| 国产精品一二三四区| 亚洲图片激情小说| 野花国产精品入口| 尤物九九久久国产精品的特点 | 久久先锋影音av| 欧美一区二区视频在线| 亚洲精品一区二区三区av| 亚洲第一主播视频| 欧美韩日一区二区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久在线播放| 欧美在线一级视频| 欧美日本高清视频| 在线中文字幕一区| 亚洲视频网在线直播| 伊人久久久大香线蕉综合直播| 日韩一级免费观看| 亚洲激情中文1区| 亚洲欧洲午夜| 尤物精品在线| 久久超碰97人人做人人爱| 在线观看日韩www视频免费 | 葵司免费一区二区三区四区五区| 久久久亚洲成人| 亚洲国产精品美女| 一本色道88久久加勒比精品| 亚洲国产精品成人精品| 久久国产精品久久久| 久久精品亚洲| 欧美日韩一区二区在线| 欧美激情免费在线| 国产精品美女一区二区在线观看| 久久一区视频| 国产一区清纯| 亚洲激情av在线| 亚洲精品国久久99热| 另类av一区二区| 欧美激情精品久久久六区热门| 亚洲成色999久久网站| 日韩午夜在线播放| 一区二区三区久久久| 欧美三级视频在线| 免费亚洲视频| 国产精品亚洲综合色区韩国| 欧美黄色影院| 亚洲美女免费精品视频在线观看| 亚洲欧美日韩天堂| 亚洲精品色婷婷福利天堂| 女仆av观看一区| 91久久亚洲| 亚洲一区精彩视频| 国产麻豆午夜三级精品| 欧美在线看片a免费观看| 99re国产精品| 国产精品黄视频| 亚洲经典三级| 午夜精品福利一区二区三区av| 欧美v国产在线一区二区三区| 亚洲欧美日韩网| 欧美日韩一级大片网址| 亚洲天堂男人| 久久综合狠狠综合久久激情| 亚洲激情国产精品| 欧美日韩免费观看一区三区| 亚洲一区二区在线观看视频| 亚洲视频精品| 国产婷婷色一区二区三区四区| 亚洲小视频在线观看| 久久久精品动漫| 日韩视频一区| 国产尤物精品| 欧美精品色综合| 亚洲精品一二三区| 久久精品99国产精品| 最新国产拍偷乱拍精品| 国产精品人人做人人爽人人添| 久久精品欧美日韩精品| 日韩一级不卡| 欧美二区视频| 亚洲国产一成人久久精品| 欧美日一区二区在线观看 | 老司机一区二区| 亚洲在线观看| 91久久在线播放| 国产一区二区按摩在线观看| 欧美亚洲视频一区二区| 亚洲国产清纯| 亚洲午夜精品久久久久久浪潮| 国产一区视频网站| 欧美日韩三级电影在线| 久久综合激情| 欧美一区午夜视频在线观看| 日韩一区二区免费看| 欧美/亚洲一区| 久久影音先锋| 欧美一区二区三区视频免费| 一区二区三区国产精华| 亚洲国产精品久久久久婷婷老年 | 狠久久av成人天堂| 久久夜色精品国产亚洲aⅴ| 亚洲高清视频一区二区| 久久精品国产亚洲一区二区三区 | 亚洲综合精品四区| 亚洲伦理网站| 18成人免费观看视频| 国产又爽又黄的激情精品视频| 国产精品老女人精品视频| 欧美日韩国产区一| 欧美激情一区二区三区全黄 | 亚洲精品在线免费| 欧美激情亚洲自拍| 欧美大片第1页| 免费成人在线视频网站| 免费成人高清视频| 美国十次成人| 欧美va天堂在线| 欧美激情一区二区三区在线视频观看| 久久免费午夜影院| 久久久免费精品视频| 久久女同互慰一区二区三区| 久久精品人人做人人爽| 久久一区亚洲| 亚洲电影免费观看高清完整版在线观看 | 影音先锋日韩精品| 国外成人在线视频| 在线观看日韩欧美| 亚洲激情网址| 99www免费人成精品| 一区二区三区精品在线| 亚洲欧美综合国产精品一区| 亚洲欧美日韩在线一区| 久久精品99| 欧美夫妇交换俱乐部在线观看| 欧美高清免费| 亚洲美女在线视频| 亚洲一区在线看| 久久精品日韩欧美| 欧美激情一区二区三区四区| 欧美三级网址| 国产一区999| 亚洲美女区一区| 亚洲欧美日韩精品在线| 久久野战av| 日韩系列在线| 欧美一区二区在线播放| 免费欧美在线| 国产精品入口尤物| 亚洲大胆视频| 亚洲一区影院| 欧美成人按摩| 亚洲在线观看免费视频| 快播亚洲色图| 国产日韩欧美综合精品| 亚洲欧洲一区二区天堂久久| 亚洲欧美怡红院| 欧美黄在线观看| 亚洲欧美综合| 欧美日韩亚洲一区在线观看| 国内精品视频666| 亚洲无人区一区| 亚洲成色777777女色窝| 欧美 日韩 国产精品免费观看| 亚洲精选成人| 久久免费国产精品1| 国产精品久久一卡二卡| 日韩天堂在线视频| 免费视频亚洲| 欧美在线一二三区| 国产精品久久亚洲7777|