seclan のほえほえルーム

| |

・DOS からの OS 判定方法 (1999/06/05 [])
 DOS から OS を判定することができます。それには DOS5 以降から使用することができる Get True Version Number(ファンクション 3306h) を使用します。これを実行すると BL レジスタにメジャーバージョン番号が、BH レジスタにマイナーバージョン番号が返ってきます。Windows NT の場合、バージョン 5.50 が返ってきます。OS/2 v2.1 の場合には、20.10 が返ってきます。これを利用して OS を識別することができます。サンプルプログラムを nasm で書くと次のようになります。

osident.asm
;OS 判定プログラム  (c)1999 seclan
;
;アセンブル&リンク方法
; nasm -f obj osident.asm
; alink -oEXE osident.obj
[segment _TEXT public align=1 class=CODE use16]
..start:
  mov  ax, 3306h    ;Get True Version Number
  int  21h
  
  ;NT? ver=5.50
  mov  dx, ntmes
  cmp  bx, 3205h
  je   dispmes
  
  ;OS/2 ?
  mov  dx, os2mes
  cmp  bl, 20
  jae  dispmes
  
  ;DOS
  mov  dx, dosmes
dispmes:
  mov  ax, cs
  mov  ds, ax
  mov  ah, 9
  int  21h
  
  ;term
  mov  ax, 4c00h
  int  21h
  
ntmes   db  'NT',13,10,'$'
os2mes  db  'OS/2',13,10,'$'
dosmes  db  'DOS',13,10,'$'



by seclan

関連


| |

 

配信

12.04 msec