首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EVMPatch:自动修补以太坊智能合约

EVMPATCH具有用于流行以太坊区块链字节重写引擎,并且透明/自动地将常见现成合约重写为升级合约。...在其核心部分,框架利用字节重写器将最小程度侵入式补丁应用于EVM智能合约。结合基于代理升级智能合约,这种字节重写方法使开发人员可以自动引入补丁并将其部署区块链。...但是,某些情况下,如果(1)漏洞报告与EVMPATCH尚不支持错误类相关,或者(2)补丁测试程序报告至少一个事务因以下原因而失败,则需要开发人员干预:新引入补丁程序,失败事务不是已知攻击事务,...(3)补丁测试程序报告新引入补丁程序阻止至少一个已知攻击事务。...使用补丁程序测试器观察所有失败事务,并对补丁合约字节进行手动分析,以确定根本原因是Solidity编译器中问题,即与简单无符号减法相比,生成代码需要附加指令。

31320

101项智能合约安全检查清单

合约应使用与其测试过编译版本/标志去部署。锁定 pragma(例如在pragma solidity 0.5.10中不使用 ^ ) 可以确保合约不会意外地被部署到一个有修正错误编译版本。...solc >=0.5.0中,修改状态(汇编中或其他)但被标记为constant/pure/view函数会因为使用STATICCALL操作而在solc >=0.5.0中回退(之前版本中工作)。...solc 0.4.10和0.8.0之间,require()使用REVERT (0xfd)操作失败时退还剩余 Gas ,而*assert()*使用 INVALID (0xfe)操作,消耗了所有提供...(见此处[98]) **构造函数中调用初始化函数指针:**由于编译器错误,在用solc版本0.4.5-0.4.25和0.5.0-0.5.7编译合约构造函数中调用初始化函数指针会导致意外行为...当在bytesNN类型执行编译时常量值(不是索引)为 31 索引访问时,或在内联汇编中使用字节操作时,会发生这种情况。这是由于v0.5.5中引入编译器错误,并在v0.5.7中得到了修复。

1.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

《计算机系统2》学习笔记

其中 0x01 是最高位有效字节,0x67 是最低位有效字节。 小端法:低位数低地址,x86机器,Intel兼容机,GoogleAndroid,AppleiOS。...其中 0x01 是最高位有效字节,0x67 是最低位有效字节。 大端法:低位数高地址,IBM机器。 ARM微处理器:双端法。...已知一段给定时间内,CPU共访问内存4500次,其中340次访问主存。问: Cache命中率是多少? Cpu访问内存平均时间是多少纳秒? Cache-主存系统效率是多少?...,匹配加入到U; b)f是静态库,将U中符号与f定义符号相匹配,存在匹配模块m符号,E = E U {m},否则丢弃该库。...库函数被合并到可执行目标文件中,磁盘上存放着数千个可执行文件,造成磁盘空间极大浪费。 程序员需关注是否有函数库版本出现,并须定期下载、重新编译和链接,使用不便且编译耗时。

21320

BIP141 隔离见证交易

witnessScript被反序列,并在正常脚本评估后使用剩余witness栈继续执行(每个堆栈项小于等于520字节). 脚本一定不能执行失败,并在栈产生一个TRUE。...如果版本字节是0,但是witness program既不是20字节,也不是32字节,这个脚本必须失败1。...也就是说,CHECKSIG被记为一个操作,CHECKMULTISIG根据参数被记为1到20个操作。这个规则适用于标准witness program和P2SH witness program。...无信任确认交易依赖链 Segregated witness 从根本修正了交易延展性问题,以一种无信任方式构建确认交易依赖链。...确认交易依赖链是更复杂支付网络基本组成部分,例如:全双工微型支付通道和闪电网络,可能隐式极大提升比特币系统拓展性和效率。

67030

java虚拟机(JVM)

Java虚拟机屏蔽了与具体操作系统平台相关信息,使得Java程序只需生成Java虚拟机上运行目标代码(字节),就可以多种平台上不加修改地运行。...该技术体系主要应用于小型电子消费类产品,如手机中应用程序等。 Java5.0版本后,更名为JAVAEE JAVASE JAVAME Java语言特点:跨平台性 什么是跨平台性?...Java程序开发体验–运行 步骤三:运行 • 有了可执行java程序(Demo.class字节文件) • 通过运行工具java.exe对字节文件进行执行。...• 发现没有编译失败,但也没有任何效果,因为并没有告诉JVM要帮我们 做什么事情,也就是没有可以具体执行语句。...编译失败,注意错误出现行数,在到源代码中指定位置排错。

40810

SkeyeARS 视频编码之H.264结构详解

假设一个 NAL 单元达到无线那边时,校验和检测失败,网关可以选择从 NAL 流中去掉这个 NAL 单元,也可以把已知被破坏 NAL 单元传给接收端。...NRI(2 bits):Nal_ref_idc,重要性指示位,用于重构过程中标记一个 NAL 单元重要性,值越大,越重要。...11 流结束。 12 填充。 13~23 保留。 24~31 使用。..., RBSP 基础填加了仿校验字节(0x03),它原因是: NALU 加到 Annexb 时,需要添加每组 NALU 之前开始 StartCodePrefix,如果该 NALU 对应 slice...为了使 NALU 主体中不包括与开始相冲突,在编码时,每遇到两个字节连续为 0,就插入一个字节 0x03。解码时将 0x03 去掉。也称为 "脱壳操作"。

34610

Java运行时数据区域

Java 虚拟机概念模型里,字节解释器工作时就是通过改变程序计数器值来选取下一条需要执行字节指令,程序计数器是程序控制流指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖程序计数器来完成...每一个栈帧中分配多少内存基本类结构确定下来时就已知(尽管在运行期会由即时编译器进行一些优化, 但在基于概念模型讨论里,大体可以认为是编译期可知) ---局部变量表局部变量表存放了编译期可知各种...Class 文件中除了有类版本、字段、方法、接口等描述信息外,还有一项信息是常量池表(Constant Pool Table),常量池表用于存放编译期生成各种字面量与符号引用,这部分内容将在类加载后存放到方法区运行时常量池中... Java 虚拟机概念模型里,字节解释器工作时就是通过改变程序计数器值来选取下一条需要执行字节指令,程序计数器是程序控制流指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖程序计数器来完成...每一个栈帧中分配多少内存基本类结构确定下来时就已知(尽管在运行期会由即时编译器进行一些优化,但在基于概念模型讨论里,大体可以认为是编译期可知),因此这三个运行时数据区域内存分配和回收都具备确定性

42820

Java Web安全之代码审计

二、反编译技巧 渗透测试时候需要审计代码通常是class文件或者jar包,那么我们应该如何审计呢?让我们先来学习一下什么是Java源码和字节。 1....Java类编译与反编译基础 简单说Java源码就是未经编译.java文件,我们可以很轻松阅读其中代码逻辑,而字节.class文件则是.java文件经过编译之后产生字节文件,因为.class...Test.java 源码、字节 ? 由于class文件可读性较差,通常我们需要使用Java反编译工具来反编译代码。...文件读取程序字节,如果JBE仍无法读取类信息还可以使用JDK自带javap命令来读取class类字节,如果上诉所有的方法都无法反编译,那么恐怕是这个类本身就存在无法编译问题要么可能就是类文件被加密处理过...4.手机、邮箱验证、找回密码等涉及到动态验证等功能限制验证失败次数、验证有效期、验证码长度过短导致验证爆破问题。

2K30

【Java零基础入门篇】第 ① 期 - Java概述

——>字节文件(二进制文件)——>解释/运行——>解释器——>操作系统 1.2搭建Java开发环境 Java开发环境 Java开发运行环境是指Java开发工具和相应硬/软件环境,目前主流是Oracle...步骤二:编译 有了java源文件,通过编译器将其编译成JVM可以识别的字节文件; 命令提示符窗口(win+R)中操作。...如果程序没有错误,没有任何提示,在当前目录下会出现一个HelloWorld.class文件,该文件称为字节文件,也是可以执行java程序。...步骤三:解释程序,对生成Hello.classJVM执行。...,否则编译失败编译失败,注意错误出现行数,再到源代码中指定位置改错 总结 JDK,JRE,JVM关系; 环境变量path配置及其作用; Java程序编写、编译、运行步骤: Java

5710

逆袭Flutter? Facebook 发布全新跨平台引擎 Hermes!

于是我们架构层面做了一些针对性优化设计,具体内容有: 字节编译 通常来说,JavaScript 引擎会在加载后才解析 JavaScript 源代码并生成字节,JavaScript 代码需要在生成字节后才开始执行...为了跳过这一步,Hermes 引入了一个预编译器,移动应用构建过程中运行。这样一来优化字节时间可以更长,使字节更小、效率更高。现在还可以针对整个程序做优化,例如删除重复数据和打包字符串表等。...,但预编译字节会削弱这一优势。...为了快速重载,Hermes 调试版本不使用预编译;相反,它们设备懒惰地生成字节。这样开发者就可以使用 Metro 或其他纯 JavaScript 代码源进行快速迭代。...代价是懒惰编译字节不包括生产构建所有优化特性。实际虽然我们能注意到性能上差距,但我们发现这种方法足以不影响生产指标的情况下提供良好开发者体验。

1.9K40

DataFrame和Dataset简介

2.3 DataSet Dataset 也是分布式数据集合, Spark 1.6 版本被引入,它集成了 RDD 和 DataFrame 优点,具备强类型特点,同时支持 Lambda 函数,但只能在...上面的描述可能并没有那么直观,下面的给出一个 IDEA 中代码编译示例: 这里一个可能疑惑是 DataFrame 明明是有确定 Scheme 结构 (即列名、列字段类型都是已知),但是为什么还是无法对列名进行推断和错误判断...它首先将用户代码转换成 unresolved logical plan(解决逻辑计划),之所以这个计划是解决,是因为尽管您代码语法是正确,但是它引用表或列可能不存在。...解析失败则拒绝执行,解析成功则将结果传给 Catalyst 优化器 (Catalyst Optimizer),优化器是一组规则集合,用于优化逻辑计划,通过谓词下推等方式进行优化,最终输出优化后逻辑执行计划...4.3 执行 选择一个物理计划后,Spark 运行其 RDDs 代码,并在运行时执行进一步优化,生成本地 Java 字节,最后将运行结果返回给用户。

2.1K10

工具箱之 IKVM.NET 项目新进展

Java和.NET是目前软件开发两种主要技术,Java 8虽然是一种较旧技术,已经完成了大量工作。因此,当涉及到重用性时,.NET中使用在Java中创建库是一种非常普遍做法。...NET开发JVM,它提供了字节转换和验证,类加载等功能,当前支持Java 8,这也是Java 使用最多版本。...b) ikvmc:将 Java 字节编译为 CIL, 用于将 Java 类和 jar 编译为 .NET 程序集(“静态模式”)。此工具将 Java 字节转换为 .NET DLL 和 exe。...,一个 Java 字节到 .NET IL 转换器。...虽然 IKVM.NET 不包括用于.NETJava编译器,但您可以使用任何Java编译器将Java源代码编译为JVM字节,然后使用“ikvmc -target:exe myapp.jar”来生成.NET

1.3K20

重新学Java系列之Java简介

Java历史 Java 是1991年由 Sun Microsystems James Gosling 创建一种编程语言。Java 目标是编写一次程序,然后多个操作系统运行该程序。...例如:必须预先定义所使用变量类型,并且相对严格地转换为其他对象,大多数情况下必须由程序员来完成。 解释和编译语言:Java 源代码被转换为字节格式,该字节格式不依赖于目标平台。...这些字节指令将由 Java 虚拟机(JVM)解释。JVM 包含一个所谓 Hotspot-Compiler,它将可提高性能关键字节指令转换为本机代码指令。...Java 程序由 Java 编译编译字节。Java 虚拟机解释该字节并执行 Java 程序。 ? 4....有些时候,程序员用开发工具调用 Java 编译器( javac )。Java编译器创建字节指令。这些指令存储 .class 文件中,可以由 Java 虚拟机执行。 6.

46620

更轻量级 V8 引擎

例如:优化代码;类型反馈,用于确定如何优化代码;用于 C++ 和 JavaScript 对象之间进行绑定冗余元数据;仅在特殊情况下才需要元数据,如堆栈跟踪符号;还有页面加载期间仅执行几次函数字节... V8 v7.3 版本中启动精简模式与 v7.1 相比,通过禁用代码优化,不分配反馈矢量以及执行很少执行字节老化(如下所述),使典型网页堆大小减少了 22%。...为了不进行这些回归情况下将节省大部分内存用于常规 V8,我们转而采用了另一种方法,该函数执行了一定数量字节(当前为1KB)之后,开始惰性分配反馈向量。...为了避免这种浪费,现在编译字节时不收集源位置(假设连接调试器或分析器),仅在实际生成堆栈跟踪时(例如,调用 Error.stack 或将异常栈跟踪打印到控制台时)才收集源。...我们必须解决一个问题是需要重复字节生成,而这是以前无法保证。如果 V8 收集源位置时与原始代码生成不同字节,则源位置不对齐,并且堆栈跟踪可能指向源代码中错误位置。

1.3K20

手把手教你实现自定义应用层协议

实现自己应用功能时,已知知名协议(http,smtp,ftp等)安全性、扩展性等方面不能满足需求,从而需要设计并实现自己应用层协议。...3.协议优劣基本评判标准 高效 快速打包解包减少对cpu占用,高数据压缩率降低对网络带宽占用。 简单 易于人理解、程序解析。 易于扩展预知变更,有足够弹性用于扩展。...4.自定义应用层协议优缺点 4.1优点 非知名协议,数据通信更安全,黑客如果要分析协议漏洞就必须先破译你通讯协议。 扩展性更好,可以根据业务需求和发展扩展自己协议,而已知知名协议不好扩展。...协议头 8字节定长协议头。支持版本号,基于魔数快速校验,不同服务复用。定长协议头使协议易于解析且高效。 协议体 变长json作为协议体。...json使用明文文本编码,可读性强、易于扩展、前后兼容、通用编解码算法。json协议体为协议提供了良好扩展性和兼容性。

37460

简述JVM基础(六):虚拟机字节执行引擎

执行引擎有统一外观(Java虚拟机规范),不同类型虚拟机都遵循了这一规范,输入字节文件,解析字节处理,然后输出结果。 二、运行时栈帧结构 ?...即使通过,字节校验阶段也会检查出来而导致类加载失败; 3、操作数栈(Operand Stack) 操作栈,后入先出; 最大深度:Code属性表中max_stacks; 32位数据类型所占栈容量为1,...特点是: 只能被invokestatic和invokespecial指令调用 不可继承或者重写,编译时已经确定了一个版本类加载时会把符合引用解析为该方法直接引用。...内联消除了方法调用成本,还为其他优化手段建立良好基础。 编译进行内联时,如果是非虚方法,那么直接内联。...字节方法都是通过常量池中符号作为参数指定,有些编译解析确定,有些运行行时转化为直接引用。首先记住,JVM是基于栈执行引擎。栈有着先入后出特点,执行引擎指令也仅执行当前栈。

65810

移动安全(二)|APK打包流程及签名安全机制初探

(dex文件是dalvik虚拟机可执行文件,其大小约为原始apk文件大小四分之一) 安装过程具体表现为: 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节...怎样才能有这样特性呢?主要就是依靠java虚拟机(JVM)。当我们编写好一个java程序之后如test.java。然后将其编译为一个字节文件test.class。...java虚拟机上运行这个字节文件,java虚拟机就可以把字节文件解释成具体平台上机器指令执行,而实现了java跨平台特性。... Android 5.0 版本中默认使用 ART,DVM 从此退出历史舞台。 具体参考:https://www.jianshu.com/p/a37d3be0a341。...基于此文件安全机制可以进行文件完整性校验:如果APK包文件被修改,APK安装校验时,被修改文件与MANIFEST.MF校验信息不同,程序将无法正常安装,同理CERT.SF和CERT.RSA文件同样应用于

95710

Solidity开发智能合约安全建议

锁定编译版本有助于确保合约不会被用于最新可能还有bug未被发现编译器去部署。智能合约也可能会由他人部署,而pragma标明了合约作者希望使用哪个版本编译器来部署合约。...由于遭受攻击损失是巨大,因此你还必须改变你编写软件方式来抵御各种攻击。 我们倡导“时刻准备失败",提前知道你代码是否安全是不可能。...然而,我们可以允许合约以预知方式失败,然后最小化失败带来损失。本章将带你了解如何为预知失败做准备。 注意:当你向你系统添加新组件时总是伴随着风险。...状态 当前代码被部署到哪里 编译版本,使用标志以及用于验证部署字节步骤与源代码匹配 将用于不同阶段编译版本和标志 部署代码的当前状态(包括未决问题,性能统计信息等) 已知问题 合约主要风险...新能够被编译成EVM字节函数式编程语言: 像Solidity这种函数式编程语言相比面向过程编程语言能够保证功能不变性和编译时间检查。通过确定性行为来减少出现错误风险。

1.2K50
领券