1 :
うめ:
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
さっさと答えろよ?
2.3回氏ね。
ツールってナに?
揚げるな!
さげろ!
ばぁ〜かぁ〜
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:???
あ、最新バージョンでも同じみたいだよ。今、確認。
結構変わってるな。ここも。
18 :
うめ:01/09/21 20:27 ID:JO8FpzWw
>>13 てめぇ馬鹿か?つーるがしりてーんだよ
ふんやろう
迷スレの悪寒
20 :
うめ:01/09/21 20:38 ID:JO8FpzWw
早く!御前等士ネーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー!
!ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーネ士等前御!く早
つーるか?
バイナリエディタで十分。
C7940H〜を見よ。ご丁寧に「HAPPYKNIT Password」って。
>13は正解。とことん懐石したいんだったら、VCのデバッガ使え。
23 :
うめ:01/09/21 21:32 ID:BzRXKkgk
ありがとう。そして今までごめんなさい。
10/4
アメリカ パキスタン・・・とだけ言っておこう
24 :
無名:01/09/22 03:42 ID:???
バカなうめを晒しage
16進計算のできる電卓は必要。
暗算できる奴は必要無し。
スタート→プログラム→アクセサリ→電卓
電卓の種類を関数電卓に切替えて使う。
VC++は必要。今はVer6か?一番安いエディション買え。
それでも一般向けのは2.5万位するから、学割の方を買え。
内容は同じで1万位で買える。学生で無い奴は、近くにうろついてる
学生に小遣いやって買って来てもらえばよい。
29 :
うめ:01/09/28 20:43 ID:???
準備中
30 :
うめ:01/09/28 20:49 ID:???
そろそろ始めるか?
>1の例でやってみよう。
Winkint 手編み作成支援ソフトか。いい趣味してるな>1よ。
実行ファイルはKint.exeなのでこれを調べる。
いきなりデバッガで解析する前に、バイナリエディタで調べてみよう。
パスワードをベタで置いている場合もあるからだ。
この場合アセンブラの知識は無くても、ある程度の傾向を憶えれば、
後は勘だけで見つけられるのだ。
これで見付からない場合に、デバッガを使おう。
B6FA4〜
Microsoft Visual C++ Runtime Library
VC++で作られている様だ。
傾向として、パスワードをそのままの形で置いている場合、
このメッセージの前後、及びこれ以降に置いている場合が多い。
ファイル全体としては、中盤以降にこのメッセージがある事が多い。
とにかくPage Up,Downを使い、素早く読み流そう。
C78F0〜
本ソフトは体験バージョンになります。
製図・編図の印刷ができません。
機能制限
HAPPYKNIT
Password
おお!気になるメッセージ群。
ここでまた、傾向として、パスワード入力関係のメッセージは、
ほぼ1箇所に集中して置いてある場合が多い。
そしてパスワード自身もその近くにある事が多い。
つまり、「パスワードが違います。」,「登録ありがとう。」等のメッセージ群があれば、
その近辺にパスワードが置かれている場合が多いのだ。
結局、見ての通り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:???
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:???
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++をインストして準備していてくれよな。
先生、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:???
>25のソフトはバイナリエディタでは、パスワードを見付ける事は出来ない。
作者が意図的に隠している訳である。
こう言う時にVC++のデバッガを使うと、簡単にパスワードを見付けられるのだ。
とは言っても、多少アセンブラの知識は必要となるが、全く大した物では無い。
ある一定の法則と傾向を憶え、後は勘を働かせれば結構何とかなる物だ。
漏れのVC++はVer5だ。今はVer6になっているらしいが、
操作は殆ど同じだろうと思うのでVer5で説明する。
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〜」がスタート・アドレスだ。
ここでデバッガの設定をしておこう。
表示→デバッグウインドウ→レジスタ
でレジスタのウインドウを開く。
表示→デバッグウインドウ→メモリ
でメモリのウインドウを開く。
ここで1つ憶えて欲しい事がある。
数値の格納の方法ですが、インテルとその互換CPUは「逆ワード形式」
を使っています。
例えば、12345678Hと言う数値がメモリに格納されている場合は、
バイト単位に分けて逆に並べて 78,56,34,12 となります。
アドレスの検索の時などに間違え無い様にしましょう。
では解析を始めてみましょう。
デバッグ→実行
Edbinの画面が表示されるので、次の様に操作する。
ヘルプ→ユーザー登録について→ユーザー登録
登録番号に12345678
使用者名には適当な名前を入れて下さい。
→OKをクリック
「登録番号が不正です。」が表示される。
デバッガに切り替え、次の様に操作する。
デバッグ→ブレーク
Edbinの画面に戻るので、OKをクリック。
再びデバッガの画面に戻る。
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を指しているだろう?
他のウインドウも見てみよう。
レジスタ・ウインドウ
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
メモリ・ウインドウ アドレス=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 T.d.ヲ.E.....
006EF238 54 F2 6E 00 14 00 00 00 00 01 00 00 07 1C 45 00 T...........E.
006EF248 54 F2 6E 00 F4 F8 6E 00 00 00 00 00 93 6F 98 5E T.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・.........
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 L.E...q.....
006EF348 04 E8 00 00 74 F3 6E 00 49 AE 45 00 10 0D 71 00 ....t.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 ワ.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 l.....ク.J.1234
006EF3C8 35 36 37 38 00 00 00 00 00 00 00 00 00 24 F5 BF 5678.........$
気になるメッセージがありますよね。
6EF254〜「登録番号が不正です。」
NGパスワード入力時のメッセージ
6EF3C4〜「12345678」
取り合えず入力したパスワード
この2つのメッセージはいつも注目して監視しておきましょう。
さて、漏れの解析法は効率を上げる為、プログラム全体を解析する様な事はしない。
結果としてパスワードが解かれば良いのだから。
まず現在の状況を説明すると、ユーザー登録で適当なパスワードを入力した。
結果として、「登録番号が不正です。」とのエラーメッセージが発生して、確認の
OKをクリックした所でプログラムを停止している。
そして、メモリ上にNGパスワード入力時のメッセージや、取り合えず入力したパスワード
が残されている事をメモリ・ウインドウにて確認している。
この事からプログラムの流れを逆に辿れば、ここに至った原因。つまり適当に入力した
パスワードが何故に不正と判断されたかの分岐点に行き着く事ができる筈だ。
プログラムを逆にさかのぼるには、スタックを調べれば解かる。
コード(プログラム)は00400000台から格納されてるので、該当するデータを調べる。
もちろん逆ワード形式で格納されている事を忘れずに。
スタックはESP=006EF218なので、これ以降を見てみる。
スタックはサブルーチンの呼び出しの時、帰りアドレスを通常32Bitつまり4Byte単位で書き込んでいる。
006EF218から後、最も近い位置にある、00400000台の数値を探す。
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 T.d.ヲ.E.....
「A6 18 45 00」
結局、004518A6が最もあやしい。
コードのウインドウを左クリックして、次の操作をする。
編集→ジャンプ→アドレス式の入力(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
004518A6はルーチンから帰ったアドレス。
つまり1つ前の
004518A1 E8 63 FF FF FF call 00451809
で呼び出されていたのだ。
さらにこのルーチンも、呼び出されている。(慣れればすぐに解かるが)
前方を見て見ると、
00451886 56 push esi
がこのルーチンのエントリだと解かる。
ブレーク・ポイントをこのルーチンの先頭(451886)にセットする。
ブレーク・ポイントの設定は00451886の行を左クリック。
その後右クリック「ブレークポイントの挿入/削除」をクリックで設定できる。
以下の様に操作する。
デバッグ→実行
Edbinのユーザー登録画面になるので、そのままOKをクリック
デバッガの画面に戻り、
●00451886 56 push esi
のブレークポイントで止まる。
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
00451886でのメモリ
アドレスをESPの値= 006EF244に設定する。
006EF244 07 1C 45 00 54 F2 6E 00 F4 F8 6E 00 00 00 00 00 ..E.T.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....p...'...
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 d.t.1ョE.....
006EF364 F4 EA 48 00 DC F3 6E 00 30 CB 46 00 00 00 00 00 H.ワ.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 登録番号が不正で
つまり、ブレークポイントを設定した
●00451886 56 push esi
の所では、すでにパスワードはNGと発覚し、
NGメッセージを表示する準備までされている。
00451886のブレークポイントを解除して、
もっと前にさかのぼって調べてみよう。
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)と入力→ジャンプ→閉じる
下の様になる。
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
さらにこのルーチンも、呼び出されている。
前方を見て見ると、
00451BCA 55 push ebp
がこのルーチンのエントリだと解かる。
ブレーク・ポイントをこのルーチンの先頭(451BCA)にセットする。
以下の様に操作する。
デバッグ→実行
Edbinのユーザー登録画面になり、「登録番号が不正です。」のOKをクリック。
登録画面のOKをクリック
デバッガの画面に戻り、
●00451BCA 55 push ebp
のブレークポイントで止まる。
ブレークポイント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
ブレークポイント00451BCAでのメモリ
アドレスをESPの値=006EF35C に設定する。
006EF35C 31 AE 45 00 04 E8 00 00 F4 EA 48 00 DC F3 6E 00 1ョE.....H.ワ.
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
おや?「登録番号が不正です」のメッセージがメモリから消えている。
確実にプログラムを逆行しているのがわかる。
00451BCAのブレークポイントを解除して、
さらに前に戻ってみよう。
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)と入力→ジャンプ→閉じる
下の様になる。
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
さらにこのルーチンも、呼び出されている。
前方を見て見ると、
0045AE0F B8 30 CB 46 00 mov eax,46CB30h
がこのルーチンのエントリだと解かる。
ブレーク・ポイントをこのルーチンの先頭(0045AE0F)にセットする。
何回もやるとパターンが解かるだろう。とりあえず以下の様に操作する。
デバッグ→実行
Edbinのユーザー登録画面になり、「登録番号が不正です。」のOKをクリック。
登録画面のOKをクリック
デバッガの画面に戻り、
●0045AE0F B8 30 CB 46 00 mov eax,46CB30h
のブレークポイントで止まる。
ブレークポイント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
ブレークポイント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」
の位置がかなり近付いているからだ。
ESP = 006EF378
006EF378 BF 20 42 00 04 E8 00 00 00 00 00 00 FF FF FF FF
「BF 20 42 00 」
004220BF と言うアドレスが見付かる。多分ここから呼び出されているのだろう。
もうここまで何度もやると、次にやる事は解かるよな?
0045AE0Fのブレークポイントを解除して、
毎度同じく、次の操作をする。
コードのウインドウを左クリックして、
編集→ジャンプ→アドレス式の入力(4220BF)と入力→ジャンプ→閉じる
下の様になる。
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
さらにこのルーチンも、呼び出されている。
前方を見て見ると、
00422073 55 push ebp
がこのルーチンのエントリだと解かる。
ブレーク・ポイントをこのルーチンの先頭( 00422073 )にセットする。
いい加減コピペも飽きて来た。以下の様に操作してちょ。
デバッグ→実行
Edbinのユーザー登録画面になり、「登録番号が不正です。」のOKをクリック。
登録画面のOKをクリック
デバッガの画面に戻り、
●00422073 55 push ebp
のブレークポイントで止まる。
ブレークポイント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
ブレークポイント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
パスワードのアドレスは006EF3C4か。憶えておこう。
もうそろそろパスワード関連ルーチンがでて来るぞ。
00422073のブレークポイントを解除しよう。
ESP = 006EF38C
006EF38C 25 8A 43 00 04 E8 00 00 00 00 00 00 F4 F8 6E 00
「25 8A 43 00 」
00438A25 と言うアドレス発見
いい加減飽きたと思いながら、次の操作をする。
コードのウインドウを左クリックして、
編集→ジャンプ→アドレス式の入力(00438A25)と入力→ジャンプ→閉じる
下の様になる。
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
さらにこのルーチンも、呼び出されている。
前方を見て見ると、
004389C6 B8 88 BD 46 00 mov eax,46BD88h
がこのルーチンのエントリだと解かる。
ブレーク・ポイントをこのルーチンの先頭( 00422073 )にセットする。
デバッグ→実行
Edbinのユーザー登録画面になり、「登録番号が不正です。」のOKをクリック。
登録画面のOKをクリック
デバッガの画面に戻り、
●004389C6 B8 88 BD 46 00 mov eax,46BD88h
のブレークポイントで止まる。
ブレークポイント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
ブレークポイント004389C6でのメモリ
アドレスをESPの値= 006EF3EC に設定する。
006EF3EC 0A 0F 45 00 C8 51 47 00 11 01 00 00 28 F4 6E 00 ..E.ネQG.....(.
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.....L.
100ゲット!!!って
おっ。おいっ!入力したパスワードが消えてるぞ。
チェックルーチンはここのブレークポイント以降に有りそうだ。
この一帯のプログラム調べてみよう。
● 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 の行を左クリックした後、
右クリック。「カーソル行の前まで実行」をクリックする。
うーん大した変化無し。
次行ってみよう。
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まで実行しよう。やり方は同じだ。
やはりメモリにはパスワードは現れない。おや?レジスタが変だぞ。
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
「EAX = 006EF3C4」!!
これって確かパスワードが格納されていたアドレス。
期待して次に進もう。
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 までを実行して見よう。
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..........
出ました。 006EF3C4から入力したパスワードが。
ついでにレジスタも見てみよう。
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
「EAX = 00000008」 うーむ。これは入力したパスワードの文字数では?
再度実行して、今度は違う文字数でやってみたら、やはり文字の個数であった。
さらに以下のプログラムを調べて見た。
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
非常にアヤシイね。ここは。要するにパスワードは複数存在して、
それぞれ6文字、9文字であるようだ。
00438A10 E8 FD 97 FE FF call 00422212
上下関係から見て、ここがパスワードのチェックルーチンと断定。
コードのウインドウを左クリックして、
編集→ジャンプ→アドレス式の入力(00422212)と入力→ジャンプ→閉じる
いよいよパスワード頂きます。
*** Password のチェックルーチン ****
00422212〜がそのチェックルーチンだ。
このソフトでは3種類のPasswordのチェックをしている。
=== 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
=== Password 合格 の処理 ====
0042223B 6A 01 push 1 パスワード検査が合格した時の処理
0042223D 58 pop eax
0042223E 5B pop ebx
0042223F C3 ret
=== 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 全て合っていた時、合格の処理へ
=== 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
これ以降に文字があったら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文字だったら合格)
=== Password 不合格 の処理 EAX=0にする。 ====
004222DA 33 C0 xor eax,eax
004222DC 5B pop ebx
004222DD C3 ret
あー疲れた。一人でやるのは簡単なのだが、
こう言った文章にするのって結構時間と体力を消耗する。
結局>25の尻は>26の尻も使えたって事だ。
昔のVerでは>25の尻のみだったんだよ。
120 :
かわ:01/10/07 11:04 ID:???
大井圭一さま、かわもパスワード解読のやりかたわかりました。
最後に見たけど、ありがとー。
とりあえず腐れ
122 :
:01/10/07 23:48 ID:oOSilsY2
圭タン、、、
エクセルの読みとりパスワード解除の方法だれか教えて・・
>大井 圭一氏
たまにこういう書き込みに出会えるから2CHはやめられん。
倉庫行き防止あげ
大井圭一氏を2chの神として崇めましょう。
↑
さわるなきけん。
129 :
うめ:01/11/15 21:10 ID:???
大井圭一氏の建てたドキューソな会社のワコースレがデリされて、
漏れもトテーモ落ち込んでいるね。そんで景気付けに一発懐石するよ。
130 :
うめ:01/11/15 21:20 ID:???
.│> 大井圭一も終わりらしい……………
\ ______/
\/ ∧_∧ゴニョゴニョ マレーダッテ・・
( ・∀・) ∧_∧
/ \/ )(・∀・ ) __マジデ…?
/ \___// \ ウソッ カワイソウナヒトダーーー
__ .| | / /\_ _ \ \_____
\  ̄ ̄ ̄ ̄ ̄ ̄(__ノ \ \__) \
||\ \ .||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || || ̄
最近のソフトは、入力した名前からパスワードを自己作成して
それと入力したパスが合っているかどうかをチェックする方式が多い。
しかもチェックが複雑化していて、簡単にパターンを解読する事が
困難な様に作られている。
本来の懐石とは、このパターンルーチンまで調べるのが筋って物だろうが、
漏れはしない。パスワードが解かれば良いのだから。
さて、DLしたら、バイナリエディタで取り合えず、
注目すべき文字列を見付けよう。
場合によっては無い場合もあるが、とにかく調べて見る。
すると、次の様な文字列が発見された。
52A2C〜入力内容が間違っています
52A5C〜ご登録ありがとうございます
このアドレスはバイナリエディタで調べた、ファイルの先頭からのアドレスだ。
実際のメモリ上ではどこに格納されているのか?
とにかくVCのデバッガを立ち上げて、WINFD.EXEを読み込ませよう。
スタートアドレスはここ
4479EC〜55 8B EC 6A FF 68 E0 E5 44 00 …となっている筈。
ここのコードをバイナリエディタで検索して見ると、
ファイルの先頭からのアドレスでは479ECとなっている。
つまりVCアドレスとバイナリエディタとのアドレスの差は、
4479EC-479EC=400000の差である事が解かる。
この事から、実際にメモリに格納されるアドレスは、
452A2C〜入力内容が間違っています
452A5C〜ご登録ありがとうございます
になっている筈である。
これは、デバッガのメモリ・ウィンドウで確認する事ができる。
では、このアドレスを参照している所を調べて見よう。
452A2C〜入力内容が間違っていますの所を調べて見よう。
バイナリエディタでEF4Eだったが、実際は1つ前のEF4Dだ。
次に、452A5C〜ご登録ありがとうございますの所も調べよう。
バイナリエディタではEEC9だが実際は1つ前のEEC8だ。
結論としてこれらの参照元は以下の様になる。
40EF4D〜入力内容が間違っています
40EEC8〜ご登録ありがとうございます
これらの一連のプログラムを以下に表示する。
0040EE6F 8D 54 24 08 lea edx,dword ptr [esp+8]
0040EE73 68 C8 2A 45 00 push 452AC8h
0040EE78 52 push edx
0040EE79 FF D7 call edi
0040EE7B 85 C0 test eax,eax
0040EE7D 75 1C jne 0040EE9B
0040EE7F 8D 44 24 08 lea eax,dword ptr [esp+8]
0040EE83 50 push eax
0040EE84 68 64 6F 45 00 push 456F64h
0040EE89 68 D4 2A 45 00 push 452AD4h
0040EE8E 68 DC 2A 45 00 push 452ADCh
0040EE93 E8 78 B3 02 00 call 0043A210
0040EE98 83 C4 10 add esp,10h
0040EE9B 8D 4C 24 08 lea ecx,dword ptr [esp+8]
0040EE9F 8D 54 24 28 lea edx,dword ptr [esp+28h]
0040EEA3 51 push ecx
0040EEA4 52 push edx
0040EEA5 E8 C6 79 02 00 call 00436870 ;チェックルーチン
0040EEAA 83 C4 08 add esp,8
0040EEAD 85 C0 test eax,eax
0040EEAF 0F 84 91 00 00 00 je 0040EF46 ;NGの時JUMP
0040EEB5 A1 FC A6 45 00 mov eax,[0045A6FC]
0040EEBA 50 push eax
0040EEBB FF 15 3C E3 44 00 call dword ptr ds:[44E33Ch]
0040EEC1 6A 40 push 40h
0040EEC3 68 B0 2A 45 00 push 452AB0h
0040EEC8 68 5C 2A 45 00 push 452A5Ch ;ご登録ありがとうございます
0040EECD 56 push esi
0040EECE 8B F8 mov edi,eax
0040EED0 E8 7B C9 FF FF call 0040B850
0040EED5 83 C4 10 add esp,10h
0040EED8 68 48 2A 45 00 push 452A48h
0040EEDD 68 E2 27 00 00 push 27E2h
0040EEE2 6A 00 push 0
0040EEE4 68 E2 27 00 00 push 27E2h
0040EEE9 57 push edi
0040EEEA FF 15 40 E3 44 00 call dword ptr ds:[44E340h]
0040EEF0 8B 15 EC 9B 45 00 mov edx,dword ptr ds:[459BECh]
0040EEF6 8D 4C 24 28 lea ecx,dword ptr [esp+28h]
0040EEFA 51 push ecx
0040EEFB 52 push edx
0040EEFC FF 15 A4 E1 44 00 call dword ptr ds:[44E1A4h]
0040EF02 A1 EC 9B 45 00 mov eax,[00459BEC]
0040EF07 50 push eax
0040EF08 68 E4 2A 45 00 push 452AE4h
0040EF0D 68 DC 2A 45 00 push 452ADCh
0040EF12 E8 99 B5 02 00 call 0043A4B0
0040EF17 8D 4C 24 14 lea ecx,dword ptr [esp+14h]
0040EF1B 51 push ecx
0040EF1C 68 D4 2A 45 00 push 452AD4h
0040EF21 68 DC 2A 45 00 push 452ADCh
0040EF26 E8 85 B5 02 00 call 0043A4B0
0040EF2B 8B 15 FC A6 45 00 mov edx,dword ptr ds:[45A6FCh]
0040EF31 83 C4 18 add esp,18h
0040EF34 52 push edx
0040EF35 FF 15 44 E3 44 00 call dword ptr ds:[44E344h]
0040EF3B A1 F0 71 45 00 mov eax,[004571F0]
0040EF40 50 push eax
0040EF41 E9 08 FF FF FF jmp 0040EE4E
0040EF46 6A 30 push 30h
0040EF48 68 B0 2A 45 00 push 452AB0h
0040EF4D 68 2C 2A 45 00 push 452A2Ch ;入力内容が間違っています
0040EF50 45 inc ebp
0040EF51 00 56 E8 add byte ptr [esi-18h],dl
0040EF54 F8 clc
0040EF55 C8 FF FF 83 enter 0FFFFh,83h
0040EF59 C4 10 les edx,dword ptr [eax]
0040EF5B B8 01 00 00 00 mov eax,1
0040EF60 5F pop edi
0040EF61 5E pop esi
0040EF62 81 C4 A0 00 00 00 add esp,0A0h
0040EF68 C2 10 00 ret 10h
ここまで見ればすぐに気が付くよな?
パスワードチェック
0040EEA5 E8 C6 79 02 00 call 00436870
パスワードOKの時
0040EEB5 A1 FC A6 45 00 mov eax,[0045A6FC]
パスワードNGの時
0040EF46 6A 30 push 30h
ブレークポイントを40EEA5にセットして、実行させてみよう。
ユーザー登録で、適当に名前とパスワードを入れて見よう。
レジスタにアドレスが入っているぞ。
ECX=入力したパスワード
EDX=名前
この事から40EEA5からのCALL 436870が
チェックルーチンである疑いがより深まったのだ。
ここからチェックルーチンに入る。
やり方は簡単。
サブルーチン・コールした後で止めて、レジスタやメモリに変化があるかを確認する。
00436870 A1 D0 9B 45 00 mov eax,[00459BD0]
00436875 81 EC B0 00 00 00 sub esp,0B0h
0043687B 53 push ebx
0043687C 56 push esi
0043687D 57 push edi
0043687E 50 push eax
0043687F E8 AC 2F 00 00 call 00439830
00436884 8B 0D D0 9B 45 00 mov ecx,dword ptr ds:[459BD0h]
0043688A 8B 15 C8 9B 45 00 mov edx,dword ptr ds:[459BC8h]
00436890 8B 1D 80 E4 44 00 mov ebx,dword ptr ds:[44E480h]
00436896 51 push ecx
00436897 68 F8 35 45 00 push 4535F8h
0043689C 52 push edx
0043689D FF D3 call ebx
0043689F 8B 0D C8 9B 45 00 mov ecx,dword ptr ds:[459BC8h]
004368A5 83 C4 10 add esp,10h
004368A8 8D 44 24 34 lea eax,dword ptr [esp+34h]
004368AC 6A 00 push 0
004368AE 50 push eax
004368AF 51 push ecx
004368B0 FF 15 20 E2 44 00 call dword ptr ds:[44E220h]
004368B6 83 F8 FF cmp eax,0FFh
004368B9 74 5E je 00436919
004368BB 50 push eax
004368BC FF 15 70 E1 44 00 call dword ptr ds:[44E170h]
取り合えずこの辺までは、変化無し。
004368C2 8B BC 24 C4 00 00 00 mov edi,dword ptr [esp+0C4h]
004368C9 85 FF test edi,edi
004368CB 75 5C jne 00436929
004368CD 8D 54 24 24 lea edx,dword ptr [esp+24h]
004368D1 8D 44 24 28 lea eax,dword ptr [esp+28h]
004368D5 52 push edx
004368D6 50 push eax
004368D7 E8 04 FF FF FF call 004367E0
004368DC 83 C4 08 add esp,8
004368DF 85 C0 test eax,eax
004368E1 75 42 jne 00436925
004368E3 E8 08 FE FF FF call 004366F0
004368E8 8B 54 24 24 mov edx,dword ptr [esp+24h]
004368EC 8B 8C 24 C0 00 00 00 mov ecx,dword ptr [esp+0C0h]
004368F3 83 C2 1E add edx,1Eh
004368F6 3B C2 cmp eax,edx
004368F8 C6 01 00 mov byte ptr [ecx],0
004368FB 7F 0F jg 0043690C
004368FD 5F pop edi
004368FE 5E pop esi
004368FF B8 01 00 00 00 mov eax,1
00436904 5B pop ebx
00436905 81 C4 B0 00 00 00 add esp,0B0h
0043690B C3 ret
ここら辺も手掛かり無し。
単調な作業なだけに、落ち着いてやってみよう。
0043690C 68 24 55 45 00 push 455524h
00436911 E8 AA FE FF FF call 004367C0
00436916 83 C4 04 add esp,4
00436919 5F pop edi
0043691A 5E pop esi
0043691B 33 C0 xor eax,eax
0043691D 5B pop ebx
0043691E 81 C4 B0 00 00 00 add esp,0B0h
00436924 C3 ret
00436925 8D 7C 24 28 lea edi,dword ptr [esp+28h]
00436929 8B B4 24 C0 00 00 00 mov esi,dword ptr [esp+0C0h]
00436930 56 push esi
00436931 FF 15 A8 E1 44 00 call dword ptr ds:[44E1A8h]
00436937 83 F8 01 cmp eax,1
0043693A 7E DD jle 00436919
0043693C 57 push edi
0043693D E8 5E 2C 00 00 call 004395A0
00436942 57 push edi
00436943 8D 44 24 20 lea eax,dword ptr [esp+20h]
00436947 68 80 13 45 00 push 451380h
0043694C 50 push eax
0043694D FF D3 call ebx
おっと!見逃すなよ。遂にパスワード作成している所見つけたよ。
0043694F 8D 4C 24 1C lea ecx,dword ptr [esp+1Ch]
00436953 51 push ecx
00436954 56 push esi
00436955 E8 16 FC FF FF call 00436570 ;ここでパスワード作ってるぞ!
●0043695A 8B 3D 9C E1 44 00 mov edi,dword ptr ds:[44E19Ch] ;ここにBPセットだ。
00436960 83 C4 18 add esp,18h
00436963 8D 54 24 18 lea edx,dword ptr [esp+18h]
00436967 8D 44 24 0C lea eax,dword ptr [esp+0Ch]
0043696B 52 push edx
0043696C 50 push eax
0043696D FF D7 call edi
0043696F 85 C0 test eax,eax
00436971 75 0F jne 00436982
00436973 5F pop edi
00436974 5E pop esi
00436975 B8 01 00 00 00 mov eax,1
0043697A 5B pop ebx
0043697B 81 C4 B0 00 00 00 add esp,0B0h
00436981 C3 ret
●0043695A にブレークポイントをセットして実行しよう。
ECXに本物のパスワードの格納アドレスが入っている。
メモリウィンドウで確認して見てくれ。
名前を色々と変えて試して見るも良し。
2ちゃんねる
C2XN3S9Y
厨房君
ISEIQQCM
大井圭一
Z5TPCCUQ
実際の所、懐石ってそんなに難しく無いだろ?
しばらく見てたんだけど、この1ヶ月の間は誰も懐石のカキコが
無かったけど、sageのせいかな?
今回はコメント少なめ、前回多めだったからもう解かるよな。
そろそろ後継者が現れてくれても良いのだが、そんなに難しいか?
要するに、懐石ってのは逆汗とかニーモニックとか、そんな細かい事は
どうでも良い。流れを読むんだよ。スレのレスを流し読む様にだよ。
懐石にルールなんて物はないんだから、自分のセンスでやってくれ。
懐石の雰囲気を表現する為にカキコしたのだから、漏れの方法が正しい
とは言えないが、言葉や文章に出来ないスタイルなんかを感じて欲しいぜ!
それから上手くなろうとするなら「勘」が大切だ。それにグズは駄目だぞ。
じゃぁ!しばらく留守にするわ。帰って来たら何処かの空家スレで会おうぜ!!
元気でな!あんたがいなくなると寂しくなるが・・・
総当たりじゃないと、解析できないこともあるがな。
場合によっては、尻懐石するより、パッチ当てた方が楽な場合も有ると思われ。
パッチあてようと思ってエディターで開いてみても該当アドレスが見つかんない場合もあるがな。
こんなスレがあったのか…。
153 :
名無しさん@お腹いっぱい。:02/01/08 18:04 ID:NEGPUvBp
ageる
で、*cjと*ispec、どっちが強いの?
素晴らしい!
正直よくわからないけど
雰囲気はつかめました。。
優良sage
で、大井圭一って誰よ
デバッガはw32dasmでもいい。むしろ解析にはこっちのほうがメジャー。
Googleで「w32dasm v8.93」とでも検索すれば落ちてる所は上位5位ぐらいにある。
そんでもって日本語化パッチも当てれば完璧。
Googleで「w32dasm」と日本語のページを検索すればすぐ見つかる。
正直、感動したぜ!
160 :
:02/01/31 04:24 ID:???
ageage
161 :
名無しさん@お腹いっぱい。:02/01/31 12:32 ID:k/QxYT+/
すばらしい!!
ブラボー!!
ワンダフル
162 :
:02/02/01 13:56 ID:???
圭ちゃんステキ
圭タンの写真キボーン
165 :
:02/03/04 03:45 ID:cnMZslkR
激しくスレ違いだが、
辞書ファイルを別に作って、へっぽこ君の変換を
自動にやる方法教えてくれ。
絶対そうやってるはずだ。ほかには考えられない。
質問、いいですか?
パッチあてようと思ったのに、
該当アドレスがないっていうのは、
何故なんでしょうか?
私利集が間違ってるの?
なんでバージョンが変わってるって考えが浮かばない?(汗)
168 :
166:02/03/13 22:30 ID:???
>>167 ありがとうございます。
やっぱり、ちょびっとでもバージョン変わると
ダメなんだぁ・・・
(アホですいません)
ということは、懐石か・・・
169 :
名無しさん@お腹いっぱい。:02/03/19 22:40 ID:apiupLft
age
たまに、バージョンあがってもアドレスがずれてるだけってこともある。
素人だが電卓、バイナリエディタ、w32を揃えた。
clone4.0.0あたり逝ってみようか!
落し中......
おながいします!
174 :
名無しさん@お腹いっぱい。:02/04/14 23:27 ID:xzO+t8fV
age
久々にスレを見た。
数少ない良スレに乾杯。
読書の秋。
177 :
aiueyr9827365o91y439018560948yruehaiofug723245:02/05/09 15:48 ID:7Fu0OdUg
>>131 WinFD for Windows V1.05b の パスワード おしえてください
179 :
関係者:02/05/29 19:40 ID:???
180 :
名無しさん@お腹いっぱい。:02/06/07 11:14 ID:R/vOKzB2
181 :
:02/06/09 14:21 ID:ll9BUrSL
182 :
:02/06/09 15:26 ID:???
Win用IEにはgoogleのツールバーとか、他色々カスタマできるけど
MacのIE用のそう言うモノは無い? 検索バーをgoogleに変える
パッチはあるけど使い辛いし、おすすめ教えて。
ゆるい質問ですまん。
183 :
182:02/06/09 15:30 ID:???
スレ間違い、申し訳ない。
184 :
:02/06/09 20:36 ID:ll9BUrSL
あげ
185 :
:02/06/11 13:08 ID:QoDQ8UAM
>>158 w32dasmの使い方が分かりません。
Lagngerって解析できますか?
それだけ教えてクダサイ
>185
逆汗のみでの懐石は不可。
商用のASPackが使われているので、unpackした後にw32dasm に読み込ませるか
若しくは、SoftIce等のデバッガを用いて解析。
w32dasmはデバッガになる。
これ一つで十分。
188 :
:02/06/11 22:13 ID:QoDQ8UAM
どっち?
SoftIceも使わなければ無理なんでしょうか?
189 :
:02/06/11 23:00 ID:???
考えとしては、パスに適当に入れてそれで上みたいにするか
機能の制限(マクロ回数500)を無限に近い数に変えるかと考えてるのですが
可能なのでしょうか
W32Dasmってカーネル内のAPI に bpx出来たっけ?
折井さん(OllyDbg)ってどうだろう?
192 :
189:02/06/12 20:54 ID:???
???
193 :
:02/06/15 00:01 ID:PHCIh0rP
Address: 00000000 is Not in a Loaded Module.
****** Data is NOT Accessible ******
****** Data is NOT Accessible ******
W32で読み込んでデバッグ→プロセスロードとすると↑みたいにでてブレークポイントすらできません。
200KB弱のプログラムで、使うにはパスが必要なのですが、ダミーパスがあってできません。
シェアじゃなくて、あまり広まると困るから公開制限してるみたいです。
解析できる人いましたら、アプします。
よろしくお願いします
>>193 あぷしろ。
プログラム自体が危険な物じゃなければ解析してやる
195 :
:02/06/15 00:11 ID:???
今アプ板探してます。
もうちょっとまってください
その前に何をするプログラムなのか書け
197 :
:02/06/15 00:21 ID:???
ゲームのアイテムを増やすTOOLです。
まだアプロダが見つからない・・・
199 :
:02/06/15 00:30 ID:???
200 :
:02/06/15 00:45 ID:???
どうでしょうか?
お茶でもどうぞ
シブチャヲ ススッテ マターリ マターリ
∧ ∧ ▲∧
(,,`Д´) (=゚ー゚)
/つ目)~~~ /つ目~~~
ヽ(_______) 〜(__)
ラグハイムか。
それはともかく、VBは専門外なんでサッパリ。
202 :
:02/06/15 00:54 ID:???
そこをなんとか
バイナリに丸ごと
hellscaperとiiiiIIIiiIiが書いてあるな、それしかわからん。
それから、VBのプログラムは逆汗しても意味無いんで、
手の施しようがないと思うが。
204 :
:02/06/15 01:05 ID:PHCIh0rP
ということは無理って事?
恐るべしVB。
VBやってる人はできるかも?
205 :
:02/06/15 01:54 ID:PHCIh0rP
|:00408F14(C)
|
:00408F1A C4D1 les edx, ecx
:00408F1C 43 inc ebx
:00408F1D 48 dec eax
:00408F1E E88252956C call 6CD5E1A5
:00408F23 AA stosb
:00408F24 0540775402 add eax, 02547740
:00408F29 AB stosd
:00408F2A 0212 add dl, byte ptr [edx]
:00408F2C C55619 lds edx, dword ptr [esi+19]
:00408F2F A96C6C7ACB test eax, CB7A6C6C
:00408F34 EC in al, dx
:00408F35 53 push ebx
:00408F36 3A21 cmp ah, byte ptr [ecx]
:00408F38 F5 cmc
:00408F39 ED in ax, dx
W32つかうと、↑みたいなのがいっぱい出るんだけど、こういうのは関係ない?
206 :
:02/06/15 13:39 ID:FkJkz3k0
あげ
>199
うぷろだのファイルが404なので試せないのだが
bpx __vbastrcomp からでは攻められないのか?
あるいは、APIに渡したダミーのパスと正規パスを比較しているところを
直接見れるSmartCheckという選択肢もあるはずだが…
age
209 :
:02/06/17 18:28 ID:???
210 :
パスワード無理でしょうか:02/06/18 09:58 ID:e8hwvvLx
場違い
212 :
207:02/06/19 01:01 ID:???
>209
懐石の報告が遅れています。
明日辺りにはまとめて報告したいと思っていますです。
あまり期待なさらずにお待ち下さいませw
>>212 hotmailなりで連絡取り合ってくれ。
ネトゲのクラックなんで、あまり人の目に触れさせるのはどうかと。
しかも、俺もプレイしてるやつなんで、結構ゲンナリ
214 :
:02/06/20 01:11 ID:???
>>212 がむばってください。
いつまでもおまちいたしております
215 :
名無しさん@お腹いっぱい。:02/06/22 10:20 ID:pQ0NQx5f
216 :
名無しさん@お腹いっぱい。:02/06/22 10:22 ID:pQ0NQx5f
多忙と遅筆な為に大変遅くなりました。
では早速始めます。
次が、VB6(ランタイム)で文字列を比較している箇所の逆汗です。
【msvbvm60.dll】__vbaStrComp
:66024861 837C240402 cmp dword ptr [esp+04], 00000002
:66024866 0F8456350200 je 66047DC2
:6602486C 6801000300 push 00030001
:66024871 FF742408 push [esp+08]
:66024875 FF742410 push [esp+10]
:66024879 FF742418 push [esp+18]
:6602487D FF1574FE1066 call dword ptr [6610FE74] ≪★KoKoDaYo★
:66024883 85C0 test eax, eax
:66024885 0F8C3E350200 jl 66047DC9
:6602488B 48 dec eax
※ :6602487D では OLEAUT32.VarBstrCmpをCALLしています。
【OLEAUT32.DLL】VarBstrCmp
:77A041BE 55 push ebp
:77A041BF 8BEC mov ebp, esp
:77A041C1 51 push ecx
:77A041C2 53 push ebx
:77A041C3 56 push esi
:77A041C4 8B7508 mov esi, dword ptr [ebp+08]
≪中略≫
:77A041FE 894510 mov dword ptr [ebp+10], eax
:77A04201 8B7D0C mov edi, dword ptr [ebp+0C]
:77A04204 8B7508 mov esi, dword ptr [ebp+08]
:77A04207 8B4D10 mov ecx, dword ptr [ebp+10]
:77A0420A 33C0 xor eax, eax
:77A0420C F3 repz
:77A0420D 66A7 cmpsw ≪★KoKo★
:77A0420F 7405 je 77A04216
:77A04211 1BC0 sbb eax, eax
:77A04213 83D8FF sbb eax, FFFFFFFF
デバッガから追いかける場合は、「__vbaStrComp」にBPを仕掛けます。
(SoftIceでは 「bpx msvbvm60!__vbaStrComp」
ブレイクしたらsingle step でOLEAUT32.DLL に入って cmpsw命令の直前まで進めます。
その時点でのesiとediレジスタの中身が、入力したダミーと
それと比較された文字列になっています。
VB6限定でしたら、直接 VarBstrCmp にBPを仕掛けて
そこからトレースしても構いません。
一応、VB5の場合も説明しておきます。
VB5では文字列比較の際にOLEAUT32.DLLは参照されません。
【msvbvm50】__vbaStrComp
:76273563 55 push ebp
:76273564 8BEC mov ebp, esp
:76273566 53 push ebx
:76273567 56 push esi
:76273568 57 push edi
:76273569 837D1000 cmp dword ptr [ebp+10], 00000000
≪中略≫
:7627359F 50 push eax
:762735A0 FF750C push [ebp+0C]
:762735A3 FF7510 push [ebp+10]
:762735A6 E83FA40000 call 7627D9EA ≪★KoKoDaYo★
:762735AB 85C0 test eax, eax
:762735AD 740B je 762735BA
* Referenced by a CALL at Address:
|:762735A6
|
:7627D9EA 56 push esi
:7627D9EB 57 push edi
:7627D9EC 8B7C2410 mov edi, dword ptr [esp+10]
:7627D9F0 8B74240C mov esi, dword ptr [esp+0C]
:7627D9F4 8B4C2414 mov ecx, dword ptr [esp+14]
:7627D9F8 33C0 xor eax, eax
:7627D9FA F3 repz
:7627D9FB 66A7 cmpsw ≪★KoKo★
:7627D9FD 7405 je 7627DA04
:7627D9FF 1BC0 sbb eax, eax
:7627DA01 83D8FF sbb eax, FFFFFFFF
「bpx msvbvm50!__vbaStrComp」でブレイクしたら
single stepでサブルーチンの中に入ってcmpsw命令の直前まで進めます。
VB6の時と同様に、この時点でのesiとediレジスタの中身が
入力したダミーと、それと比較された文字列になっています。
※ __vbaStrCompは__vbaStrCmpから参照されますが、この関数以外からも
参照されていることにご注意。
VBキラーのSmartCheckを使うと、懐石はさらに楽になります。
アセンブリのニーモニックが分からなくても使えます。
「hoge」等とダミーのパスを入力したら、それを検索するだけです。
> LAGGENESIS102.EXE!0001DB9F
> __vbaStrCmp(String:"hellscap...",String:"hoge") returns DWORD:FFFFFFFF
> unsigned short * string1 = 00417080
> ="hellscaper"
> unsigned short * string1 = 00143994
> ="hoge"
このように表示されます。
例として、対象がVariant型でパスを比較していると
デバッガで__vbaStrCmpにbpxしてもブレイクしてくれませんが
SmartCheck なら __vbavartsteqに渡されたダミーパスをしっかり検出してくれます。
様々なイベントやAPIを検出できるので、プログラム側が入力されたパスを
取得・型変換・複写・(四則)演算等々をしている、その瞬間が押さえられます。
強力なツールですのでオススメです。
次に、W32Dasmを使ってみます。
日本語化してあるW32Dasmなら、文字列を参照すれば
入力したパスが間違っている場合、正しい場合等に表示されるメッセージから
追いかけることが出来たりします。
Referenced by で何処から参照されているかが分かりますので
文字列を比較している箇所から、その結果に応じてメッセージを表示する箇所まで
順を追って流れを把握することが容易に出来ますね。
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041DB81(C)
|
:0041DB95 8B45E8 mov eax, dword ptr [ebp-18]
:0041DB98 50 push eax
* Possible StringData Ref from Code Obj ->"hellscaper" ≪★比較対象★
|
:0041DB99 6880704100 push 00417080
* Reference To: MSVBVM60.__vbaStrCmp, Ord:0000h ≪★文字列比較API★
|
:0041DB9E FF1540104000 Call dword ptr [00401040]
:0041DBA4 8BF8 mov edi, eax
:0041DBA6 8D4DE8 lea ecx, dword ptr [ebp-18]
:0041DBA9 F7DF neg edi
:0041DBAB 1BFF sbb edi, edi
:0041DBAD 47 inc edi
:0041DBAE F7DF neg edi
折井さん(OllyDbg)もデバッガの1つですが、
わたし自身が、未だに使い慣れていないもので説明できないです。
ただ、スタックの中身を見るのに、SoftIceのようにいちいちコマンドを打つ必要が無いのは
便利かもしれません。
SoftIce一本だけの説明ではつまらないかと思って
他のツールも使ってみましたが…
わたしが解説できるのは、以上の『取っ掛かり』までです。
>>213にもありますし、わたしはオンラインゲームの懐石やチ―トに関することは
こういうオープンな場所で話題にするのは、あまり好ましく思っておりません。
私利アル系BBSでも、表向き?はタブーとしているところが少なくない様ですしね。
ですので、懐石の結果分かった答は、不特定多数の人の目に入るところでは
明かさないようにおながいします。
自分で書かないで、チュートリアルへのリンクでも早々と貼って済ました方が、かなりマシだったかもですね。
一週間近く待たせた上に、中途半端なままで終わらせて申し訳ないです。
書いていて禿げしく鬱になりますな。
吊って参ります…
225 :
:02/06/25 03:08 ID:???
わかりやすいっぽい気がすます。
ありがとう
でも
smartchekcerで読み込んでスタートさせて、検索boxに入力しても何も見つからない・・
226 :
:02/06/25 08:52 ID:???
偽造シリアルの仕組みについて教えて頂けませんか?(;´Д`)
パスワードとは直接関係ないかもしれないけど
よろしくおながいします。
偽造ってなに?
キージェネ?
ソフトごとのキーチェックルーチンを利用してそのまま総当たり(トリップ検索と同じ)とか、
逆数検索可能なアルゴリズムだったらそのまま逆数を検索すればいい
SmartCheckは、デフォルトの設定ではパフォーマンスを上げる為に
プログラムのエラーやリークを検出するのみで
APIコールは検出しないようになっているはずです。
パス解析する際にAPIコールを調べる場合は
Advanced Settingにある「Suppress system API and OLE calls」の
チェックボックスをクリアしておく必要があります。
Viewで全てのイベントを表示させたら、入力したパス等を検索してみて下さいませ。
偽造しりあるって、聞き慣れない言い方だね。
Keygen作成やってみたいな、といってみるテスト(w
漏れが作ったキージェネは日を浴びることがなかった(カナスィ
230 :
名無しさん@お腹いっぱい。:02/06/28 12:08 ID:J8Uu+eJb
Aceファイルのパスワード解析ソフトってあります?
ある
>>230 Advanced ace password recovery
ってのがある。
これってクラックできるの?
233 :
:02/06/29 16:27 ID:???
>>228 できたーありがと〜。
でも、入力したのを発見するところまでw
ここからどうすればいいんだろう・・
その周りの命令を解読するってころかな。
p.s.
softiceってstart softiceしたあとCTAL+Dでデバッグに移行するんですかねぇ・・
それすると全部が止まってもう一回押すと動き出すのですが。windoes2000
234 :
:02/06/29 21:34 ID:???
iiiiの奴は見つかるんだけど、本物が見つからない・・・
ほんとにあるのかな・
ace圧縮ファイルのパス解析ってどうやるんですか?
236 :
日高工事:02/07/08 09:06 ID:OiBBoAjD
ブチ込み日:7月8日(月)09時01分37秒
工程表ソフトですが、30回起動制限と印刷時にお試し版と表示されます。
パスワード入力式となっておりますが、どうぞお願いいたします。
依然解析いただいたものをバイナリエディタで変更いたしましたが、
解決しませんでしたので、もう一度宜しくお願いいたします。
当方コードは317235と出ております。
依然解析していただいたものです。
TERGET FILE ktwin.exe
0006732f:56 00
00067330:01 00
http://homepage2.nifty.com/asys/KtWinPage.htm
あぼーん
>>236 そりゃ〜違うと思うぜ。
漏れの懐石によると、
59D97 E8 → EB
59D98 7C → 3D
で8桁の適当な数字をパスワード入力すれば一発OKのはず。
どうよ?
あぼーん
240 :
名無しさん@お腹いっぱい。:02/07/16 16:47 ID:PkPa/rV2
宜しくお願いいたします
どうせなら解読までの過程をお願いします。
じゃないとただの依頼スレになっちゃうよ。
既にこのスレ過去ログでhtml化されてるんだね。
>239
GKWINとMTWINPROか?
既に懐石終了してるよ。
同じ会社が作ったソフトだからパターンが同じで楽勝物だったよ。
>238と同じ様にバイナリエディタで書き換えるだけなんだけど…
またあぼーんされる危険を伴う諸刃の剣。
どれか選ぶよろし。
1.メアド晒して情報を貰い正式ユーザーとなる。
2.ここで懐石する。(長文は漏れは辛いのだ)
3.諦めて放置する。
どうする〜アイフル〜。
たまにはセンチになっちゃう時もある
デバッガ起動して、実際にメモリの何処に格納されているか調べてみると、
54136B〜パスワードが設定されました。…OKの時のメッセージ。
5413FC〜セットアップパスワードが不一致です。…NGの時のメッセージ。
となっている。
今度はここを参照している所を探す。
バイナリエディタで検索すると、
3EC77〜OKの時のメッセージの参照。
3ED7D〜NGの時のメッセージの参照。
デバッガでこの辺一帯を調べて見る。
0043F64C E9 08 01 00 00 jmp 0043F759
0043F651 8B C2 mov eax,edx <--このルーチンの先頭
0043F653 C1 E0 02 shl eax,2
0043F656 03 83 5C 03 00 00 add eax,dword ptr [ebx+35Ch]
0043F65C 8B 00 mov eax,dword ptr [eax]
0043F65E 3B 45 D0 cmp eax,dword ptr [ebp-30h]
0043F661 0F 85 F1 00 00 00 jne 0043F758
0043F667 8B D6 mov edx,esi
0043F669 83 EA 01 sub edx,1
0043F66C 72 04 jb 0043F672 <--OKの時
0043F66E 74 30 je 0043F6A0
0043F670 EB 59 jmp 0043F6CB <--NGの時
0043F672 68 86 13 54 00 push 541386h
0043F677 68 6B 13 54 00 push 54136Bh <--OKのメッセージ
0043F67C E8 83 99 FD FF call 00419004
0043F681 83 C4 08 add esp,8
0043F684 8D 8B E4 02 00 00 lea ecx,[ebx+2E4h]
0043F68A C7 83 2C 03 00 00 01 mov dword ptr [ebx+32Ch],1
0043F694 51 push ecx
0043F695 E8 4A 13 00 00 call 004409E4
0043F69A 59 pop ecx
0043F69B E9 A3 00 00 00 jmp 0043F743
0043F6A0 68 BE 13 54 00 push 5413BEh
0043F6A5 68 A3 13 54 00 push 5413A3h
0043F6AA E8 55 99 FD FF call 00419004
0043F6AF 83 C4 08 add esp,8
0043F6B2 8D 83 E4 02 00 00 lea eax,[ebx+2E4h]
0043F6B8 C7 83 2C 03 00 00 02 mov dword ptr [ebx+32Ch],2
0043F6C2 50 push eax
0043F6C3 E8 1C 13 00 00 call 004409E4
0043F6C8 59 pop ecx
0043F6C9 EB 78 jmp 0043F743
0043F6CB 4E dec esi <--NGの処理
0043F6CC B9 0C 00 00 00 mov ecx,0Ch
0043F6D1 8B C6 mov eax,esi
0043F6D3 99 cdq
0043F6D4 F7 F9 idiv eax,ecx
0043F6D6 8B C6 mov eax,esi
0043F6D8 8B FA mov edi,edx
0043F6DA 99 cdq
0043F6DB B9 0C 00 00 00 mov ecx,0Ch
0043F6E0 47 inc edi
0043F6E1 F7 F9 idiv eax,ecx
0043F6E3 05 CE 07 00 00 add eax,7CEh
0043F6E8 8B D7 mov edx,edi
0043F6EA 89 45 CC mov dword ptr [ebp-34h],eax
0043F6ED 8D 4D C8 lea ecx,[ebp-38h]
0043F6F0 66 8B 45 CC mov ax,word ptr [ebp-34h]
0043F6F4 66 89 45 CA mov word ptr [ebp-36h],ax
0043F6F8 88 55 C9 mov byte ptr [ebp-37h],dl
0043F6FB C6 45 C8 0A mov byte ptr [ebp-38h],0Ah
0043F6FF 8B 01 mov eax,dword ptr [ecx]
0043F701 89 83 F8 02 00 00 mov dword ptr [ebx+2F8h],eax
0043F707 6A 00 push 0
0043F709 E8 62 E5 FC FF call 0040DC70
0043F70E 59 pop ecx
0043F70F 8B F0 mov esi,eax
0043F711 8D 83 F8 02 00 00 lea eax,[ebx+2F8h]
0043F717 50 push eax
0043F718 E8 9F AF 02 00 call 0046A6BC
0043F71D 59 pop ecx
0043F71E 50 push eax
0043F71F 68 DB 13 54 00 push 5413DBh
0043F724 56 push esi
0043F725 E8 DE EF 03 00 call 0047E708
0043F72A 83 C4 0C add esp,0Ch
0043F72D 68 EF 13 54 00 push 5413EFh
0043F732 56 push esi
0043F733 E8 CC 98 FD FF call 00419004
0043F738 83 C4 08 add esp,8
0043F73B 33 D2 xor edx,edx
0043F73D 89 93 2C 03 00 00 mov dword ptr [ebx+32Ch],edx
0043F743 8B 4D D4 mov ecx,dword ptr [ebp-2Ch]
0043F746 C6 01 01 mov byte ptr [ecx],1
0043F749 8D 83 E4 02 00 00 lea eax,[ebx+2E4h]
0043F74F 50 push eax
0043F750 E8 8F 12 00 00 call 004409E4
0043F755 59 pop ecx
0043F756 EB 0F jmp 0043F767
0043F758 46 inc esi
0043F759 8B D6 mov edx,esi
0043F75B 3B 93 60 03 00 00 cmp edx,dword ptr [ebx+360h]
0043F761 0F 82 EA FE FF FF jb 0043F651
0043F767 8D B3 E4 02 00 00 lea esi,[ebx+2E4h]
0043F76D 56 push esi
0043F76E E8 99 12 00 00 call 00440A0C
0043F773 59 pop ecx
0043F774 85 C0 test eax,eax
0043F776 75 24 jne 0043F79C
0043F778 68 1F 14 54 00 push 54141Fh
0043F77D 68 FC 13 54 00 push 5413FCh <--NGの時のメッセージ
0043F782 E8 25 99 FD FF call 004190AC
0043F787 83 C4 08 add esp,8
0043F78A 8B 45 D4 mov eax,dword ptr [ebp-2Ch]
0043F78D C6 00 00 mov byte ptr [eax],0
0043F790 8B 55 D8 mov edx,dword ptr [ebp-28h]
0043F793 64 89 15 00 00 00 00 mov dword ptr fs:[0],edx
0043F79A EB 2D jmp 0043F7C9
まとめて見ると、
43F651〜このルーチンの先頭
43F672〜OKの処理
43F6A0〜使用期限付きOK?の処理
43F6CB〜NGの処理
結果としてルーチンの先頭を強制的にOKの処理の所に飛ばせば良い。
具体的には、
0043F651 8B C2 mov eax,edx
の所を
0043F651 EB 1F jmp 0043F672
にする。
結論として、バイナリエディタで以下の様に書きかえる。
3EC51 8B → EB
3EC52 C2 → 1F
zipのpass解読はPikaなどの総当り戦以外方法はないのだろうか…。
バイナリエディタで見ると、
1EACA2〜パスワードが設定されました。…OKの時のメッセージ。
1EAD34〜セットアップパスワードが不一致です。…NGの時のメッセージ。
とあるよね。
デバッガ起動して、実際にメモリの何処に格納されているか調べてみると、
5EC0A2〜パスワードが設定されました。…OKの時のメッセージ。
5EC134〜セットアップパスワードが不一致です。…NGの時のメッセージ。
となっている。
今度はここを参照している所を探す。
バイナリエディタで検索すると、
CC0F9〜OKの時のメッセージの参照。
CC25A〜NGの時のメッセージの参照。
デバッガでこの辺一帯を調べて見る。
004CCACC E9 51 01 00 00 jmp 004CCC22
004CCAD1 8B C1 mov eax,ecx <--このルーチンの先頭
004CCAD3 C1 E0 02 shl eax,2
004CCAD6 03 83 64 03 00 00 add eax,dword ptr [ebx+364h]
004CCADC 8B 00 mov eax,dword ptr [eax]
004CCADE 3B 45 C4 cmp eax,dword ptr [ebp-3Ch]
004CCAE1 0F 85 3A 01 00 00 jne 004CCC21
004CCAE7 8B D1 mov edx,ecx
004CCAE9 83 EA 01 sub edx,1
004CCAEC 72 04 jb 004CCAF2 <--OKの処理へ
004CCAEE 74 37 je 004CCB27
004CCAF0 EB 6A jmp 004CCB5C <--NGの処理へ
004CCAF2 6A 40 push 40h <--OKの処理
004CCAF4 68 BD C0 5E 00 push 5EC0BDh
004CCAF9 68 A2 C0 5E 00 push 5EC0A2h <--OKのメッセージ
004CCAFE 8B C3 mov eax,ebx
004CCB00 E8 6B 3B 0B 00 call 00580670
004CCB05 50 push eax
004CCB06 E8 37 B8 0F 00 call 005C8342
004CCB0B C7 83 34 03 00 00 01 mov dword ptr [ebx+334h],1
004CCB15 8D 93 E4 02 00 00 lea edx,[ebx+2E4h]
004CCB1B 52 push edx
004CCB1C E8 F3 0F 00 00 call 004CDB14
004CCB21 59 pop ecx
004CCB22 E9 E5 00 00 00 jmp 004CCC0C
004CCB27 6A 40 push 40h
004CCB29 68 F5 C0 5E 00 push 5EC0F5h
004CCB2E 68 DA C0 5E 00 push 5EC0DAh
004CCB33 8B C3 mov eax,ebx
004CCB35 E8 36 3B 0B 00 call 00580670
004CCB3A 50 push eax
004CCB3B E8 02 B8 0F 00 call 005C8342
004CCB40 C7 83 34 03 00 00 02 mov dword ptr [ebx+334h],2
004CCB4A 8D 93 E4 02 00 00 lea edx,[ebx+2E4h]
004CCB50 52 push edx
004CCB51 E8 BE 0F 00 00 call 004CDB14
004CCB56 59 pop ecx
004CCB57 E9 B0 00 00 00 jmp 004CCC0C
004CCB5C 49 dec ecx <--NGの処理
004CCB5D BF 0C 00 00 00 mov edi,0Ch
004CCB62 8B C1 mov eax,ecx
004CCB64 6A 0A push 0Ah
004CCB66 99 cdq
004CCB67 F7 FF idiv eax,edi
004CCB69 66 05 CF 07 add ax,7CFh
004CCB6D 8D B3 F8 02 00 00 lea esi,[ebx+2F8h]
004CCB73 50 push eax
004CCB74 8B C1 mov eax,ecx
004CCB76 99 cdq
004CCB77 B9 0C 00 00 00 mov ecx,0Ch
004CCB7C F7 F9 idiv eax,ecx
004CCB7E 42 inc edx
004CCB7F 8D 45 BC lea eax,[ebp-44h]
004CCB82 8B CA mov ecx,edx
004CCB84 5A pop edx
004CCB85 E8 6A AD 0F 00 call 005C78F4
004CCB8A 8B 10 mov edx,dword ptr [eax]
004CCB8C 89 16 mov dword ptr [esi],edx
004CCB8E 8B 50 04 mov edx,dword ptr [eax+4]
004CCB91 89 56 04 mov dword ptr [esi+4],edx
004CCB94 6A 00 push 0
004CCB96 E8 A1 8E F3 FF call 00405A3C
004CCB9B 59 pop ecx
004CCB9C 8B F0 mov esi,eax
004CCB9E 66 C7 45 DC 14 00 mov word ptr [ebp-24h],14h
004CCBA4 FF B3 FC 02 00 00 push dword ptr [ebx+2FCh]
004CCBAA FF B3 F8 02 00 00 push dword ptr [ebx+2F8h]
004CCBB0 33 D2 xor edx,edx
004CCBB2 89 55 F8 mov dword ptr [ebp-8],edx
004CCBB5 8D 45 F8 lea eax,[ebp-8]
004CCBB8 FF 45 E8 inc dword ptr [ebp-18h]
004CCBBB E8 90 2A 0E 00 call 005AF650
004CCBC0 83 7D F8 00 cmp dword ptr [ebp-8],0
004CCBC4 74 05 je 004CCBCB
004CCBC6 8B 55 F8 mov edx,dword ptr [ebp-8]
004CCBC9 EB 05 jmp 004CCBD0
004CCBCB BA 26 C1 5E 00 mov edx,5EC126h
004CCBD0 52 push edx
004CCBD1 68 12 C1 5E 00 push 5EC112h
004CCBD6 56 push esi
004CCBD7 E8 48 F8 0E 00 call 005BC424
004CCBDC 83 C4 0C add esp,0Ch
004CCBDF FF 4D E8 dec dword ptr [ebp-18h]
004CCBE2 8D 45 F8 lea eax,[ebp-8]
004CCBE5 BA 02 00 00 00 mov edx,2
004CCBEA E8 9D A6 0F 00 call 005C728C
004CCBEF 6A 40 push 40h
004CCBF1 68 27 C1 5E 00 push 5EC127h
004CCBF6 56 push esi
004CCBF7 8B C3 mov eax,ebx
004CCBF9 E8 72 3A 0B 00 call 00580670
004CCBFE 50 push eax
004CCBFF E8 3E B7 0F 00 call 005C8342
004CCC04 33 C9 xor ecx,ecx
004CCC06 89 8B 34 03 00 00 mov dword ptr [ebx+334h],ecx
004CCC0C 8B 45 C8 mov eax,dword ptr [ebp-38h]
004CCC0F C6 00 01 mov byte ptr [eax],1
004CCC12 8D 93 E4 02 00 00 lea edx,[ebx+2E4h]
004CCC18 52 push edx
004CCC19 E8 F6 0E 00 00 call 004CDB14
004CCC1E 59 pop ecx
004CCC1F EB 0D jmp 004CCC2E
004CCC21 41 inc ecx
004CCC22 3B 8B 68 03 00 00 cmp ecx,dword ptr [ebx+368h]
004CCC28 0F 8C A3 FE FF FF jl 004CCAD1
004CCC2E 8D B3 E4 02 00 00 lea esi,[ebx+2E4h]
004CCC34 56 push esi
004CCC35 E8 0A 0F 00 00 call 004CDB44
004CCC3A 59 pop ecx
004CCC3B 85 C0 test eax,eax
004CCC3D 75 67 jne 004CCCA6
004CCC3F 66 C7 45 DC 20 00 mov word ptr [ebp-24h],20h
004CCC45 BA 57 C1 5E 00 mov edx,5EC157h
004CCC4A 8D 45 F4 lea eax,[ebp-0Ch]
004CCC4D E8 CA A4 0F 00 call 005C711C
004CCC52 FF 45 E8 inc dword ptr [ebp-18h]
004CCC55 8D 4D F4 lea ecx,[ebp-0Ch]
004CCC58 51 push ecx
004CCC59 BA 34 C1 5E 00 mov edx,5EC134h <--NGのメッセージ
004CCC5E 8D 45 F0 lea eax,[ebp-10h]
004CCC61 E8 B6 A4 0F 00 call 005C711C
004CCC66 FF 45 E8 inc dword ptr [ebp-18h]
004CCC69 8D 4D F0 lea ecx,[ebp-10h]
004CCC6C 51 push ecx
004CCC6D E8 16 A6 F3 FF call 00407288
004CCC72 83 C4 08 add esp,8
004CCC75 FF 4D E8 dec dword ptr [ebp-18h]
004CCC78 8D 45 F0 lea eax,[ebp-10h]
004CCC7B BA 02 00 00 00 mov edx,2
004CCC80 E8 07 A6 0F 00 call 005C728C
004CCC85 FF 4D E8 dec dword ptr [ebp-18h]
004CCC88 8D 45 F4 lea eax,[ebp-0Ch]
004CCC8B BA 02 00 00 00 mov edx,2
004CCC90 E8 F7 A5 0F 00 call 005C728C
004CCC95 8B 4D C8 mov ecx,dword ptr [ebp-38h]
004CCC98 C6 01 00 mov byte ptr [ecx],0
004CCC9B 8B 45 CC mov eax,dword ptr [ebp-34h]
004CCC9E 64 A3 00 00 00 00 mov fs:[00000000],eax
004CCCA4 EB 3E jmp 004CCCE4
まとめて見ると、
4CCAD1〜このルーチンの先頭
4CCAF2〜OKの処理
4CCB27〜使用期限付きOK?の処理
4CCB5C〜NGの処理
結果としてルーチンの先頭を強制的にOKの処理の所に飛ばせば良い。
具体的には、
004CCAD1 8B C1 mov eax,ecx
の所を
004CCAD1 EB 1F jmp 004CCAF2
にする。
結論として、バイナリエディタで以下の様に書きかえる。
CC0D1 8B → EB
CC0D2 C1 → 1F
∩
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(; ´Д`)// < 先生!夏休みの宿題終わりました!
/ / |明日から夜勤で出勤します!
/ /| / \_____________
__| | .| |
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
忘れ物です。
両ソフト共に8桁の適当な数字をパスワードに入れてやって下さい。
文字数チェックがある様です。
272 :
名無しさん@お腹いっぱい。:02/07/31 17:15 ID:c22ai7Wf
コンピュータコンサルタントを務める女性が、すかした野郎のコンピュータ設定を手伝っていた。
彼女はすかした野郎に、ログインに使用するパスワードは何にするかと訊いた。
この野郎は、彼女を困らせてやろうという魂胆で、「penis」と入力しろと言った。
瞬きもせず無言のまま、彼女はこのパスワードを入力した。彼女は、コンピュータの反応に笑い死にそうになった。
”パスワードは無効です。短すぎます。”
あぼーん
あぼーん
hahaha
276 :
もも:02/08/08 08:05 ID:yqsCTO3m
そのソフト直接DL出来ないじゃあないか。
申し込んでCD送ってもらう?
ちょっと非常識じゃないの?
解析依頼する時はDLできる物を選ぶべきだよ。
278 :
名無しさん@お腹いっぱい。:02/08/13 14:12 ID:4MOxzn+w
残念ながら、サイズが数百メガになにますので、アップはできそうにもありません
すみません
そうか。なら数百メガになりそうなものダウソできるお人よしがいなさそうなことくらいわかれ。
つーか氏ね
280 :
しっつもーん:02/08/14 18:46 ID:/LeuHfoS
マイクロソフト社のワードとかエクセルって、パスワードをかけられるけど、あれは解除法があるの?
無節操にageて腐れ質問飛ばす厨ばかりになったね
このスレも終わりか
282 :
しっつもーん:02/08/14 21:34 ID:/LeuHfoS
>>281 それって、漏れのこと?
パスワードかけたワード文書をインターネットメールに添付して送りたいから聞いてるんだが。
一応、会社の書類なんでね。
普段はfaxで送ってるんだけど。
やっぱり厨か。
だな
285 :
しっつもーん:02/08/15 09:41 ID:CC91MEX7
>>283 >>284 このスレはド素人しかいないのか。
質問の意味もわかってないみたいだ。
パスワードを付けるだけで安全に文書を送れるか確認したかったのだが。
がっかりだな。
286 :
:02/08/15 10:35 ID:???
厨>
質問する時もageんなヴォケ
sage進行厳守しろや厨が
そんな質問の仕方では誰も絶対に答えないよ
所詮厨には言ってる内容も理解できないか
DQNリーマンは理解力0
それぐらいGOOGLEで検索
検索もできない馬鹿は氏ね
こーゆうアホは夏以外にもいたはずである。
しかし、夏になると「夏厨」と呼ぶ者がでてくる。
夏以外なら普通に放置されていたはずだ。
ということは、夏厨・夏厨叫ぶやつも一種の「夏厨」なのではないだろうか。
糞厨房を煽っても得られるものは何もないよ
このスレ何気に良スレなんだから少し抑えて
293 :
もも:02/08/16 14:41 ID:4Kj3Fo5n
まだかよ。無能な奴ばっかりだな。
口ばかりで・・
>口ばかりで
~~~~~~~~~~
295 :
:02/08/17 12:56 ID:iL3Lixzp
こんなすれもあるんだな
あるんだな
あるんだね
揚げんなボケ
298 :
296:02/08/18 17:28 ID:???
(゚д゚)
誠意って何かね?
>>298 製品のパスを解析してタダで使う事を目的としたスレ
302 :
お題:02/08/30 16:07 ID:v411kVNT
お題とか偉そうにしてるんじゃねーよ
ファイル暗号化とパスワード解除の区別もできていない
ヴァカのいるスレはここですか?
はい!ここはヴァカスレですよ。
情けない!日本のプログラム技術も地に堕ちた!
まさかこんな糞厨房のヴァカに簡単に解析されてしまうなんて。
大井圭一よやすらかに逝ってくれ。
softiceのマクロ集なんてないっすかね?
309 :
:02/09/20 21:15 ID:LTeWKFEs
試用期間1年経過したので、このスレを終了します。
御試用ありがとうございました。
311 :
:02/09/22 03:15 ID:???
丸一年か、、、ヽ(´Д`;)ノ すごいね
312 :
名無しさん@お腹いっぱい。:02/09/22 12:14 ID:YRQ+4z/8
314 :
anonymous:02/09/28 21:43 ID:7wkkkk9i
自分のVisualC++で作ったExeファイルがあります。
これを逆アゼンブラソフトで、アゼンブル言語に変換します。
このアゼンブル言語だけをもとに、元のEXEファイル、または
VisualC++のソースを作ることはかのうでしょうか
315 :
CAMPS V4:02/09/28 22:16 ID:VAfLNf5L
CAMPS V4 の体験版の解析が思うように出来ません。
C++でやってます
>>314 アプリからVC++のソースを作ることは不可能
そんなことが出来たらMSは商売出来なくなる
317 :
CAMPS V4:02/09/28 22:30 ID:VAfLNf5L
318 :
:02/09/28 22:38 ID:???
319 :
名無しさん@お腹いっぱい。:02/09/29 10:54 ID:cOctc1P2
カーネルデバッグとはなに?
どうしてVBのプログラムは逆アゼンブラしても意味がないのですか
>320
VBの方はP-CODEでコンパイルした場合、中間コードになっている。
もちろんEXEファイルだが、これは実行時にP-CODEコンパイラが、
作動して、中間コードを翻訳しながら実行すると言う仕掛け。
よって中間コードのEXEは機械語では無い。だから逆アセンブラしても
意味が無い訳。
一方ネイティブコンパイラにすれば、完全な機械語になっている。
当然逆アセンブラすれば解析できる。…のだが…
VBのEXEは非常に非効率になっている。
1つの命令を実行するにしても、多くのルーチンを呼び出し、
解析しずらくなっている。VBが遅いと言われる原因でもあるが。
もし、Visual Studioが手元にあるのなら、VBのネイティブコンパイラ
でコンパイルする時、「シンボリック情報を作成」にチェックして
コンパイルしてVCのデバッガで見れば、どれだけ非効率にコンパイル
されているかが良く解かるだろう。
解析者も、出来ない事は無いが、VCと比較すれば、敬遠したいプログラム
である事は確かである。
訂正っす。
誤:これは実行時にP-CODEコンパイラが、
正:これは実行時にP-CODEインタープリタが、
5.0以降はネイティブ吐くだろ
5.0以降でPro以上のVBならネイティブ吐けますが…何か?
>VC++にedbin.exeを読み込ませ、次の様に操作する
読み込ませとありますが、
具体的にどうやればいいのでしょうか
326 :
名無しさん@お腹いっぱい。:02/09/30 00:38 ID:LqSIUPWm
>オンメモリのルーチンから解析する
オンメモリにpgが展開されるのなら、メモリに展開される
前のディスクのpgがあるとおもうのですが、どうなのでしょうか
何に対するレスですか
328 :
327:02/09/30 11:42 ID:sqljWlzQ
一般的な質問です。
どうしてオンメモリの部分で解析する必要があるのかどうか
こんなスレあったのか・・・
前の方で解説してた人もういないのかな?
俺はw32dsmでやってるけど、参考になったよ
最近はFlashMXやってるんだけど、VBoxとやらがよくわからん。
フラッシュ本体も逆汗途中でメモリ足りないとかいわれるし
>>329 ちったぁ検索しろよ
VboxCleaner
331 :
名無しさん@お腹いっぱい。:02/09/30 22:31 ID:yVMjFN3P
332 :
AGE:02/10/06 13:57 ID:GD7cujux
age
VboxCleanerでも最近のは無理だべ?
\ │ /
/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< はつけんはつけん!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< しじゅうしじゅうしじゅう!
S30年代産〜〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」
 ̄ / /