You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I wanted to use gigahorse to identify the proxy call instructions in the fallback function, but found that the fallback functions of some contracts were not separated, and the logic of these fallback functions was in the function selector. This was a hindrance to what I wanted to do. The example contract below fits this scenario.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract ReceiveEther {
uint public a = 0;
uint public b = 0;
fallback() external payable {
a += 1;
emit Received(msg.sender, msg.value, a);
}
receive() external payable {
b += 1;
emit Received(msg.sender, msg.value, b);
}
}
The following is the decompilation result of the example contract.
function __function_selector__() public {
...
// The logic of fallback function.
Begin block 0x93
prev=[0x33, 0x37], succ=[0xa4]
=================================
0x94: v94(0x1) = CONST
0x96: v96(0x0) = CONST
0x9a: v9a = SLOAD v96(0x0)
0x9b: v9b(0xa4) = CONST
0xa0: va0(0x1af) = CONST
0xa3: va3_0 = CALLPRIVATE va0(0x1af), v9a, v94(0x1), v9b(0xa4)
...
}
The text was updated successfully, but these errors were encountered:
I wanted to use gigahorse to identify the proxy call instructions in the fallback function, but found that the fallback functions of some contracts were not separated, and the logic of these fallback functions was in the function selector. This was a hindrance to what I wanted to do. The example contract below fits this scenario.
The following is the decompilation result of the example contract.
The text was updated successfully, but these errors were encountered: