[逆転Crackme]Crackme 2解説+その他


OLLYDBGの逆順

  • GetDlgItemTextA:パラメータnIDで識別されたコントロールの文字列を受信し、2番目のパラメータlpStringに代入する関数
  • .
  • 入力コントロール、例えばボタンコントロールでない場合、ボタンの名前が取得されます.
  • #원래 내용
    UINT GetDlgItemTextA(
    HWND hDlg,
    int nIDDlgItem,
    LPSTR lpString,
    int cchMax );
    
    #올리디버그에서는...
    int cchMax );
    LPSTR lpString,
    int nIDDlgItem,
    HWND hDlg,
    UINT GetDlgItemTextA(
  • hdlg:コントロールを含むダイアログハンドル
  • nlddlgitem:タイトルまたはテキストを検索するためのコントロール識別子
  • lpString:タイトルまたはテキストを受信するためのバッファ
  • CCHDMax:lpstring 指定されたバッファにコピーする文字列の最大長(文字)/文字列の長さが空の値を超えると切り捨てられます.

  • GetDlgItemText関数を解析すると、infiscapというダイアログボックスのハンドル名がhwndに入り、テキストを検索するためのコントロール識別子IDと、タイトルまたはテキストを受信するバッファとなります.lpStringは、指定したバッファにコピーする文字列の最大長(文字)を表すため、最大80文字まで含むカウンタとして解釈できる.

  • hdlgウィンドウの名前と同じaskiコードを使用


  • カウントの合計は80文字しか保存できません.少なくとも切断できます.
    だから….81文字入力

  • 前述したように、全部で80文字しか記入されず、残りはカット状態に保存されています.では、このGetDlgItemTextA関数は最終的に64の制御IDを有し、バッファを介して入力した値を格納する関数になります.したがって、入力値に「HackFun 1」という文字を入れると、GetDlgItemTextA関数を経て、その下にそのまま表示されます.