何らかの形で、アプリケーションがチェックサムをチェックすることで、アプリケーションの変更をチェックすることが可能かどうかに関心があります。アプリケーション自体のチェックサムをチェックする方法は?
ので、例えば:
int main()
{
const std::string checksum = "98123abc1239";
std::string myChecksum = calculateChecksumOfThisApp();
if(checksum != myChecksum)
std::cerr << "This application is invalid. Please check if the download has been successful." << std::endl;
}
明らかに、ここでの問題は、アプリケーションのチェックサムを変更し、自分のアプリケーションをコンパイルし、実行可能ファイルのチェックサムを取得し、私のchecksum
に挿入することです。
私はチェックサムを外部からいくつかのファイルに保存することができましたが、私はexeを操作できない他者の副次的な利益を得たいと思います。彼らはちょうどもう一度チェックサムを計算し、それをチェックサムファイルに入れることができるので、それから何も得られません。
このようなセルフチェックを作成する方法はありますか?
これはあなたにいくつかのアイデアを与えるかもしれません:http://stackoverflow.com/a/16349686/4323 - おそらくあなたは自己チェックサムの前にチェックサムをゼロで上書きする方法を整理することができます。 –
そのポイントは何ですか?あなたのバイナリを混乱させる人が心配している場合、これは文字通り何もしません。アプリケーションを変更する機能を持つ人は、チェックサムを再計算するだけでもか、このチェックを完全にスキップすることができます。 – Cubic
@キュービックの良い点。おそらく、チェックサムがアプリケーションの外部で計算され、おそらく定期的にチェックサムを計算し、それを初期の予想されるチェックサムと照合する方が良いでしょう。 – akaHuman