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

如何求解使compare函数返回0xb88202的输入变量num?

求解输入变量num的步骤

已知compare函数的逻辑为:

uint compare(uint num) {
     return (num ^ 0x735) >> 4 ^ 0x6f0;
}

要求调用compare(num)返回0xb88202,可通过逆向运算推导num:

  1. 逆向最后一步异或
    设A = (num ^ 0x735) >> 4,根据函数逻辑有:
    A ^ 0x6f0 = 0xb88202
    异或的逆操作是自身,两边同时异或0x6f0得到:
    A = 0xb88202 ^ 0x6f0 = 0xb884f2

  2. 逆向右移4位操作
    A是(num ^ 0x735)右移4位的结果,逻辑右移4位会丢弃原数的低4位,因此逆运算时(num ^ 0x735)可表示为:
    (num ^ 0x735) = (A << 4) | k
    其中k是0~0xf之间的任意整数(对应被丢弃的低4位)。

计算A << 4:
0xb884f2 << 4 = 0xb884f20

  1. 逆向第一步异或
    对等式两边同时异或0x735得到num:
    num = ((A << 4) | k) ^ 0x735

代入数值计算基础解(取k=0时):
num = 0xb884f20 ^ 0x735 = 0xb884815

所有可能的解

由于k可取0~0xf,num的低4位会对应变化,所有可能值为:

  • 0xb884810、0xb884811、0xb884812、0xb884813
  • 0xb884814、0xb884815、0xb884816、0xb884817
  • 0xb884818、0xb884819、0xb88481a、0xb88481b
  • 0xb88481c、0xb88481d、0xb88481e、0xb88481f

任意选择其中一个值作为输入,都能让compare函数返回0xb88202。

内容的提问来源于stack exchange,提问作者user1803637

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:40:44