出力に影響を与える宣言ラベルの位置

ペンギン2048

文字列を出力するアセンブリプログラムを作成しました。

[org 0x7c00]

mov bx, HELLO_MSG

HELLO_MSG:
db "Hello World!", 0

mov ah, 0x0e

PRINT:
mov al, [bx]
cmp al, 0
je END
int 0x10
add bx, 0x1
jmp PRINT

END:

jmp $
times 510-($-$$) db 0
dw 0xaa55

nasmを使用してコンパイルすると、次のバイナリが生成されました

BB 12 7C B4 0E 8A 07 3C 00 74 07 CD 10 83 C3 01 EB F3 48 65 6C 6C 6C 6F 20 57 6F 72 6C 64 21 00 EB FE 00 00 .... 00 00 55 AA

qemuエミュレーターを使用した出力は次のとおりです。

「ll」が他の記号に置き換えられていることは明らかです。

明らかなように、「ll」は他の記号に置き換えられます。

ただし、HELLO_MSGラベルをコードの下部に移動するとjmp $、出力のすぐ上になります。その理由がわかりません。

編集:元のコードの「HelloWorld」の代わりにさまざまな文字列を試してみると、次の出力が観察されました

ケース:「HelllloWorld」(追加の「l」に注意)

ゴミの文字はそれらの2バイトにのみ表示されます

ゴミの文字はそれらの2バイトにのみ表示されます

事例:「私たちは神々です」

不思議なことにエラーが消えました!

不思議なことにエラーが消えました!

事例:「私たちは神々です!」(注意 '!')

何も印刷されず、「!」が追加されます  何かひどいことをしましたか?

何も印刷されず、「!」が追加されます 何かひどいことをしましたか?

ケース:「HelloWorld」(注意! '!')

'!'を削除します  再び何かひどいことをしましたか?

'!'を削除します 再び何かひどいことをしましたか?

インタージェイ

実行可能コードの途中に文字列を置きます。したがって、ASCII値は命令オペコードとして扱われ、何らかの操作を実行します。これにより、おそらく一部のバイトが上書きされます。

文字列は、jmp実行されないように、命令の後の最後に配置する必要がありますまたは、jmp文字列の前に命令を追加して、文字列を飛び越えることもできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JavaFX-上記のラベルに影響を与える以下のラベル

分類Dev

1つのUIStepperで2つのラベルに影響を与える方法

分類Dev

UIAppearanceはラベルテキストの色に影響を与えません

分類Dev

兄弟の位置に影響を与えるアニメーション

分類Dev

送信時に特定の行のクラスに影響を与える

分類Dev

入力に影響を与えずに、内部に入力があるラベルのテキストを置き換えます

分類Dev

隣接するdivの位置に影響を与えるdiv内のpタグ

分類Dev

ラベルの幅に影響を与えずにwtf.form_field入力フィールドの幅を制御する方法はありますか?

分類Dev

複数の要素にDOMイベントを追加し、子供のスタイルに影響を与える

分類Dev

Docker-ラベルを使用して起動シーケンスに影響を与える

分類Dev

プロットサイズに影響を与えずにggplotの目盛りラベルを削除するにはどうすればよいですか?

分類Dev

空白:nowrapは内部要素の位置に影響を与えるようです:絶対

分類Dev

:: beforeはFirefoxでもoptgroupラベルに影響を与えています

分類Dev

現在のブランチに影響を与えずに新しいブランチにGitプルする方法は?

分類Dev

GCCの自動ベクトル化は、「収益性が高い」と思われる場合でも、ランタイムに影響を与えません。

分類Dev

マスターに影響を与えずにローカルブランチの履歴を削除する方法

分類Dev

Reactライブラリから子要素のスタイルに影響を与える方法は?

分類Dev

char **の値をループすると、作成時とは異なる値が出力されます。また、printfは出力に影響を与えるようです

分類Dev

GCPDataprocの課金とラベルによる影響について理解する

分類Dev

onfocusイベントを使用して要素に影響を与える

分類Dev

私のテーブル以外にも影響を与えるCSSルール

分類Dev

私のテーブル以外にも影響を与えるCSSルール

分類Dev

divにカーソルを合わせ、別のdivに影響を与える(CSS)

分類Dev

要素にカーソルを合わせて、別の要素に影響を与える

分類Dev

他の要素に影響を与えずにCSSスタイルを変更する

分類Dev

特定のセルに影響を与えるマクロを見つける

分類Dev

他のテストクラスのテストに影響を与えるPowerMock

分類Dev

他の要素に影響を与えるクラスのCSSプロパティ

分類Dev

ページ上の他の要素に影響を与えるJqueryスライダー

Related 関連記事

  1. 1

    JavaFX-上記のラベルに影響を与える以下のラベル

  2. 2

    1つのUIStepperで2つのラベルに影響を与える方法

  3. 3

    UIAppearanceはラベルテキストの色に影響を与えません

  4. 4

    兄弟の位置に影響を与えるアニメーション

  5. 5

    送信時に特定の行のクラスに影響を与える

  6. 6

    入力に影響を与えずに、内部に入力があるラベルのテキストを置き換えます

  7. 7

    隣接するdivの位置に影響を与えるdiv内のpタグ

  8. 8

    ラベルの幅に影響を与えずにwtf.form_field入力フィールドの幅を制御する方法はありますか?

  9. 9

    複数の要素にDOMイベントを追加し、子供のスタイルに影響を与える

  10. 10

    Docker-ラベルを使用して起動シーケンスに影響を与える

  11. 11

    プロットサイズに影響を与えずにggplotの目盛りラベルを削除するにはどうすればよいですか?

  12. 12

    空白:nowrapは内部要素の位置に影響を与えるようです:絶対

  13. 13

    :: beforeはFirefoxでもoptgroupラベルに影響を与えています

  14. 14

    現在のブランチに影響を与えずに新しいブランチにGitプルする方法は?

  15. 15

    GCCの自動ベクトル化は、「収益性が高い」と思われる場合でも、ランタイムに影響を与えません。

  16. 16

    マスターに影響を与えずにローカルブランチの履歴を削除する方法

  17. 17

    Reactライブラリから子要素のスタイルに影響を与える方法は?

  18. 18

    char **の値をループすると、作成時とは異なる値が出力されます。また、printfは出力に影響を与えるようです

  19. 19

    GCPDataprocの課金とラベルによる影響について理解する

  20. 20

    onfocusイベントを使用して要素に影響を与える

  21. 21

    私のテーブル以外にも影響を与えるCSSルール

  22. 22

    私のテーブル以外にも影響を与えるCSSルール

  23. 23

    divにカーソルを合わせ、別のdivに影響を与える(CSS)

  24. 24

    要素にカーソルを合わせて、別の要素に影響を与える

  25. 25

    他の要素に影響を与えずにCSSスタイルを変更する

  26. 26

    特定のセルに影響を与えるマクロを見つける

  27. 27

    他のテストクラスのテストに影響を与えるPowerMock

  28. 28

    他の要素に影響を与えるクラスのCSSプロパティ

  29. 29

    ページ上の他の要素に影響を与えるJqueryスライダー

ホットタグ

アーカイブ