私は最初のパラメータとして最初のパラメータをとり、サイズを2番目とし、実行時にその範囲をxorにする関数が必要です。どうすればそれを達成できますか?Cのメモリ内のXORバイトはどうですか?
私の素朴なアプローチは、このでした:
void XorMemory(DWORD StartAddress, DWORD dwSize)
{
DWORD *Start = &StartAddress;
DWORD size = StartAddress + dwSize;
DWORD *End = &size;
while(*Start < *End)
{
*Start++ ^= 0x83;
}
}
しかし、それは操作を逆にする必要がある場合、それは失敗します。それを修正するには?
「失敗します。 *何が失敗するのですか? 'DWORD StartAddress'はアドレスではなく、値です。問題を示す[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)も呼び出しコードを表示してください。 –
'StartAddress'と'&size'の狂気の両方を渡して使用する明白な間違ったメソッドのほかに、それぞれの* byte *や 'DWORD'sのシーケンスをxorしようとしていますか?コードは後者を意味しますそれは実際に隠されているメモリの1/4しかないので、かなり哀れなxor-maskingになります。 – WhozCraig
あなたの情報については、これはまったく暗号化ではありません。これを既に知っている場合は、タイトルを言い換えることができます。 –