StoneAeon SAET 代币合约的逆向工程

  显然 SAET 合约(也包括 SCGT 合约、SAEQ 合约)均无法通过合理手段获得其 abi.json (应用二进制文件),而且 PlatON Scan 也无法通过 Contract ByteCode 直观地获取该合约的字节码,因此需要使用一些操作,为反汇编做准备。

获取 SAET 的合约字节码示例
web3.platon.getCode('lat1fus638skn3mark8gdjerqkd0euyrg4jysxy5vp').then(res=>{
    console.log(res);
})

输出合约字节码(部分)
0x608060405234801561001057600080fd5b50600436106102695760003560e01c80636f01418611610151578063bf135267116100c3578063dd55267311610087578063dd5526731461052c578063dd62ed3e14610535578063e3056a341461056e578063f2fde38b14610581578063f85b08a514610594578063fd5485641461059d57600080fd5b8063bf135267146104cb578063c6c3285b146104f4578063d9342a1314610507578063da57e63114610510578063db006a751461051957600080fd5b80637ebab240116101155780637ebab2401461046e578063926edc6e1461048157806395d89b411461048a578063a457c2d714610492578063a694fc3a146104a5578063a9059cbb146104b857600080fd5b80636f01418614610401......

  通过字节码可以进行反汇编得到相应的 Public Methods,并由此手写 abi.json,再结合合约地址与 abi 信息,可以通过 rpc 节点端口向链上查询 SAET 合约信息或发送交易。


1 Like