[解決済み] Binary Bomb Phase_6 Node Order?
質問
バイナリーボムをやっていて、なんとかフェーズ6までは順調に進んでいるのですが、この最後のフェーズ(シークレットフェーズ以外)がわからなくて頭を抱えているので、何かアドバイスをお願いします。
ボムアッセンブリー
08048db5 <phase_6>:
8048db5: 56 push %esi
8048db6: 53 push %ebx
8048db7: 83 ec 44 sub $0x44,%esp
8048dba: 8d 44 24 10 lea 0x10(%esp),%eax
8048dbe: 89 44 24 04 mov %eax,0x4(%esp)
8048dc2: 8b 44 24 50 mov 0x50(%esp),%eax
8048dc6: 89 04 24 mov %eax,(%esp)
8048dc9: e8 fe 04 00 00 call 80492cc <read_six_numbers>
8048dce: be 00 00 00 00 mov $0x0,%esi
8048dd3: 8b 44 b4 10 mov 0x10(%esp,%esi,4),%eax
8048dd7: 83 e8 01 sub $0x1,%eax
8048dda: 83 f8 05 cmp $0x5,%eax
8048ddd: 76 05 jbe 8048de4 <phase_6+0x2f>
8048ddf: e8 a9 04 00 00 call 804928d <explode_bomb>
8048de4: 83 c6 01 add $0x1,%esi
8048de7: 83 fe 06 cmp $0x6,%esi
8048dea: 74 1b je 8048e07 <phase_6+0x52>
8048dec: 89 f3 mov %esi,%ebx
8048dee: 8b 44 9c 10 mov 0x10(%esp,%ebx,4),%eax
8048df2: 39 44 b4 0c cmp %eax,0xc(%esp,%esi,4)
8048df6: 75 05 jne 8048dfd <phase_6+0x48>
8048df8: e8 90 04 00 00 call 804928d <explode_bomb>
8048dfd: 83 c3 01 add $0x1,%ebx
8048e00: 83 fb 05 cmp $0x5,%ebx
8048e03: 7e e9 jle 8048dee <phase_6+0x39>
8048e05: eb cc jmp 8048dd3 <phase_6+0x1e>
8048e07: 8d 44 24 10 lea 0x10(%esp),%eax
8048e0b: 8d 5c 24 28 lea 0x28(%esp),%ebx
8048e0f: b9 07 00 00 00 mov $0x7,%ecx
8048e14: 89 ca mov %ecx,%edx
8048e16: 2b 10 sub (%eax),%edx
8048e18: 89 10 mov %edx,(%eax)
8048e1a: 83 c0 04 add $0x4,%eax
8048e1d: 39 d8 cmp %ebx,%eax
8048e1f: 75 f3 jne 8048e14 <phase_6+0x5f>
8048e21: bb 00 00 00 00 mov $0x0,%ebx
8048e26: eb 1d jmp 8048e45 <phase_6+0x90>
8048e28: 8b 52 08 mov 0x8(%edx),%edx
8048e2b: 83 c0 01 add $0x1,%eax
8048e2e: 39 c8 cmp %ecx,%eax
8048e30: 75 f6 jne 8048e28 <phase_6+0x73>
8048e32: eb 05 jmp 8048e39 <phase_6+0x84>
8048e34: ba 38 c1 04 08 mov $0x804c138,%edx
8048e39: 89 54 b4 28 mov %edx,0x28(%esp,%esi,4)
8048e3d: 83 c3 01 add $0x1,%ebx
8048e40: 83 fb 06 cmp $0x6,%ebx
8048e43: 74 17 je 8048e5c <phase_6+0xa7>
8048e45: 89 de mov %ebx,%esi
8048e47: 8b 4c 9c 10 mov 0x10(%esp,%ebx,4),%ecx
8048e4b: 83 f9 01 cmp $0x1,%ecx
8048e4e: 7e e4 jle 8048e34 <phase_6+0x7f>
8048e50: b8 01 00 00 00 mov $0x1,%eax
8048e55: ba 38 c1 04 08 mov $0x804c138,%edx
8048e5a: eb cc jmp 8048e28 <phase_6+0x73>
8048e5c: 8b 5c 24 28 mov 0x28(%esp),%ebx
8048e60: 8d 44 24 2c lea 0x2c(%esp),%eax
8048e64: 8d 74 24 40 lea 0x40(%esp),%esi
8048e68: 89 d9 mov %ebx,%ecx
8048e6a: 8b 10 mov (%eax),%edx
8048e6c: 89 51 08 mov %edx,0x8(%ecx)
8048e6f: 83 c0 04 add $0x4,%eax
8048e72: 39 f0 cmp %esi,%eax
8048e74: 74 04 je 8048e7a <phase_6+0xc5>
8048e76: 89 d1 mov %edx,%ecxi
8048e78: eb f0 jmp 8048e6a <phase_6+0xb5>
8048e7a: c7 42 08 00 00 00 00 movl $0x0,0x8(%edx)
8048e81: be 05 00 00 00 mov $0x5,%esi
8048e86: 8b 43 08 mov 0x8(%ebx),%eax
8048e89: 8b 00 mov (%eax),%eax
8048e8b: 39 03 cmp %eax,(%ebx)
8048e8d: 7d 05 jge 8048e94 <phase_6+0xdf>
8048e8f: e8 f9 03 00 00 call 804928d <explode_bomb>
8048e94: 8b 5b 08 mov 0x8(%ebx),%ebx
8048e97: 83 ee 01 sub $0x1,%esi
8048e9a: 75 ea jne 8048e86 <phase_6+0xd1>
8048e9c: 83 c4 44 add $0x44,%esp
8048e9f: 5b pop %ebx
8048ea0: 5e pop %esi
8048ea1: c3 ret
以下の値を持つ6つのノードからなるリンクリストを作成していることが分かりました。
ノード Hex: Dec:
1: 169 361
2: 186 390
3: 31b 795
4: 1df 479
5: 365 869
6: 20d 525
6つの数字を探すために、ある順序でノードを入力する必要があるのだと思いますが、その順序がどうなっているのかがわかりません。ノードをどのように、どこで使っているのか、コードを調べてみたところ、次のようなことがわかりました。
8048e8b: 39 03 cmp %eax,(%ebx)
はノードの2つの値を比較しているのですが、どのノードが比較されるかを決定するものがわからないようです。この比較の後、爆発しています。唯一爆発を回避できたのは、6が入力の2番目の数字である場合ですが、その場合は次の処理で爆発してしまいます。
SOで調べてみると、ほとんどの人のボムは、値の昇順でノードを探していることがわかりました。私はこの方法と降順で試してみましたが、どちらも爆弾を解除することはできませんでした。
_ 6 _ _ _ _
つまり、私が助けを必要としているのは、爆弾が出力として求めている順序を決定することだと思います。私は明らかな何かを見逃しているだけだと確信していますが、数時間アセンブリを行った後、私の脳は燃えています。
よろしくお願いします。
解決方法は?
ちょうど解決しました。
将来的に誰かの役に立つかもしれないので、私の問題を紹介します。
コードの中に、基本的に7 - X(Xはインデックス)である行があります。
つまり、私のノードの降順は
5 3 6 4 2 1
そこで、各指数を取って7からマイナスする必要があり、それが私の入力でした。
<ブロッククオート2 4 1 3 5 6
爆弾の信管を外す
関連
-
[解決済み] MIPSの大、小、大
-
[解決済み] 018Hと0cHは、アセンブリでは何の略ですか?具体的には「cH」と「0」「h」のプリフィックス/ポストフィックス
-
[解決済み] アセンブリで値をnullに設定する
-
[解決済み] アセンブリのNEG
-
[解決済み] error: invalid effective address エラー:有効なアドレスがありません。
-
[解決済み] linuxのsys_readシステムコールを作ると、レジスタeaxに何が入るのでしょうか?
-
[解決済み] MIPSアセンブリ言語では、なぜ.globl mainを使うのですか?
-
[解決済み] 未解決のシンボルが残る コードコンポーザースタジオ
-
[解決済み] cmp命令の理解
-
[解決済み] ST(0)をEAXに移動させる方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン