2011/08/01

EnigmaGroupのSoftwareCrackingレベル14

レベル13はPEファイルじゃなくてMS-DOSの実行ファイルらしく、ImmunityDebuggerは読めないっぽいのでIDA Proで解析してますがIDA Proは便利そうに見えるんですけどまだあんまり使ったことがないのでとりあえずレベル14を挑戦しました。
この実行ファイルはバッチファイルを介してパスワードの入力を求めていました。



まずディスアセンブルするとCreateProcess関数にTempフォルダの「~3F1.bat」というバッチファイルを実行させています。CreateProcess関数は、
BOOL CreateProcess(
  LPCTSTR lpApplicationName,                 // 実行可能モジュールの名前
  LPTSTR lpCommandLine,                      // コマンドラインの文字列
  LPSECURITY_ATTRIBUTES lpProcessAttributes, // セキュリティ記述子
  LPSECURITY_ATTRIBUTES lpThreadAttributes,  // セキュリティ記述子
  BOOL bInheritHandles,                      // ハンドルの継承オプション
  DWORD dwCreationFlags,                     // 作成のフラグ
  LPVOID lpEnvironment,                      // 新しい環境ブロック
  LPCTSTR lpCurrentDirectory,                // カレントディレクトリの名前
  LPSTARTUPINFO lpStartupInfo,               // スタートアップ情報
  LPPROCESS_INFORMATION lpProcessInformation // プロセス情報
);
という形で呼び出します。
普通はlpApplicationNameで実行するファイルを指定しますが、lpApplicationNameをNULLにしてlpCommandLineにコマンドライン的にパラメータを渡すことも出来ます。

呼び出すときのスタックはこうなっていました。
0012FF44   00000000  ....  |ModuleFileName = NULL
0012FF48   00900C00  ..|CommandLine = "cmd.exe /c C:\DOCUME~1\***\LOCALS~1\Temp\~3F2.bat "***\app14\App14.exe""
0012FF4C   00000000  ....  |pProcessSecurity = NULL
0012FF50   00000000  ....  |pThreadSecurity = NULL
0012FF54   00000000  ....  |InheritHandles = FALSE
0012FF58   00000020   ...  |CreationFlags = NORMAL_PRIORITY_CLASS
0012FF5C   00000000  ....  |pEnvironment = NULL
0012FF60   00000000  ....  |CurrentDir = NULL
0012FF64   0040C8F8  @.   |pStartupInfo = App14.0040C8F8
0012FF68   0040C93C  <ノ@.  \pProcessInfo = App14.0040C93C
"cmd.exe"でTempフォルダの"~3F1.bat"というバッチファイルを起動しています。
プログラム内では、"~3F1.bat"を作ってから、隠しファイルに設定していました。
SetFileAttributes関数の第二引数にFILE_ATTRIBUTE_HIDDENを指定すると隠しファイルの属性が与えられます。
BOOL SetFileAttributes(
  LPCTSTR lpFileName,      // ファイル名
  DWORD dwFileAttributes   // 属性
);
FILE_ATTRIBUTE_HIDDENは0x2です。



私は隠しファイルを表示する設定にしていたんですぐに見つけられました。

バッチファイルの中身に特に凝った工夫はなく、パスワードを見つけたので無事ミッションクリアです。

crackingカテゴリのミッションは残り1つとなり、3530ポイントで現在271位となりました。やっと200番代ですね。

0 件のコメント:

コメントを投稿