首先给出 porosity 的 GitHub 地址: here

本文也是根据这个网址进行学习。

1. 创建和约

可以使用自己写的合约,也可以在etherscan 上面找一些合约, 给出例子如下:

//vulnerable.sol pragma solidity ^0.4.4;
contract SendBalance {mapping ( address => uint ) userBalances;function SendBalance(){}function getBalance (address u) constant returns ( uint ){return userBalances [u];}function addToBalance () payable{userBalances[msg.sender] += msg.value ;}function withdrawBalance (){if (!(msg.sender.call.gas(0x1111).value (userBalances [msg . sender])())) { throw ; }userBalances [msg.sender ] = 0;}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2. 下载porosity 并编译

下载之后,在终端进入porosity/porosity/porosity目录
然后输入:make    //编译你会看到生成了porosity(exec)
  • 1
  • 2
  • 3
  • 4
  • 5

3. 使用porosity

a. 在porosity下创建文件夹 solidity-example (自己取得名字随意创),并将合约放在该目录下面。

b. 创建decompile.sh

#!/bin/bash

solc --abi -o output vulnerable.sol
solc --bin -o output vulnerable.sol
solc --bin-runtime -o output vulnerable.solabi=$(< output/SendBalance.abi)
echo "This is abi variable: "
echo $abibin=$(< output/SendBalance.bin)
echo ""
echo "This is bin variable: "
echo $binbinRuntime=$(< output/SendBalance.bin-runtime)
echo ""
echo "This is binruntime variable: "
echo $binRuntimeecho ""
echo "Firstly listing functions: "
#注意路径,指向的是前面编译之后生成的porosity文件
../porosity/porosity/porosity --code $bin --abi $abi --list --verbose 0
echo "Now performing decompilation: "
../porosity/porosity/porosity --code $bin --abi $abi --decompile --verbose 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

c. 授权decompile.sh (只有第一次需要)

输入:chmod 777 decompile.sh
  • 1
  • 2

d.运行decompile.sh

输入:./decompile.sh
  • 1
  • 2

e. 结果,类似于

Porosity v0.1 (https://www.comae.io)
Matt Suiche, Comae Technologies <support@comae.io>
The Ethereum bytecode commandline decompiler.
Decompiles the given Ethereum input bytecode and outputs the Solidity code.Attempting to parse ABI definition...
Success.
[+] Hash: 0x0A19B14A (trade) (1 references)
[+] Hash: 0x0B927666 (order) (1 references)
[+] Hash: 0x19774D43 (orderFills) (1 references)
[+] Hash: 0x278B8C0E (cancelOrder) (1 references)
[+] Hash: 0x2E1A7D4D (withdraw) (1 references)
[+] Hash: 0x338B5DEA (depositToken) (1 references)
[+] Hash: 0x46BE96C3 (amountFilled) (1 references)
[+] Hash: 0x508493BC (tokens) (1 references)
[+] Hash: 0x54D03B5C (changeFeeMake) (1 references)
[+] Hash: 0x57786394 (feeMake) (1 references)
[+] Hash: 0x5E1D7AE4 (changeFeeRebate) (1 references)
[+] Hash: 0x65E17C9D (feeAccount) (1 references)
[+] Hash: 0x6C86888B (testTrade) (1 references)
[+] Hash: 0x71FFCB16 (changeFeeAccount) (1 references)
[+] Hash: 0x731C2F81 (feeRebate) (1 references)
[+] Hash: 0x8823A9C0 (changeFeeTake) (1 references)
[+] Hash: 0x8F283970 (changeAdmin) (1 references)
[+] Hash: 0x9E281A98 (withdrawToken) (1 references)
[+] Hash: 0xBB5F4629 (orders) (1 references)
[+] Hash: 0xC281309E (feeTake) (1 references)
[+] Hash: 0xD0E30DB0 (deposit) (1 references)
[+] Hash: 0xE8F6BC2E (changeAccountLevelsAddr) (1 references)
[+] Hash: 0xF3412942 (accountLevelsAddr) (1 references)
[+] Hash: 0xF7888AEC (balanceOf) (1 references)
[+] Hash: 0xF851A440 (admin) (1 references)
[+] Hash: 0xFB6E155F (availableVolume) (1 references)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/loy_184548/article/details/78152455

EVM反编译软件Porosity的使用-mac相关推荐

  1. 小程序反编译 g is not defined_身边程序用的IDA Pro for Mac(静态反编译软件)

    ida pro mac版专为Mac用户设计,目前最优秀的静态反编译软件之一,这款mac安全工具它不仅可以应用在反编译和动态调试等强大的逆向工程领域,还支持对多种处理器不同类型的可执行模块进行反汇编处理 ...

  2. Window7 安装开源swf反编译软件JPEXS Free Flash Decompiler(FFdec)实录

    FFdec是一个免费开源的swf反编译软件,在Windows,Linux,Mac上都能用,比那个硕思闪客精灵厚道多了,功能也不比它差,我以后就用FFdec了. 官网地址如下: http://www.f ...

  3. 反编译软件dnSpy中修改baml文件

    问题: 使用wpf的visifiref插件,但是会有水印和文本显示,想修改界面去掉文本 you are using the trial version 步骤1: 用反编译软件打开dl文件 步骤2: 搜 ...

  4. java反编器中文版,java反编译软件下载

    java反编译软件是一款专为软件编码制作的反编工具,能够享有便捷的编写界面模式,享有最清晰的运行操作窗口,实现自动检测以及安全提示功能,能够实现便捷的操作方式,运行使用方便,操作简单,欢迎到当易网下载 ...

  5. dnSpy 强大的.Net反编译软件

    一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等.而dnSpy同样是一款优秀的反编译软件,同时它是开源免费的.官方的描述是: dnSpy是一个调试器和. ...

  6. java decompiler 3.11_Java反编译软件(DJ Java Decompiler)下载 v3.11.11.95官方版-第五资源...

    DJ Java Decompiler是一款十分实用的Java反编译软件,该软件可以将编译过的CLASS文件编译还原成为Java原始文件,并且不需要额外安装JVM(Java Virtual Machin ...

  7. java 反编译软件

    1.小颖反编译软件. 最新的Java反编译工具,支持目录级的反编译,也支持双击.class文件就可查看源文件. 2.『XJad』简要介绍 =============================== ...

  8. 最新.NET反编译软件Red Gate .NET Reflector V10.1.3.1218

    最新.NET反编译软件Red Gate .NET Reflector V10.1.3.1218 软件是一个可以将以.NET Framework为基础开发出来的的DLL或EXE文件,反编译为原始程序的工 ...

  9. 如何保护swf文件不被反编译软件破解?

    How to protect SWFs from decompilers? 如何保护swf文件不被反编译软件破解? [ April 24, 2004 ] by Eric Lin 原作:EricLin ...

最新文章

  1. vscode+eslint自动格式化vue代码的方法
  2. Javascript 中的 Function对象
  3. 60秒计时器的仿真电路_基于伏秒平衡的同步整流方案探讨
  4. Java内功修炼系列一工厂模式
  5. 如何选择神经网络的超参数
  6. 图像读取、显示和保存
  7. StackedGAN详解与实现(采用tensorflow2.x实现)
  8. [iOS]学习笔记3(动态性)
  9. java 多线程 int_java多线程问题
  10. Office 365 之 Skype For Business电话功能试用
  11. 约4万个外国人名,中英对照
  12. k近邻算法_机器学习 第38集:k近邻算法k值过小和过大有什么危害?k值如何选取?( 含有笔记、代码、注释 )...
  13. 为什么会有带www的域名和不带www的域名
  14. 第一台计算机英语怎么说,世界第一台计算机英文缩写名为
  15. kubernetes存储 -- Configmap应用配置管理
  16. 怎样将kux格式转换mp4?高效简单的技巧你要懂
  17. OLE程序开发利用(开发EXCEL) 之 一
  18. 华为鸿蒙电视配置,华为旗下荣耀智慧屏PRO55英寸AI摄像头鸿蒙系统4K超清电视机...
  19. 计算机p是什么单位是什么,功率的计算公式及单位
  20. 苹果手机如何找回id密码_iPhone手机ID总是忘记密码,轻松一招帮你找回,原来这么简单...

热门文章

  1. 【BZOJ-1458】士兵占领 最大流
  2. RedHat/CentOS发行版本号及内核版本号对照表
  3. jQuery UI Download
  4. Matlab练习:timer(2)
  5. stdout和stderr标准输出的区别
  6. Linux /dev目录详解
  7. 【转】提纲挈领webrtc之NS(noise suppression)模块
  8. 邵阳学院计算机科学与技术专业分最低,邵阳学院在湖南各专业录取最低分/最低位次...
  9. [云炬创业学笔记]第二章决定成为创业者测试10
  10. USTC English Club Note20171023(2)