5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

パスワードの解読のやり方

1 :うめ:01/09/21 15:53 ID:Id6guLIE
Winknitってののパス解読したいんだけど、いいツールない?

2 :うめ:01/09/21 16:39 ID:L1au.Hq6
しらねー?

3 :うめ:01/09/21 16:40 ID:L1au.Hq6
しらねーの?つかえねーな

4 :うめ:01/09/21 16:40 ID:L1au.Hq6
きいてんの?うんちー!だなってか?

5 :うめ:01/09/21 16:41 ID:L1au.Hq6
俺はDQOか?みたいな

6 :うめ:01/09/21 16:41 ID:L1au.Hq6
ほんと使えねーな御前等。みたいな

7 :うめ:01/09/21 16:42 ID:L1au.Hq6
解析したいってんだろ?早くしろよ。みたいな?

8 :うめ:01/09/21 16:43 ID:L1au.Hq6
おい、てめーらきいてんのかよ?

9 :うめ:01/09/21 16:43 ID:L1au.Hq6
<html>
<head>
<title>書きこみました。</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META content=5;URL=../software/index.htm http-equiv=refresh>

</head>
<body>
書きこみが終わりました。<br>
<br>
画面を切り替えるまでしばらくお待ち下さい。<br>



</body>
</html>

10 :うめ:01/09/21 16:43 ID:L1au.Hq6
さっさと答えろよ?

11 :名無しさん@お腹いっぱい。:01/09/21 16:57 ID:???
2.3回氏ね。

12 :名無しさん@お腹いっぱい。:01/09/21 16:57 ID:???
ツールってナに?
揚げるな!
さげろ!
ばぁ〜かぁ〜

13 :名無しさん@お腹いっぱい。:01/09/21 17:00 ID:???
HAPPYKNIT

14 :うめ:01/09/21 17:03 ID:L1au.Hq6
御前等言いたいことが伝わってこない。ちゃんと教えろってんだろ?

15 :13:01/09/21 17:07 ID:???
HAPPYKNIT←これパス。
旧バージョンのだけど、現バージョンでも通るかも。保証なし。

16 :13:01/09/21 17:14 ID:???
あ、最新バージョンでも同じみたいだよ。今、確認。

17 :Kramer:01/09/21 19:36 ID:???
結構変わってるな。ここも。

18 :うめ:01/09/21 20:27 ID:JO8FpzWw
>>13
てめぇ馬鹿か?つーるがしりてーんだよ
ふんやろう

19 :名無しさん@お腹いっぱい。:01/09/21 20:30 ID:???
迷スレの悪寒

20 :うめ:01/09/21 20:38 ID:JO8FpzWw
早く!御前等士ネーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー!

21 :名無しさん@お腹いっぱい。:01/09/21 20:42 ID:???
!ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーネ士等前御!く早

22 :名無しさん@お腹いっぱい。:01/09/21 21:17 ID:???
つーるか?
バイナリエディタで十分。
C7940H〜を見よ。ご丁寧に「HAPPYKNIT Password」って。
>13は正解。とことん懐石したいんだったら、VCのデバッガ使え。

23 :うめ:01/09/21 21:32 ID:BzRXKkgk
ありがとう。そして今までごめんなさい。


10/4
アメリカ パキスタン・・・とだけ言っておこう

24 :無名:01/09/22 03:42 ID:???
バカなうめを晒しage

25 :バイナリエディタ:01/09/26 08:13 ID:???
物:EdBin V2.14
リンク:http://www.edcom.jp/
尻:EBFEE1 又は EBSE9X

26 :バイナリエディタ:01/09/26 09:00 ID:???
物:EdTex V3.02
リンク:http://www.edcom.jp/
尻:05**2**3*
注):*=任意の半角数字(例:050020030)

27 :必要な小物:01/09/28 07:21 ID:???
16進計算のできる電卓は必要。
暗算できる奴は必要無し。
スタート→プログラム→アクセサリ→電卓
電卓の種類を関数電卓に切替えて使う。

28 :VC++は必要:01/09/28 14:16 ID:???
VC++は必要。今はVer6か?一番安いエディション買え。
それでも一般向けのは2.5万位するから、学割の方を買え。
内容は同じで1万位で買える。学生で無い奴は、近くにうろついてる
学生に小遣いやって買って来てもらえばよい。

29 :うめ:01/09/28 20:43 ID:???
準備中

30 :うめ:01/09/28 20:49 ID:???
そろそろ始めるか?

31 :にくこっぷん:01/09/28 20:54 ID:???
>1の例でやってみよう。

Winkint 手編み作成支援ソフトか。いい趣味してるな>1よ。

実行ファイルはKint.exeなのでこれを調べる。
いきなりデバッガで解析する前に、バイナリエディタで調べてみよう。
パスワードをベタで置いている場合もあるからだ。

この場合アセンブラの知識は無くても、ある程度の傾向を憶えれば、
後は勘だけで見つけられるのだ。
これで見付からない場合に、デバッガを使おう。

32 :にくこっぷん:01/09/28 20:58 ID:???
B6FA4〜
Microsoft Visual C++ Runtime Library

VC++で作られている様だ。
傾向として、パスワードをそのままの形で置いている場合、
このメッセージの前後、及びこれ以降に置いている場合が多い。
ファイル全体としては、中盤以降にこのメッセージがある事が多い。

とにかくPage Up,Downを使い、素早く読み流そう。

33 :にくこっぷん:01/09/28 21:03 ID:???
C78F0〜
本ソフトは体験バージョンになります。
製図・編図の印刷ができません。
機能制限
HAPPYKNIT
Password

おお!気になるメッセージ群。
ここでまた、傾向として、パスワード入力関係のメッセージは、
ほぼ1箇所に集中して置いてある場合が多い。
そしてパスワード自身もその近くにある事が多い。
つまり、「パスワードが違います。」,「登録ありがとう。」等のメッセージ群があれば、
その近辺にパスワードが置かれている場合が多いのだ。

34 :にくこっぷん:01/09/28 21:29 ID:???
結局、見ての通りHAPPYKNITがパスワードであろう事は、簡単に予想できる。

>13も楽々パスワード・ゲットした事だろう。
ゲーム等、個人が作った物にこのパターンが多い。

さらに傾向として、違うソフトでも作者が同じなら、
同じパターンでパスワードは扱われていると言う事。

>25と>26の作者は同じ。よって、>25が解析できたので、
>26の解析は楽勝物だったりするのだ。
つまり、作者名もチェックしておこうって事。

35 :うめ:01/09/28 22:27 ID:???
では、VC++は必要無いって事?

そーんな事はありません。
隠しや暗号化等など、楽しい仕掛けをしてくれているソフトが多いんです。

36 :うめ:01/09/28 22:30 ID:???
準備中

37 :うめ:01/09/28 22:36 ID:???
ここでも見ていてくれ。

http://salad.2ch.net/test/read.cgi?bbs=software&key=987839616&ls=50

38 :ののの:01/09/29 13:32 ID:ylOyU04o
真面目な質問ですが、富士通等のPCに用意されている
「パソコンをふりだしにもどす」CD(リカバリCD)を起動すると
CDを読まず、Symantec Ghostというソフトが起動し、パスワードを聞いて
くるのですが、これのパスワードって何でしょうか。

純正で飼ったのに、聞いてくるし、取り扱い説明書にも何もありませんでした。

39 : sage:01/09/29 14:14 ID:???
上に参ります〜って、ここは地上じゃないかぁ〜。
誰だよageたのは?
このスレは地下200階付近で活動してるんだからさぁ。
ここの住人は目がくらんで、地下の他スレに移住したり、
とにかく下がるまでレスは無いよ。

40 : :01/09/30 13:31 ID:???
sage

41 : :01/09/30 13:37 ID:???
只今地下50階です。まだまだ下がりま〜す。

42 : 移転予告:01/09/30 14:02 ID:???
ageられた場合、以下のスレ等に一時退避する事も検討してます。


パスワードの解読のやり方 (このスレ)
http://salad.2ch.net/test/read.cgi?bbs=software&key=1001055197&ls=50

シェアウェアの、パスワード解析方法
http://salad.2ch.net/test/read.cgi?bbs=software&key=1001581220&ls=50

パスワード解析
http://salad.2ch.net/test/read.cgi?bbs=software&key=1000560540&ls=50

解除キー
http://salad.2ch.net/test/read.cgi?bbs=software&key=1000896591&ls=50

■パスワードクラッカー■
http://salad.2ch.net/test/read.cgi?bbs=software&key=1000345735&ls=50

シェアウェアの・・・
http://salad.2ch.net/test/read.cgi?bbs=software&key=1001230010&ls=50

43 :  :01/09/30 14:28 ID:???
sage

44 : :01/09/30 14:30 ID:???






45 :次回予告:01/09/30 14:36 ID:???
>25のソフトのPassWordの懐石を予定している。
VC++をインストして準備していてくれよな。


 

46 :名無しさん@お腹いっぱい。:01/10/02 16:41 ID:???
先生、VC++インストできました。

47 :うめ:01/10/03 11:00 ID:???
う〜む。良い具合に下がっているな。

48 :うめ:01/10/03 11:05 ID:???
やはり地下100階位になると居心地が良い。

49 :うめ:01/10/03 11:12 ID:???
>31〜>34までの方法は、簡単すぎて解析とは言えんな。
も少し本格的に解析したいね。
でもデバッガの使い方や、アセンブラの意味聞かれるとトーテモ困るのね。
やはり地下深くでやっていて正解かな。

50 :うめ:01/10/03 11:18 ID:???
>25をDLしたかい?
VC++インストしたかい?
そろそろ始まるよ。

51 : :01/10/03 11:22 ID:???


52 :大井 圭一:01/10/03 11:25 ID:???
>25のソフトはバイナリエディタでは、パスワードを見付ける事は出来ない。
作者が意図的に隠している訳である。
こう言う時にVC++のデバッガを使うと、簡単にパスワードを見付けられるのだ。
とは言っても、多少アセンブラの知識は必要となるが、全く大した物では無い。
ある一定の法則と傾向を憶え、後は勘を働かせれば結構何とかなる物だ。

漏れのVC++はVer5だ。今はVer6になっているらしいが、
操作は殆ど同じだろうと思うのでVer5で説明する。

53 :大井 圭一:01/10/03 11:29 ID:???
VC++にedbin.exeを読み込ませ、次の様に操作する。

ビルド→デバックの開始→ステップインで、「〜デバッグ情報がありません」
の表示→「OK」をクリック→下の画面の様になる。

16進数のコードが表示されていない場合は、
コードの所を右クリックして、コードバイトの表示にチェックを入れる事。

⇒ 00440B6C 55 push ebp
00440B6D 8B EC mov ebp,esp
00440B6F 6A FF push 0FFh
00440B71 68 C0 95 47 00 push 4795C0h
00440B76 68 A8 30 44 00 push 4430A8h

黄色の矢印「⇒00440B6C〜」がスタート・アドレスだ。

54 :大井 圭一:01/10/03 11:33 ID:???
ここでデバッガの設定をしておこう。

表示→デバッグウインドウ→レジスタ
でレジスタのウインドウを開く。

表示→デバッグウインドウ→メモリ
でメモリのウインドウを開く。

ここで1つ憶えて欲しい事がある。
数値の格納の方法ですが、インテルとその互換CPUは「逆ワード形式」
を使っています。
例えば、12345678Hと言う数値がメモリに格納されている場合は、
バイト単位に分けて逆に並べて 78,56,34,12 となります。

アドレスの検索の時などに間違え無い様にしましょう。

55 :大井 圭一:01/10/03 11:38 ID:???
では解析を始めてみましょう。

デバッグ→実行
Edbinの画面が表示されるので、次の様に操作する。

ヘルプ→ユーザー登録について→ユーザー登録
登録番号に12345678
使用者名には適当な名前を入れて下さい。
→OKをクリック
「登録番号が不正です。」が表示される。

デバッガに切り替え、次の様に操作する。
デバッグ→ブレーク

Edbinの画面に戻るので、OKをクリック。
再びデバッガの画面に戻る。

56 :大井 圭一:01/10/03 11:40 ID:???
 0045ADA2 FF 15 BC E5 46 00 call dword ptr ds:[46E5BCh]
⇒0045ADA8 85 F6 test esi,esi
 0045ADAA 8B F8 mov edi,eax
 0045ADAC 74 05 je 0045ADB3
 0045ADAE 8B 45 F8 mov eax,dword ptr [ebp-8]
 0045ADB1 89 06 mov dword ptr [esi],eax

黄色の⇒が45ADA8を指しているだろう?
他のウインドウも見てみよう。

57 :大井 圭一:01/10/03 11:43 ID:???
レジスタ・ウインドウ

EAX = 00000001 EBX = 00000030
ECX = 80007688 EDX = 80007690
ESI = 00495F64 EDI = 00810F60
EIP = 0045ADA8 ESP = 006EF218
EBP = 006EF338 EFL = 00000202 CS = 0167
DS = 016F ES = 016F SS = 016F FS = 49EF
GS = 0000 OV=0 UP=0 EI=1 PL=0 ZR=0 AC=0
PE=0 CY=0

58 :大井 圭一:01/10/03 11:46 ID:???
メモリ・ウインドウ  アドレス=6EF218 (ESPの値を設定する。)

006EF218 F4 F8 6E 00 00 00 00 00 01 00 00 00 14 00 00 00 n.............
006EF228 54 F2 6E 00 64 F3 6E 00 A6 18 45 00 14 00 00 00 Tn.dn.ヲ.E.....
006EF238 54 F2 6E 00 14 00 00 00 00 01 00 00 07 1C 45 00 Tn...........E.
006EF248 54 F2 6E 00 F4 F8 6E 00 00 00 00 00 93 6F 98 5E Tn.n.....登録
006EF258 94 D4 8D 86 82 AA 95 73 90 B3 82 C5 82 B7 81 42 番号が不正です。
006EF268 00 00 08 00 02 00 80 00 02 00 EF 45 8C 82 7F 0E ..........・撃..
006EF278 1F 17 BC 01 C1 01 8C 82 86 0E 1F 17 22 01 80 00 ..シ.チ.撃...."...
006EF288 11 00 05 34 AE 82 EB 35 01 00 00 00 97 46 11 00 ...4ョろ5....友..
006EF298 80 00 78 CA 6F 01 00 00 27 00 00 00 C0 C0 C0 40 ..xハo...'...タタタ@
006EF2A8 78 CA 02 00 80 00 C0 82 F5 10 00 00 00 00 97 46 xハ....タ・.....友
006EF2B8 11 00 0D 00 08 08 6F 47 F2 82 15 A9 57 17 00 00 ......oG.ゥW...
006EF2C8 00 00 97 46 11 00 0D 00 08 08 6F 01 00 00 EF 49 ..友......o...・
006EF2D8 00 00 57 16 9F 5B 4F 17 00 00 00 00 97 46 11 00 ..W.歇O.....友..
006EF2E8 0D 00 78 CA 02 00 5A 5B 57 16 04 83 1F 52 2F 17 ..xハ..Z[W....R/.
006EF2F8 11 00 00 00 97 46 78 CA 02 00 6F 01 1A 83 04 76 ....友xハ..o....v
006EF308 2F 17 11 00 00 00 97 46 65 00 00 00 78 CA 02 00 /.....友e...xハ..
006EF318 09 76 6C 83 F4 F8 6E 00 00 00 00 00 01 00 00 00 vl・n.........
006EF328 C8 5E 49 00 0C 08 00 00 00 00 00 00 00 00 00 00 ネ^I.............
006EF338 4C F3 6E 00 F9 AD 45 00 10 0D 71 00 00 00 00 00 Ln.ュE...q.....
006EF348 04 E8 00 00 74 F3 6E 00 49 AE 45 00 10 0D 71 00 ....tn.IョE...q.
006EF358 00 00 00 00 04 E8 00 00 00 00 00 00 10 0D 71 00 ..............q.
006EF368 DC F3 6E 00 30 CB 46 00 00 00 00 00 88 F3 6E 00 ワn.0ヒF.....印n.
006EF378 BF 20 42 00 04 E8 00 00 00 00 00 00 FF FF FF FF ソ B.............
006EF388 E8 F3 6E 00 25 8A 43 00 04 E8 00 00 00 00 00 00 頤n.%海.........
006EF398 F4 F8 6E 00 C8 51 47 00 18 84 D7 09 B0 83 94 12 n.ネQG..・ ーヴ.
006EF3A8 4F 17 50 CB 02 00 99 12 F8 83 28 00 A2 28 F7 BF O.Pヒ....(.「(ソ
006EF3B8 F8 83 6C 81 00 00 00 00 B8 18 4A 00 31 32 33 34 ネ.....ク.J.1234
006EF3C8 35 36 37 38 00 00 00 00 00 00 00 00 00 24 F5 BF 5678.........$ソ

59 :大井 圭一:01/10/03 11:49 ID:???
気になるメッセージがありますよね。

6EF254〜「登録番号が不正です。」
NGパスワード入力時のメッセージ

6EF3C4〜「12345678」
取り合えず入力したパスワード

この2つのメッセージはいつも注目して監視しておきましょう。

60 :大井 圭一:01/10/03 11:54 ID:???
さて、漏れの解析法は効率を上げる為、プログラム全体を解析する様な事はしない。
結果としてパスワードが解かれば良いのだから。

まず現在の状況を説明すると、ユーザー登録で適当なパスワードを入力した。
結果として、「登録番号が不正です。」とのエラーメッセージが発生して、確認の
OKをクリックした所でプログラムを停止している。

そして、メモリ上にNGパスワード入力時のメッセージや、取り合えず入力したパスワード
が残されている事をメモリ・ウインドウにて確認している。

この事からプログラムの流れを逆に辿れば、ここに至った原因。つまり適当に入力した
パスワードが何故に不正と判断されたかの分岐点に行き着く事ができる筈だ。

61 :大井 圭一:01/10/03 11:58 ID:???
プログラムを逆にさかのぼるには、スタックを調べれば解かる。
コード(プログラム)は00400000台から格納されてるので、該当するデータを調べる。
もちろん逆ワード形式で格納されている事を忘れずに。

スタックはESP=006EF218なので、これ以降を見てみる。
スタックはサブルーチンの呼び出しの時、帰りアドレスを通常32Bitつまり4Byte単位で書き込んでいる。
006EF218から後、最も近い位置にある、00400000台の数値を探す。

62 :大井 圭一:01/10/03 12:01 ID:???

006EF218 F4 F8 6E 00 00 00 00 00 01 00 00 00 14 00 00 00 n.............
006EF228 54 F2 6E 00 64 F3 6E 00 A6 18 45 00 14 00 00 00 Tn.dn.ヲ.E.....

「A6 18 45 00」
結局、004518A6が最もあやしい。

63 :大井 圭一:01/10/03 12:04 ID:???
コードのウインドウを左クリックして、次の操作をする。
編集→ジャンプ→アドレス式の入力(4518A6)と入力→ジャンプ→閉じる
下の様になる。

00451886 56 push esi
00451887 57 push edi
00451888 8B 7C 24 0C mov edi,dword ptr [esp+0Ch]
0045188C 8B F1 mov esi,ecx
0045188E 85 FF test edi,edi
00451890 75 04 jne 00451896
00451892 33 C0 xor eax,eax
00451894 EB 07 jmp 0045189D
00451896 57 push edi
00451897 FF 15 28 E3 46 00 call dword ptr ds:[46E328h]
0045189D 57 push edi
0045189E 50 push eax
0045189F 8B CE mov ecx,esi
004518A1 E8 63 FF FF FF call 00451809    ここで呼び出された。
→004518A6 8B C6 mov eax,esi
004518A8 5F pop edi
004518A9 5E pop esi
004518AA C2 04 00 ret 4

64 :大井 圭一:01/10/03 12:09 ID:???

004518A6はルーチンから帰ったアドレス。
つまり1つ前の
004518A1 E8 63 FF FF FF call 00451809
で呼び出されていたのだ。

65 :大井 圭一:01/10/03 12:14 ID:???
さらにこのルーチンも、呼び出されている。(慣れればすぐに解かるが)
前方を見て見ると、
00451886 56     push esi
がこのルーチンのエントリだと解かる。

66 :大井 圭一:01/10/03 12:17 ID:???
ブレーク・ポイントをこのルーチンの先頭(451886)にセットする。

ブレーク・ポイントの設定は00451886の行を左クリック。
その後右クリック「ブレークポイントの挿入/削除」をクリックで設定できる。

以下の様に操作する。
デバッグ→実行
Edbinのユーザー登録画面になるので、そのままOKをクリック

デバッガの画面に戻り、
●00451886 56    push esi
のブレークポイントで止まる。

67 :大井 圭一:01/10/03 12:19 ID:???
00451886でのレジスタ

EAX = 006EF254 EBX = 00000001
ECX = 006EF364 EDX = 0052811C
ESI = 00000100 EDI = 00000014
EIP = 00451886 ESP = 006EF244
EBP = 006EF358 EFL = 00000202 CS = 0167
DS = 016F ES = 016F SS = 016F FS = 0FBF
GS = 0000 OV=0 UP=0 EI=1 PL=0 ZR=0 AC=0
PE=0 CY=0

68 :大井 圭一:01/10/03 12:22 ID:???
00451886でのメモリ
アドレスをESPの値= 006EF244に設定する。

006EF244 07 1C 45 00 54 F2 6E 00 F4 F8 6E 00 00 00 00 00 ..E.Tn.n.....
006EF254 93 6F 98 5E 94 D4 8D 86 82 AA 95 73 90 B3 82 C5 登録番号が不正で
006EF264 82 B7 81 42 00 00 08 00 02 00 80 00 02 00 FF 50 す。...........P
006EF274 8C 82 7F 0E 1F 17 BC 01 C1 01 8C 82 86 0E 1F 17 撃....シ.チ.撃....
006EF284 22 01 80 00 11 00 05 34 AE 82 EB 35 01 00 00 00 "......4ョろ5....
006EF294 BF 51 11 00 80 00 70 F0 6F 01 00 00 27 00 00 00 ソQ....po...'...
006EF2A4 C0 C0 C0 40 70 F0 02 00 80 00 C0 82 F5 10 00 00 タタタ@p.....タ・...
006EF2B4 00 00 BF 51 11 00 0D 00 38 0C 5F 47 F2 82 15 A9 ..ソQ....8._G.ゥ
006EF2C4 57 17 00 00 00 00 BF 51 11 00 0D 00 38 0C 6F 01 W.....ソQ....8.o.
006EF2D4 00 00 BF 0F 00 00 57 16 9F 5B 4F 17 00 00 00 00 ..ソ...W.歇O.....
006EF2E4 BF 51 11 00 0D 00 70 F0 02 00 5A 5B 57 16 04 83 ソQ....p...Z[W...
006EF2F4 1F 52 2F 17 11 00 00 00 BF 51 70 F0 02 00 6F 01 .R/.....ソQp...o.
006EF304 1A 83 04 76 2F 17 11 00 00 00 BF 51 65 00 00 00 ...v/.....ソQe...
006EF314 70 F0 02 00 09 76 6C 83 28 00 9F 01 11 00 00 00 p... vl.(.......
006EF324 BF 51 65 00 69 17 F5 BF 02 00 C0 C0 C0 40 00 00 ソQe.i.ソ..タタタ@..
006EF334 00 40 C0 C0 C0 00 00 00 00 00 00 00 F4 F8 6E 1C .@タタタ.......n.
006EF344 4E 83 AC 01 63 17 F5 BF 00 70 6E 00 00 00 00 00 NΞ.c.ソ.pn.....
006EF354 64 F3 6E 00 74 F3 6E 00 31 AE 45 00 04 E8 00 00 dn.tn.1ョE.....
006EF364 F4 EA 48 00 DC F3 6E 00 30 CB 46 00 00 00 00 00 鶇.ワn.0ヒF.....
006EF374 88 F3 6E 00 BF 20 42 00 04 E8 00 00 00 00 00 00 印n.ソ B.........
006EF384 FF FF FF FF E8 F3 6E 00 25 8A 43 00 04 E8 00 00 ....頤n.%海.....
006EF394 00 00 00 00 F4 F8 6E 00 C8 51 47 00 18 84 D7 09 ....n.ネQG..・
006EF3A4 B0 83 94 12 4F 17 48 F1 02 00 99 12 F8 83 28 00 ーヴ.O.H.....(.
006EF3B4 A2 28 F7 BF 74 C2 6C 81 00 00 00 00 B8 18 4A 00 「(ソtツl.....ク.J.
006EF3C4 31 32 33 34 35 36 37 38 00 00 00 00 00 00 00 00 12345678........

69 : :01/10/03 12:30 ID:???

ん?気が付いたかな?
EAXレジスタの値が、NGメッセージを指し示しているだろう。

EAX = 006EF254
006EF254 93 6F 98 5E 94 D4 8D 86 82 AA 95 73 90 B3 82 C5 登録番号が不正で

70 :大井 圭一:01/10/03 12:33 ID:???

つまり、ブレークポイントを設定した
●00451886 56     push esi
の所では、すでにパスワードはNGと発覚し、
NGメッセージを表示する準備までされている。

00451886のブレークポイントを解除して、
もっと前にさかのぼって調べてみよう。

71 :大井 圭一:01/10/03 12:35 ID:???

ESPの値= 006EF244以降を見てみよう。

006EF244 07 1C 45 00 54 F2 6E 00 F4 F8 6E 00 00 00 00 00

「 07 1C 45 00 」
00451C07 と言うアドレスがいきなり見付かる。
以前にもやった通り、
コードのウインドウを左クリックして、次の操作をする。
編集→ジャンプ→アドレス式の入力(451C07)と入力→ジャンプ→閉じる
下の様になる。

72 :大井 圭一:01/10/03 12:38 ID:???

00451BCB 8B EC mov ebp,esp
00451BCD 81 EC 04 01 00 00 sub esp,104h
00451BD3 56 push esi
00451BD4 BE 00 01 00 00 mov esi,100h
00451BD9 57 push edi
00451BCA 55 push ebp
00451BDA 8D 85 FC FE FF FF lea eax,dword ptr [ebp-104h]
00451BE0 56 push esi
00451BE1 50 push eax
00451BE2 FF 75 08 push dword ptr [ebp+8]
00451BE5 89 4D FC mov dword ptr [ebp-4],ecx
00451BE8 E8 61 00 00 00 call 00451C4E
00451BED 8B F8 mov edi,eax
00451BEF 8B C6 mov eax,esi
00451BF1 2B C7 sub eax,edi
00451BF3 83 F8 02 cmp eax,2
00451BF6 76 18 jbe 00451C10
00451BF8 8B 4D FC mov ecx,dword ptr [ebp-4]
00451BFB 8D 85 FC FE FF FF lea eax,dword ptr [ebp-104h]
00451C01 50 push eax
00451C02 E8 7F FC FF FF call 00451886 ここで呼ばれていたのだ。
→00451C07 33 C0 xor eax,eax
00451C09 85 FF test edi,edi
00451C0B 0F 9F C0 setg al
00451C0E EB 38 jmp 00451C48

73 :大井 圭一:01/10/03 12:40 ID:???

さらにこのルーチンも、呼び出されている。
前方を見て見ると、
00451BCA 55      push ebp
がこのルーチンのエントリだと解かる。

ブレーク・ポイントをこのルーチンの先頭(451BCA)にセットする。

74 :大井 圭一:01/10/03 12:42 ID:???

以下の様に操作する。
デバッグ→実行
Edbinのユーザー登録画面になり、「登録番号が不正です。」のOKをクリック。
登録画面のOKをクリック

デバッガの画面に戻り、
●00451BCA 55       push      ebp
のブレークポイントで止まる。

75 :大井 圭一:01/10/03 12:44 ID:???
ブレークポイント00451BCAでのレジスタ

EAX = 0048EAF4 EBX = 00000001
ECX = 006EF364 EDX = 800081B8
ESI = 00000000 EDI = 006EF8F4
EIP = 00451BCA ESP = 006EF35C
EBP = 006EF374 EFL = 00000246 CS = 0167
DS = 016F ES = 016F SS = 016F FS = 0FBF
GS = 0000 OV=0 UP=0 EI=1 PL=0 ZR=1 AC=0
PE=1 CY=0

76 :大井 圭一:01/10/03 12:46 ID:???

ブレークポイント00451BCAでのメモリ
アドレスをESPの値=006EF35C に設定する。

006EF35C 31 AE 45 00 04 E8 00 00 F4 EA 48 00 DC F3 6E 00 1ョE.....鶇.ワn.
006EF36C 30 CB 46 00 00 00 00 00 88 F3 6E 00 BF 20 42 00 0ヒF.....印n.ソ B.
006EF37C 04 E8 00 00 00 00 00 00 FF FF FF FF E8 F3 6E 00 ............頤n.
006EF38C 25 8A 43 00 04 E8 00 00 00 00 00 00 F4 F8 6E 00 %海.........n.
006EF39C C8 51 47 00 18 84 D7 09 B0 83 94 12 4F 17 48 F1 ネQG..・ ーヴ.O.H.
006EF3AC 02 00 99 12 F8 83 28 00 A2 28 F7 BF 74 C2 6C 81 ....(.「(ソtツl.
006EF3BC 00 00 00 00 B8 18 4A 00 31 32 33 34 35 36 37 38 ....ク.J.12345678

77 :大井 圭一:01/10/03 12:49 ID:???

おや?「登録番号が不正です」のメッセージがメモリから消えている。
確実にプログラムを逆行しているのがわかる。
00451BCAのブレークポイントを解除して、
さらに前に戻ってみよう。

78 :大井 圭一:01/10/03 12:51 ID:???

ESP = 006EF35C
006EF35C 31 AE 45 00 04 E8 00 00 F4 EA 48 00 DC F3 6E 00

「 31 AE 45 00 」
0045AE31 というアドレスが見付かる。

以前と同じく、次の操作をする。
コードのウインドウを左クリックして、
編集→ジャンプ→アドレス式の入力(45AE31)と入力→ジャンプ→閉じる
下の様になる。

79 :大井 圭一:01/10/03 12:53 ID:???

0045AE0F B8 30 CB 46 00 mov eax,46CB30h
0045AE14 E8 2F 37 FE FF call 0043E548
0045AE19 51 push ecx
0045AE1A A1 E0 EA 48 00 mov eax,[0048EAE0]
0045AE1F 89 45 F0 mov dword ptr [ebp-10h],eax
0045AE22 FF 75 08 push dword ptr [ebp+8]
0045AE25 83 65 FC 00 and dword ptr [ebp-4],0
0045AE29 8D 4D F0 lea ecx,dword ptr [ebp-10h]
0045AE2C E8 99 6D FF FF call 00451BCA    ここから呼ばれていた。
→0045AE31 8B 45 10 mov eax,dword ptr [ebp+10h]
0045AE34 83 F8 FF cmp eax,0FFh
0045AE37 75 03 jne 0045AE3C

80 :大井 圭一:01/10/03 12:55 ID:???

さらにこのルーチンも、呼び出されている。
前方を見て見ると、
0045AE0F B8 30 CB 46 00   mov   eax,46CB30h
がこのルーチンのエントリだと解かる。

81 :大井 圭一:01/10/03 12:58 ID:???

ブレーク・ポイントをこのルーチンの先頭(0045AE0F)にセットする。

何回もやるとパターンが解かるだろう。とりあえず以下の様に操作する。
デバッグ→実行
Edbinのユーザー登録画面になり、「登録番号が不正です。」のOKをクリック。
登録画面のOKをクリック

デバッガの画面に戻り、
●0045AE0F B8 30 CB 46 00   mov    eax,46CB30h
のブレークポイントで止まる。

82 :大井 圭一:01/10/03 13:00 ID:???

ブレークポイント0045AE0Fでのレジスタ

EAX = 00000000 EBX = 00000001
ECX = 800081B8 EDX = 800081D0
ESI = 00000000 EDI = 006EF8F4
EIP = 0045AE0F ESP = 006EF378
EBP = 006EF388 EFL = 00000246 CS = 0167
DS = 016F ES = 016F SS = 016F FS = 0FBF
GS = 0000 OV=0 UP=0 EI=1 PL=0 ZR=1 AC=0
PE=1 CY=0

83 :大井 圭一:01/10/03 13:04 ID:???

ブレークポイント0045AE0Fでのメモリ
アドレスをESPの値= 006EF378 に設定する。

006EF378 BF 20 42 00 04 E8 00 00 00 00 00 00 FF FF FF FF ソ B.............
006EF388 E8 F3 6E 00 25 8A 43 00 04 E8 00 00 00 00 00 00 頤n.%海.........
006EF398 F4 F8 6E 00 C8 51 47 00 18 84 D7 09 B0 83 94 12 n.ネQG..・ ーヴ.
006EF3A8 4F 17 48 F1 02 00 99 12 F8 83 28 00 A2 28 F7 BF O.H.....(.「(ソ
006EF3B8 74 C2 6C 81 00 00 00 00 B8 18 4A 00 31 32 33 34 tツl.....ク.J.1234
006EF3C8 35 36 37 38 00 00 00 00 00 00 00 00 00 24 F5 BF 5678.........$ソ

84 : :01/10/03 13:11 ID:???

かなり核心に近付いて来たようだ。
何故かって?それはESPの値と入力した仮のパスワード「12345678」
の位置がかなり近付いているからだ。

85 :大井 圭一:01/10/03 13:16 ID:???

ESP = 006EF378
006EF378 BF 20 42 00 04 E8 00 00 00 00 00 00 FF FF FF FF

「BF 20 42 00 」
004220BF と言うアドレスが見付かる。多分ここから呼び出されているのだろう。

86 :大井 圭一:01/10/03 13:18 ID:???

もうここまで何度もやると、次にやる事は解かるよな?
0045AE0Fのブレークポイントを解除して、
毎度同じく、次の操作をする。
コードのウインドウを左クリックして、
編集→ジャンプ→アドレス式の入力(4220BF)と入力→ジャンプ→閉じる
下の様になる。

87 :大井 圭一:01/10/03 13:20 ID:???

00422073 55 push ebp
00422074 8B EC mov ebp,esp
00422076 81 7D 08 07 E8 00 00 cmp dword ptr [ebp+8],0E807h
0042207D 75 29 jne 004220A8
0042207F 33 C0 xor eax,eax
00422081 68 10 10 00 00 push 1010h
00422086 39 05 64 DC 49 00 cmp dword ptr ds:[49DC64h],eax
0042208C 68 E4 E5 48 00 push 48E5E4h
00422091 75 07 jne 0042209A
00422093 68 84 E5 48 00 push 48E584h
00422098 EB 05 jmp 0042209F
0042209A 68 20 E5 48 00 push 48E520h
0042209F 50 push eax
004220A0 FF 15 BC E5 46 00 call dword ptr ds:[46E5BCh]
004220A6 5D pop ebp
004220A7 C3 ret
004220A8 33 C0 xor eax,eax
004220AA 39 45 0C cmp dword ptr [ebp+0Ch],eax
004220AD 75 03 jne 004220B2
004220AF 89 45 0C mov dword ptr [ebp+0Ch],eax
004220B2 6A FF push 0FFh
004220B4 FF 75 0C push dword ptr [ebp+0Ch]
004220B7 FF 75 08 push dword ptr [ebp+8]
004220BA E8 50 8D 03 00 call 0045AE0F ここから呼ばれていたんだ。
→004220BF 5D pop ebp
004220C0 C3 ret

88 :大井 圭一:01/10/03 13:22 ID:???


さらにこのルーチンも、呼び出されている。
前方を見て見ると、
00422073 55      push    ebp
がこのルーチンのエントリだと解かる。

89 :大井 圭一:01/10/03 13:24 ID:???

ブレーク・ポイントをこのルーチンの先頭( 00422073 )にセットする。

いい加減コピペも飽きて来た。以下の様に操作してちょ。
デバッグ→実行
Edbinのユーザー登録画面になり、「登録番号が不正です。」のOKをクリック。
登録画面のOKをクリック

デバッガの画面に戻り、
●00422073 55      push    ebp
のブレークポイントで止まる。

90 :大井 圭一:01/10/03 13:33 ID:???

ブレークポイント00422073でのレジスタ

EAX = 00000008 EBX = 00000001
ECX = 800081D0 EDX = 800081B8
ESI = 00000000 EDI = 006EF8F4
EIP = 00422073 ESP = 006EF38C
EBP = 006EF3E8 EFL = 00000202 CS = 0167
DS = 016F ES = 016F SS = 016F FS = 0FBF
GS = 0000 OV=0 UP=0 EI=1 PL=0 ZR=0 AC=0
PE=0 CY=0

91 :大井 圭一:01/10/03 13:35 ID:???

ブレークポイント00422073でのメモリ
アドレスをESPの値= 006EF38C に設定する。

006EF38C 25 8A 43 00 04 E8 00 00 00 00 00 00 F4 F8 6E 00 %海.........n.
006EF39C C8 51 47 00 18 84 D7 09 B0 83 94 12 4F 17 48 F1 ネQG..・ ーヴ.O.H.
006EF3AC 02 00 99 12 F8 83 28 00 A2 28 F7 BF 74 C2 6C 81 ....(.「(ソtツl.
006EF3BC 00 00 00 00 B8 18 4A 00 31 32 33 34 35 36 37 38 ....ク.J.12345678

92 :大井 圭一:01/10/03 13:37 ID:???

パスワードのアドレスは006EF3C4か。憶えておこう。
もうそろそろパスワード関連ルーチンがでて来るぞ。
00422073のブレークポイントを解除しよう。

93 :大井 圭一:01/10/03 13:39 ID:???

ESP = 006EF38C
006EF38C 25 8A 43 00 04 E8 00 00 00 00 00 00 F4 F8 6E 00

「25 8A 43 00 」
00438A25 と言うアドレス発見

94 :大井 圭一:01/10/03 13:41 ID:???

いい加減飽きたと思いながら、次の操作をする。
コードのウインドウを左クリックして、
編集→ジャンプ→アドレス式の入力(00438A25)と入力→ジャンプ→閉じる
下の様になる。

95 :大井 圭一:01/10/03 13:43 ID:???

004389C6 B8 88 BD 46 00 mov eax,46BD88h
004389CB E8 78 5B 00 00 call 0043E548
004389D0 83 EC 3C sub esp,3Ch
004389D3 A1 E0 EA 48 00 mov eax,[0048EAE0]
004389D8 56 push esi
004389D9 57 push edi
004389DA 8B F9 mov edi,ecx
004389DC 89 45 F0 mov dword ptr [ebp-10h],eax
004389DF 33 F6 xor esi,esi
004389E1 6A 11 push 11h
004389E3 8D 45 DC lea eax,dword ptr [ebp-24h]
004389E6 56 push esi
004389E7 50 push eax
004389E8 89 75 FC mov dword ptr [ebp-4],esi
004389EB E8 90 63 00 00 call 0043ED80
004389F0 83 C4 0C add esp,0Ch
004389F3 8D 45 DC lea eax,dword ptr [ebp-24h]
004389F6 8B CF mov ecx,edi
004389F8 6A 11 push 11h
004389FA 50 push eax
004389FB 6A 65 push 65h
004389FD E8 94 80 01 00 call 00450A96
00438A02 83 F8 09 cmp eax,9
00438A05 74 05 je 00438A0C
00438A07 83 F8 06 cmp eax,6
00438A0A 75 0E jne 00438A1A
00438A0C 8D 45 DC lea eax,dword ptr [ebp-24h]
00438A0F 50 push eax
00438A10 E8 FD 97 FE FF call 00422212
00438A15 85 C0 test eax,eax
00438A17 59 pop ecx
00438A18 75 0F jne 00438A29
00438A1A 56 push esi
00438A1B 68 04 E8 00 00 push 0E804h
00438A20 E8 4E 96 FE FF call 00422073
→00438A25 59 pop ecx
00438A26 59 pop ecx
00438A27 EB 4B jmp 00438A74

96 :大井 圭一:01/10/03 13:46 ID:???

さらにこのルーチンも、呼び出されている。
前方を見て見ると、
004389C6 B8 88 BD 46 00 mov      eax,46BD88h
がこのルーチンのエントリだと解かる。

97 :大井 圭一:01/10/03 13:48 ID:???
ブレーク・ポイントをこのルーチンの先頭( 00422073 )にセットする。

デバッグ→実行
Edbinのユーザー登録画面になり、「登録番号が不正です。」のOKをクリック。
登録画面のOKをクリック

デバッガの画面に戻り、
●004389C6 B8 88 BD 46 00     mov    eax,46BD88h
のブレークポイントで止まる。

98 :大井 圭一:01/10/03 13:50 ID:???

ブレークポイント004389C6でのレジスタ

EAX = 00474308 EBX = 00000001
ECX = 006EF8F4 EDX = 00000000
ESI = 004751C8 EDI = 006EF8F4
EIP = 004389C6 ESP = 006EF3EC
EBP = 006EF3F8 EFL = 00000246 CS = 0167
DS = 016F ES = 016F SS = 016F FS = 0FBF
GS = 0000 OV=0 UP=0 EI=1 PL=0 ZR=1 AC=0
PE=1 CY=0

99 :大井 圭一:01/10/03 13:52 ID:???

ブレークポイント004389C6でのメモリ
アドレスをESPの値= 006EF3EC に設定する。

006EF3EC 0A 0F 45 00 C8 51 47 00 11 01 00 00 28 F4 6E 00 ..E.ネQG.....(n.
006EF3FC 97 10 45 00 F4 F8 6E 00 01 00 00 00 00 00 00 00 ..E.n.........
006EF40C 10 D5 43 00 00 00 00 00 0C 00 00 00 00 00 00 00 .ユC.............
006EF41C 00 00 00 00 F4 F8 6E 00 01 00 00 00 4C F4 6E 00 ....n.....Ln.

100 :大井 圭一:01/10/03 13:56 ID:???
100ゲット!!!って

おっ。おいっ!入力したパスワードが消えてるぞ。
チェックルーチンはここのブレークポイント以降に有りそうだ。
この一帯のプログラム調べてみよう。

101 :大井 圭一:01/10/03 13:59 ID:???
● 004389C6 B8 88 BD 46 00   mov   eax,46BD88h
004389CB E8 78 5B 00 00   call   0043E548
004389D0 83 EC 3C   sub   esp,3Ch

パスワードの処理となると、サブルーチンとしてCALLしているだろう。
そこでCALL命令の次まで実行して、レジスタやメモリの変化を観察してみよう。

とりあえず、 004389D0 まで実行。やり方は、 004389D0 の行を左クリックした後、
右クリック。「カーソル行の前まで実行」をクリックする。

うーん大した変化無し。
次行ってみよう。

102 :大井 圭一:01/10/03 14:03 ID:???

004389D3 A1 E0 EA 48 00   mov   eax,[0048EAE0]
004389D8 56   push   esi
004389D9 57   push   edi
004389DA 8B F9   mov   edi,ecx
004389DC 89 45 F0   mov   dword ptr [ebp-10h],eax
004389DF 33 F6   xor   esi,esi
004389E1 6A 11   push   11h
004389E3 8D 45 DC   lea   eax,dword ptr [ebp-24h]
004389E6 56   push   esi
004389E7 50   push   eax
004389E8 89 75 FC   mov   dword ptr [ebp-4],esi
004389EB E8 90 63 00 00   call   0043ED80
004389F0 83 C4 0C   add   esp,0Ch

004389F0まで実行しよう。やり方は同じだ。

103 :大井 圭一:01/10/03 14:06 ID:???

やはりメモリにはパスワードは現れない。おや?レジスタが変だぞ。

EAX = 006EF3C4 EBX = 00000001
ECX = 00000000 EDX = 00000000
ESI = 00000000 EDI = 006EF8F4
EIP = 004389F0 ESP = 006EF38C
EBP = 006EF3E8 EFL = 00000246 CS = 0167
DS = 016F ES = 016F SS = 016F FS = 0FBF
GS = 0000 OV=0 UP=0 EI=1 PL=0 ZR=1 AC=0
PE=1 CY=0

104 :大井 圭一:01/10/03 14:09 ID:???

「EAX = 006EF3C4」!!
これって確かパスワードが格納されていたアドレス。
期待して次に進もう。

105 :大井 圭一:01/10/03 14:11 ID:???

004389F3 8D 45 DC   lea   eax,dword ptr [ebp-24h]
004389F6 8B CF   mov   ecx,edi
004389F8 6A 11   push   11h
004389FA 50   push  eax
004389FB 6A 65   push   65h
004389FD E8 94 80 01 00  call   00450A96
00438A02 83 F8 09   cmp   eax,9

00438A02 までを実行して見よう。

106 :大井 圭一:01/10/03 14:13 ID:???

ESPからのメモリ
006EF398 F4 F8 6E 00 C8 51 47 00 C8 51 47 00 01 00 00 00 n.ネQG.ネQG.....
006EF3A8 00 00 00 00 F4 F8 6E 00 D0 89 43 00 E8 F3 6E 00 ....n.ミ韻.頤n.
006EF3B8 D0 89 43 00 67 01 00 00 46 02 00 00 31 32 33 34 ミ韻.g...F...1234
006EF3C8 35 36 37 38 00 00 00 00 00 00 00 00 00 F3 6E 00 5678.........n.

107 :大井 圭一:01/10/03 14:16 ID:???

出ました。 006EF3C4から入力したパスワードが。
ついでにレジスタも見てみよう。

108 :大井 圭一:01/10/03 14:18 ID:???

EAX = 00000008 EBX = 00000001
ECX = 800081B8 EDX = 800081D0
ESI = 00000000 EDI = 006EF8F4
EIP = 00438A02 ESP = 006EF398
EBP = 006EF3E8 EFL = 00000246 CS = 0167
DS = 016F ES = 016F SS = 016F FS = 0FBF
GS = 0000 OV=0 UP=0 EI=1 PL=0 ZR=1 AC=0
PE=1 CY=0

109 :大井 圭一:01/10/03 14:20 ID:???

「EAX = 00000008」 うーむ。これは入力したパスワードの文字数では?
再度実行して、今度は違う文字数でやってみたら、やはり文字の個数であった。
さらに以下のプログラムを調べて見た。

110 :大井 圭一:01/10/03 14:24 ID:???

004389FD E8 94 80 01 00   call   00450A96 パスワードをメモリにセット EAX=文字数

00438A02 83 F8 09   cmp   eax,9    9文字だったら 00438A0Cに行く
00438A05 74 05   je   00438A0C

00438A07 83 F8 06   cmp   eax,6    6文字でなかったら 00438A1Aに行く
00438A0A 75 0E   jne   00438A1A

9文字又は6文字の場合ここに来る。
00438A0C 8D 45 DC   lea   eax,dword ptr [ebp-24h]
00438A0F 50   push   eax
00438A10 E8 FD 97 FE FF   call   00422212   どーもここでパスワードチェックしてる様だ。
00438A15 85 C0   test   eax,eax    EAX=0だったら00438A1Aに行く
00438A17 59   pop   ecx       つまりEAX≠0がパスワードOKの印。
00438A18 75 0F   jne   00438A29

9文字でも6文字でも無い時ここに来る。
00438A1A 56   push   esi
00438A1B 68 04 E8 00 00   push   0E804h
00438A20 E8 4E 96 FE FF   call   00422073
00438A25 59   pop   ecx
00438A26 59   pop   ecx
00438A27 EB 4B   jmp   00438A74

はてここは?パスワードOKの時ここに来たりして。
00438A29 6A 21   push   21h

111 :大井 圭一:01/10/03 14:28 ID:???

非常にアヤシイね。ここは。要するにパスワードは複数存在して、
それぞれ6文字、9文字であるようだ。

00438A10 E8 FD 97 FE FF call 00422212  
上下関係から見て、ここがパスワードのチェックルーチンと断定。

コードのウインドウを左クリックして、
編集→ジャンプ→アドレス式の入力(00422212)と入力→ジャンプ→閉じる
いよいよパスワード頂きます。

112 :大井 圭一:01/10/03 14:32 ID:???

*** Password のチェックルーチン ****

00422212〜がそのチェックルーチンだ。
このソフトでは3種類のPasswordのチェックをしている。

113 :大井 圭一:01/10/03 14:34 ID:???

=== Password No1 のチェック ====

00422212 8B 44 24 04   mov   eax,dword ptr [esp+4] EAX=入力したPasswordの先頭を示している。
00422216 B2 45   mov   dl,45h 'E'
00422218 53   push   ebx
00422219 8A 08   mov   cl,byte ptr [eax]
0042221B 3A CA   cmp   cl,dl 1文字目='E' ?
0042221D 75 21   jne   00422240
0042221F 80 78 01 42   cmp   byte ptr [eax+1],42h 2文字目='B' ?
00422223 75 1B   jne   00422240
00422225 80 78 02 46   cmp   byte ptr [eax+2],46h 3文字目='F' ?
00422229 75 15   jne   00422240
0042222B 38 50 03   cmp   byte ptr [eax+3],dl 4文字目='E' ?
0042222E 75 10   jne   00422240
00422230 38 50 04   cmp   byte ptr [eax+4],dl 5文字目='E' ?
00422233 75 0B   jne   00422240
00422235 80 78 05 31   cmp   byte ptr [eax+5],31h 6文字目='1' ?
00422239 75 05   jne   00422240

114 :大井 圭一:01/10/03 14:39 ID:???

=== Password 合格 の処理 ====

0042223B 6A 01      push   1       パスワード検査が合格した時の処理
0042223D 58      pop  eax
0042223E 5B      pop  ebx
0042223F C3      ret

115 :大井 圭一:01/10/03 14:42 ID:???

=== Password No2 のチェック ====

00422240 3A CA   cmp   cl,dl 1文字目が'E'でない時Password No3 のチェックへ
00422242 B3 39   mov   bl,39h
00422244 75 1C   jne   00422262

=== 1文字目が'E'であった時2文字目以降のチェック ====

00422246 80 78 01 42   cmp   byte ptr [eax+1],42h 2文字目='B' ?
0042224A 75 16   jne   00422262
0042224C 80 78 02 53   cmp   byte ptr [eax+2],53h 3文字目='S ?
00422250 75 10   jne   00422262
00422252 38 50 03   cmp   byte ptr [eax+3],dl 4文字目='E' ?
00422255 75 0B   jne   00422262
00422257 38 58 04   cmp   byte ptr [eax+4],bl 5文字目='9' ?
0042225A 75 06   jne   00422262
0042225C 80 78 05 58   cmp   byte ptr [eax+5],58h 6文字目='X' ?

00422260 74 D9   je   0042223B 全て合っていた時、合格の処理へ

116 :大井 圭一:01/10/03 14:47 ID:???
=== Password No3 のチェック ====

00422262 B2 30   mov   dl,30h          1文字目が'0'でない時NG
00422264 3A CA   cmp   cl,dl
00422266 75 72   jne   004222DA

00422268 80 78 01 35   cmp   byte ptr [eax+1],35h   2文字目が'5'でない時NG
0042226C 75 6C   jne   004222DA

0042226E 8A 48 02   mov   cl,byte ptr [eax+2]    3文字目が数字でない時NG
00422271 3A CA   cmp   cl,dl
00422273 7C 65   jl   004222DA
00422275 3A CB   cmp   cl,bl
00422277 7F 61   jg   004222DA

00422279 8A 48 03   mov   cl,byte ptr [eax+3]     4文字目が数字でない時NG
0042227C 3A CA   cmp   cl,dl
0042227E 7C 5A   jl   004222DA
00422280 3A CB   cmp   cl,bl
00422282 7F 56   jg   004222DA

00422284 80 78 04 32   cmp   byte ptr [eax+4],32h    5文字目が'2'でない時NG
00422288 75 50   jne   004222DA

0042228A 8A 48 05   mov   cl,byte ptr [eax+5]     6文字目が数字でない時NG
0042228D 3A CA   cmp   cl,dl
0042228F 7C 49   jl   004222DA
00422291 3A CB   cmp   cl,bl
00422293 7F 45   jg   004222DA

00422295 8A 48 06   mov   cl,byte ptr [eax+6]     7文字目が数字でない時NG
00422298 3A CA   cmp   cl,dl
0042229A 7C 3E   jl   004222DA
0042229C 3A CB   cmp   cl,bl
0042229E 7F 3A   jg   004222DA

004222A0 80 78 07 33   cmp   byte ptr [eax+7],33h    8文字目が'3'でない時NG
004222A4 75 34   jne   004222DA

004222A6 8A 48 08   mov   cl,byte ptr [eax+8]    9文字目が数字でない時NG
004222A9 3A CA   cmp   cl,dl
004222AB 7C 2D   jl   004222DA
004222AD 3A CB   cmp   cl,bl
004222AF 7F 29   jg   004222DA

117 :大井 圭一:01/10/03 14:50 ID:???

これ以降に文字があったらNGと判断するルーチン(10〜17文字までをチェック)

004222B1 32 C9   xor   cl,cl          'CL=0
004222B3 38 48 09   cmp   byte ptr [eax+9],cl
004222B6 75 22   jne   004222DA
004222B8 38 48 0A   cmp   byte ptr [eax+0Ah],cl
004222BB 75 1D   jne   004222DA
004222BD 38 48 0B   cmp   byte ptr [eax+0Bh],cl
004222C0 75 18   jne   004222DA
004222C2 38 48 0C   cmp   byte ptr [eax+0Ch],cl
004222C5 75 13   jne   004222DA
004222C7 38 48 0D   cmp   byte ptr [eax+0Dh],cl
004222CA 75 0E   jne   004222DA
004222CC 38 48 0E   cmp   byte ptr [eax+0Eh],cl
004222CF 75 09   jne   004222DA
004222D1 38 48 0F   cmp   byte ptr [eax+0Fh],cl

004222D4 0F 84 61 FF FF FF   je   0042223B    (全部で9文字だったら合格)

118 :大井 圭一:01/10/03 14:51 ID:???

=== Password 不合格 の処理 EAX=0にする。  ====

004222DA 33 C0   xor   eax,eax
004222DC 5B   pop   ebx
004222DD C3   ret

119 :大井 圭一:01/10/03 14:57 ID:???

あー疲れた。一人でやるのは簡単なのだが、
こう言った文章にするのって結構時間と体力を消耗する。
結局>25の尻は>26の尻も使えたって事だ。
昔のVerでは>25の尻のみだったんだよ。

120 :かわ:01/10/07 11:04 ID:???
大井圭一さま、かわもパスワード解読のやりかたわかりました。
最後に見たけど、ありがとー。

121 :名無しさん@お腹いっぱい。:01/10/07 21:34 ID:???
とりあえず腐れ

122 :  :01/10/07 23:48 ID:oOSilsY2
圭タン、、、

123 :名無しさん@お腹いっぱい。:01/10/10 21:17 ID:???
エクセルの読みとりパスワード解除の方法だれか教えて・・

124 :名無しさん@お腹いっぱい。:01/10/24 05:04 ID:???
>大井 圭一氏
たまにこういう書き込みに出会えるから2CHはやめられん。

50 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)