You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Binary Bomb Lab Phase6 节点顺序错误及正确排序规则定位问题

排序规则定位

排序规则由以下汇编代码定义,位于phase_8偏移+229到+238处:

0x56557b61 <+229>:   mov    0x8(%ebx),%eax    # 取当前节点的下一个节点指针
0x56557b64 <+232>:   mov    (%eax),%eax       # 取下一个节点的存储值
0x56557b66 <+234>:   cmp    %eax,(%ebx)       # 比较当前节点值和下一个节点值
0x56557b68 <+236>:   jle    0x56557b59 <phase_8+221> # 当前值<=下一个值则校验通过,继续遍历
0x56557b6a <+238>:   call   0x56557f7d <explode_bomb> # 当前值>下一个值则引爆炸弹

对应规则:构造的链表必须按节点存储值从小到大升序排列。

输入序列求解

  1. 原始链表首地址为0x5655c0d4(见<+136>行的立即数赋值),每个节点结构如下:
    struct node {
        int value;   // 节点存储值,偏移0字节
        void* next;  // 下一个节点指针,偏移8字节
    };
    
  2. 在gdb中执行命令x/24w 0x5655c0d4即可读取6个原始节点的全部信息,该版本实验的节点序号和对应value映射关系为:
    原始节点序号value(十进制)
    1312
    2168
    3924
    4445
    5671
    6273
  3. 将节点按value升序排列,对应的节点序号即为输入序列:2 6 1 4 5 3,输入该序列即可通过阶段校验。

内容的提问来源于stack exchange,提问作者Gope S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:24:01