Skip to content

Instantly share code, notes, and snippets.

@sohainewbie
Last active April 17, 2022 17:11
Show Gist options
  • Save sohainewbie/f0e257220323d7ab4fe1fb7d9ab711cc to your computer and use it in GitHub Desktop.
Save sohainewbie/f0e257220323d7ab4fe1fb7d9ab711cc to your computer and use it in GitHub Desktop.
hello.py
from qiling import *
from qiling.arch.evm.exceptions import Revert
from eth_abi import decode_single
if __name__ == '__main__':
contract = '0x608060405234801561001057600080fd5b506040516104293803806104298339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b8382019150602082018581111561006957600080fd5b825186600182028301116401000000008211171561008657600080fd5b8083526020830192505050908051906020019080838360005b838110156100ba57808201518184015260208101905061009f565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505050806000908051906020019061010492919061010b565b50506101b0565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061014c57805160ff191683800117855561017a565b8280016001018555821561017a579182015b8281111561017957825182559160200191906001019061015e565b5b509050610187919061018b565b5090565b6101ad91905b808211156101a9576000816000905550600101610191565b5090565b90565b61026a806101bf6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635dbb8d5014610030575b600080fd5b6100e96004803603602081101561004657600080fd5b810190808035906020019064010000000081111561006357600080fd5b82018360208201111561007557600080fd5b8035906020019184600183028401116401000000008311171561009757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610164565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561012957808201518184015260208101905061010e565b50505050905090810190601f1680156101565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060008260405160200180838054600181600116156101000203166002900480156101c75780601f106101a55761010080835404028352918201916101c7565b820191906000526020600020905b8154815290600101906020018083116101b3575b505082805190602001908083835b602083106101f857805182526020820191506020810190506020830392506101d5565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905091905056fea26469706673582212205ffee4006d9d5a9c388ed4f7b81a050d497e0ad356e901460a9037d995a1e90764736f6c63430006000033000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000026869000000000000000000000000000000000000000000000000000000000000'
ql = Qiling(code=contract, archtype="evm")
user1 = ql.arch.evm.create_account(balance=100*10**18)
contract_addr = ql.arch.evm.create_account()
print('User address: ' + user1.hex())
print('Contract address: ' + contract_addr.hex())
msg0 = ql.arch.evm.create_message(user1, b'', code=ql.code, contract_address=contract_addr)
ql.run(code=msg0)
call_data = '5dbb8d50' + ql.arch.evm.abi.convert(['string'], [' KucingLiar'])
msg1 = ql.arch.evm.create_message(user1, contract_addr, data=call_data)
data = ql.run(code=msg1)
print(decode_single('(string)', data.output)[0])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment