シェルコードに不良文字を設定する場合、\ x00と\ x0aを不良としてマークする必要があると想定することの欠点はありますか?
シェルコードの場合、潜在的な問題はサイズの制約だけです。しかし、ヌルバイトが悪いと仮定するのは悪い習慣です。実行可能なpoppop ret/ROPアドレスはnullバイトで始まるだけなので、クラッシュは悪用できないと誤解するかもしれません。
正確な不良バイトを特定するのにそれほど時間はかかりません。シェルコードのトラブルシューティングが必要な場合に時間を節約できるため、常にそれを行うことをお勧めします。
NULLと改行は常に悪い文字であるため、一般的ではありません。ただし、コードのサイズは大きくなります。私はこれを自動化しません。
たとえば、IA32アセンブラでは、命令を置き換えることができます
B8 01000000 MOV EAX,1 // Set the register EAX to 0x000000001
と
33C0 XOR EAX,EAX // Set the register EAX to 0x000000000
40 INC EAX // Increase EAX to 0x00000001
これにより、エンコードに必要なバイト数はさらに少なくなりますが、一般に、不良文字の数が増えるにつれて、文字を置き換えるのは面倒になります。