クラッキングの勉強の仕方を教えてください at TECH
[2ch|▼Menu]
76:デフォルトの名無しさん
06/12/09 18:29:55
>>71に基本的に同意なので俺のアプローチ紹介しとく。

exeをデバッガに投げてコード眺めてたら文字列取得関数(lstrlenA)使ってるとこ(004013AF)がある。
これはクサい。という事で関数使ってるループの先頭(00401387)にブレーク仕掛けて適当な文字列入れて
実行してみる。するとブレーク時点で入力したpassを使ってる(BYTE PTR [EBP+EBX-100]が文字列部分)。
ここが判定部分でFA!ということでステップ実行でアルゴリズムを追う。どうやら文字列を1文字づつ読み込み
0x30〜0x39の範囲(ASCIIで'0'〜'9')ならその1文字を変数に格納し10倍(即ち1桁だけ桁上げ)している。
それを文字列の終端まで繰り返す。つまるところ"9247"という文字列が入力されたなら9247という
数字を作りだすアルゴリズムらしい(いわゆるatoiとかstrtol)。そうやって作りだした数値に0x58967452との
xorを取って、その値が0x5BAA6717ならガッメッセージを出す。ここまでわかったら話は簡単。
X ^ 0x58967452 = 0x5BAA6717 を満たすXの10進表記の文字列が正解のPASSだ。
恥ずかしながら俺は論理演算に関する知識が乏しいのでXはコード書いてPCに走査してもらった。
int main(void){
int i;
const int a = 0x58967452;
const int b = 0x5BAA6717;
for(i=0;i<0xFFFFFFFF;i++)if((i^a)==b)printf("%d",i);
return 0;
}
こんな感じ。で、出てきたのがメル欄の数値。
アルゴリズムから考えて文字列に数値以外なら混ぜても大丈夫。
つまり「54df26fsa87sfa4f1」とかでも正解。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5335日前に更新/195 KB
担当:undef