でEICARテストファイルをアセンブルすることはできません私は、EICARテストファイルを逆アセンブルし、次のコードを得た:はNASM
[org 100h]
pop ax
xor ax,214Fh
push ax
and ax,4140h
push ax
pop bx
xor al,5Ch
push ax
pop dx
pop ax
xor ax,2834h
push ax
pop si
sub [bx],si
inc bx
inc bx
sub [bx],si
jge 0140h
db "EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$"
dec ax
sub cx,[bx+si+2Ah]
私は理解していないが、なぜ私が使用してバックDOSのCOMファイルにそれを組み立てるしようとすると、それは動作しませんnasm -fbin
、それは私に(実行しません)次のような出力が得られます。
X5O!P%@AP[4\PZX54(P^)7CC)7..".EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
NASMで何が問題になったのかを指すポインタはありますか?
PS1:古いA86 Assemblerを使用している場合、それは完全にうまく動作します。
PS2:私はWindows 7 32ビットを使用しています。
おそらくNASMでは、コード内に文字列フィールドがあることを示すORをDATAエリアに移動し、CODEエリアから抑制する一種のディレクティブを作成する必要があります。互換性に関する情報を見つけるには、NASMのマニュアルを参照する必要があります。 –
EICARは自己修正コードなので、文字列をDATAエリアに移動することはできません。そのため、文字列**はアドレス0x1Cで開始し、アドレス0x140で終了する必要があります。 –