【源码搭建商城】【电子喜帖 源码】【ext源码分析】sha1源码

1.Hermes源码分析(二)——解析字节码
2.文件哈希计算工具
3.115sa1如何使用转存?

sha1源码

Hermes源码分析(二)——解析字节码

        前面一节 讲到字节码序列化为二进制是有固定的格式的,这里我们分析一下源码里面是怎么处理的

        这里可以看到首先写入的是魔数,他的值为

        对应的二进制见下图,注意是小端字节序

        第二项是字节码的版本,笔者的版本是,也即 上图中的源码搭建商城4a

        第三项是源码的hash,这里采用的是SHA1算法,生成的哈希值是位,因此占用了个字节

        第四项是文件长度,这个字段是位的,也就是下图中的为0aa,转换成十进制就是电子喜帖 源码,实际文件大小也是这么多

        后面的字段类似,就不一一分析了,头部所有字段的类型都可以在BytecodeFileHeader.h中看到,Hermes按照既定的内存布局把字段写入后再序列化,就得到了我们看到的字节码文件。

        这里写入的数据很多,以函数头的写入为例,我们调用了visitFunctionHeader方法,并通过byteCodeModule拿到函数的签名,将其写入函数表(存疑,在实际的ext源码分析文件中并没有看到这一部分)。注意这些数据必须按顺序写入,因为读出的时候也是按对应顺序来的。

        我们知道react-native 在加载字节码的时候需要调用hermes的prepareJavaScript方法, 那这个方法做了些什么事呢?

        这里做了两件事情:

        1. 判断是否是字节码,如果是则调用createBCProviderFromBuffer,否则调用createBCProviderFromSrc,我们这里只关注createBCProviderFromBuffer

        2.通过BCProviderFromBuffer的构造方法得到文件头和函数头的信息(populateFromBuffer方法),下面是这个方法的实现。

        BytecodeFileFields的populateFromBuffer方法也是一个模版方法,注意这里调用populateFromBuffer方法的是一个 ConstBytecodeFileFields对象,他代表的php内核源码是不可变的字节码字段。

        细心的读者会发现这里也有visitFunctionHeaders方法, 这里主要为了复用visitBytecodeSegmentsInOrder的逻辑,把populator当作一个visitor来按顺序读取buffer的内容,并提前加载到BytecodeFileFields里面,以减少后面执行字节码时解析的时间。

        Hermes引擎在读取了字节码之后会通过解析BytecodeFileHeader这个结构体中的字段来获取一些关键信息,例如bundle是否是字节码格式,是否包含了函数,字节码的版本是否匹配等。注意这里我们只是解析了头部,没有解析整个字节码,免费jsp源码后面执行字节码时才会解析剩余的部分。

        evaluatePreparedJavaScript这个方法,主要是调用了HermesRuntime的 runBytecode方法,这里hermesPrep时上一步解析头部时获取的BCProviderFromBuffer实例。

        runBytecode这个方法比较长,主要做了几件事情:

        这里说明一下,Domain是用于垃圾回收的运行时模块的代理, Domain被创建时是空的,并跟随着运行时模块进行传播, 在运行时模块的整个生命周期内都一直存在。在某个Domain下创建的所有函数都会保持着对这个Domain的强引用。当Domain被回收的时候,这个Domain下的所有函数都不能使用。

        未完待续。。。

文件哈希计算工具

       NetFileHash是一款基于C#开发的文件哈希计算工具,支持MD5、SHA1、SHA、SHA、SHA算法。

       功能特点包括:视频演示、下载地址、VirusTotal检测、微步沙箱报告以及源码地址。

       项目展示三个阶段:未计算、计算中、计算完成。

       举例校验信息,以文件"C:\Users\Master\Desktop\FileHash.exe"为例,大小为字节,计算得到以下哈希值:

       MD5: DA7CAAAA3CD8D9CBD

       SHA1: DD2FECFA6E0DCEE3FC6

       SHA: EAECD9BDB8BAFDACDCBFCEFB2AB

       SHA: BC3EBB8CBCD6DFCFDE2DEBAFB2DCDFDEFDA7FEA

       SHA: CAE7D3EE1AD7BEDBFABCDA6EBBCC4BFF5AEB2ECEE1EEA3F5B

sa1如何使用转存?

       sha1链接使用步骤如下:

       工具:联想小新、Windows、kiwi浏览器V.0..9、油猴4.、转存插件安装包。

       1、首先下载油猴和转存插件安装包。

       2、打开kiwi浏览器,点击右上角三个点打开菜单,点击扩展程序。

       3、打开开发者模式,点击load,找到本地的Tampermonkey安装包。

       4、点击kiwi浏览器右上角的三个点打开菜单,找到下面的Tampermonkey,点击管理面板。

       5、点击实用工具,导入,选择文件,找到本地的转存助手安装包,点击打开,安装即可。

       6、kiwi浏览器打开所用的链接,拉到底点网页版,登录账号就能看见转存按钮了。

更多内容请点击【知识】专栏

精彩资讯