合约反编译

# Palkeoramix decompiler. 

def _fallback() payable: # default function
  idx = 0
  while idx < calldata.size / 168:
      mem[272 len 20] = call.data[(168 * idx) + 26 len 20]
      mem[601 len 11] = call.data[(168 * idx) + 179 len 11]
      mem[889 len 11] = call.data[(168 * idx) + 179 len 11]
      mem[960 len 4] = call.data[(168 * idx) + 22 len 4]
      mem[992 len 36] = call.data[(168 * idx) + 143 len 36]
      mem[1539 len 1] = call.data[(168 * idx) + 46 len 1]
      mem[1604 len 64] = call.data[(168 * idx) + 47 len 64]
      mem[1832] = call.data[(168 * idx) + 111]
      mem[2120] = call.data[(168 * idx) + 111]
      mem[2036 len 20] = call.data[(168 * idx) + 26 len 20]
      call 0x7f268357a8c2552623316e2562d90e642bb538e5.atomicMatch_(address addrs, uint256 uints, uint8 feeMethodsSidesKindsHowToCalls, bytes calldataBuy, bytes calldataSell, bytes replacementPatternBuy, bytes replacementPatternSell, bytes staticExtradataBuy, bytes staticExtradataSell, uint8 vs, bytes32 rssMetadata) with:
         value mem[580 len 21], call.data[(168 * idx) + 179 len 11] wei
           gas gas_remaining wei
          args 0x7f268357a8c2552623316e2562d90e642bb538e5, 0x35634b55f3d99b071b5a354f48e10bef, 0, mem[96 len 36], 0xbaf2127b49fc93cbca6269fade0f7f31df4c88a7, mem[164 len 64], 0x7f268357a8c2552623316e2562d90e642bb538e5, mem[260 len 12], call.data[(168 * idx) + 26 len 20], mem[292], 0x5b3256965e7c3cf26e11fcaf296dfc8807c01073, 0xbaf2127b49fc93cbca6269fade0f7f31df4c88a7, mem[388 len 213], call.data[(168 * idx) + 179 len 11], mem[612 len 158], call.datamem[772 len 117], call.data[(168 * idx) + 179 len 11], mem[900 len 60], call.data[(168 * idx) + 22 len 4], mem[964 len 28], call.data[(168 * idx) + 143 len 36], 1, mem[1060 len 64], 1, 1, 1, mem[1220], 1, 1696, 1984, 2272, 2560, 2848, 2880, mem[1476 len 63], call.data[(168 * idx) + 46 len 1], mem[1540 len 64], call.data[(168 * idx) + 47 len 64], mem[1668 len 36], 983465108885, mem[1736], caller, mem[1800 len 12], call.data * idx) + 111], mem[1864], 192, mem[1928 len 64], 983465108885, mem[2024 len 12], call.data[(168 * idx) + 26 len 20], mem[2056 len 44], call.data * idx) + 111], mem[2152], 192, mem[2216 len 60], 228, mem[2308 len 4], -1, mem[2344 len 220], 228, mem[2596 len 36], -1, mem[2664 len 252]
      idx = idx + 1
      continue 
  if eth.balance(this.address):
      call caller with:
         value eth.balance(this.address) wei
           gas gas_remaining wei

这是所有的合约反编译结果,循环中类似mem[272 len 20]我理解是定义变量接收calldata中截取从特定位置开始的特定长度的参数?但是在后面的call过程中没有再次出现过。所以想知道这个memcall.data[]具体是在做什么,可能理解有变差?

请先 登录 后评论

1 个回答

Ree
请先 登录 后评论
  • 1 关注
  • 0 收藏,2826 浏览
  • 提出于 2022-03-30 17:13