アイジア

CTF, 情報セキュリティの学んだことメモ

crkme03

http://doomo.xyz/crack/crkme03.exe

f:id:favoritte15:20180712091833p:plain

01~02aまでにあったGetWindowTextAの代わりにGetDlgItemTextAで入力文字列を取得している。

f:id:favoritte15:20180712092216p:plain

その直後の処理を見ていく。今回はプログラミング言語風に書いてみる。

ESI = (入力文字列);

ECX = 0;

EDI = "vP12NGgoQa";

while(ECX < 0x0B){

    AL = EDI[ECX];

    EBX = ECX && 1;

    AL += EBX;

    if(strcmp(ESI[ECX], AL)){

         //不正解処理へ

     }

    ECX++;

}

//正解処理へ

 

 

"vP12NGgoQa"の各文字列のアスキーコードに対して1,3,5,7,9番目の文字に+0(そのまま)2,4,6,8,10番目の文字に+1する処理のようだ。

vP12NGgoQa = 76 50 31 32 4e 47 67 6f 51 61

                             ↓

         76 51 31 33 4e 48 67 70 51 62

                             ↓

                           vQ13NHgpQb