ハードコーディングされた文字列をバイナリから抽出できることを発見しました。
たとえば、Process Explorerのプロパティ ビューには、3 文字を超えるすべての文字列が表示されます。
これは、単純にテストするために作成した単純な実行可能ファイルのコードです。
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
_TCHAR* hiddenString1 =_T("4537774B-CC80-4eda-B3E4-7A9EE77991F5");
_TCHAR* hiddenString2 =_T("hidden_password_or_whatever");
for (int i= 0; i<argc; i++) {
if (0 == _tcscmp(argv[i],hiddenString1)) {
_tprintf (_T("The guid argument is correct.\n")); }
else if (0 == _tcscmp(argv[i],hiddenString2)) {
_tprintf (_T("Do something here.\n")); }
}
_tprintf (_T("This is a visible string.\n"));
//Keep Running
Sleep(60000);
return 0;
}
文字列は、対応する実行可能ファイルから明確に抽出できます。
文字列を見つけるのは少し簡単すぎると思います。
私の質問は次のとおりです。
- 実行可能ファイルでhiddenString1またはhiddenString2を単純に非表示にする方法は?
- あいまいな隠し入力よりも「チートコード」を使用する安全な方法はありますか?