Mas0n
to be reverse engineer🐧
翻车鱼

Dart编译的版本哈希摘写

Dart编译的版本哈希摘写

在上一篇关于Flutter的解析文章中,简要介绍了一下代表版本的md5哈希值的由来。在这篇文章里详细阐述哈希值的生成流程。

分析 make_version.py,这里取部分代码

VM_SNAPSHOT_FILES = [
    # Header files.
    'clustered_snapshot.h',
    'datastream.h',
    'image_snapshot.h',
    'object.h',
    'raw_object.h',
    'snapshot.h',
    'snapshot_ids.h',
    'symbols.h',
    # Source files.
    'clustered_snapshot.cc',
    'dart.cc',
    'dart_api_impl.cc',
    'image_snapshot.cc',
    'object.cc',
    'raw_object.cc',
    'raw_object_snapshot.cc',
    'snapshot.cc',
    'symbols.cc',
]


def MakeSnapshotHashString():
    vmhash = hashlib.md5()
    for vmfilename in VM_SNAPSHOT_FILES:
        vmfilepath = os.path.join(utils.DART_DIR, 'runtime', 'vm', vmfilename)
        with open(vmfilepath, 'rb') as vmfile:
            vmhash.update(vmfile.read())
    return vmhash.hexdigest()

遍历了VM_SNAPSHOT_FILES中列出的一些文件,读取数据并依次压入vmhash而后进行哈希计算。

本文链接:https://blog.shi1011.cn/rev/android/879
本文采用 CC BY-NC-SA 4.0 Unported 协议进行许可

Mas0n

文章作者

发表回复

textsms
account_circle
email

翻车鱼

Dart编译的版本哈希摘写
在上一篇关于Flutter的解析文章中,简要介绍了一下代表版本的md5哈希值的由来。在这篇文章里详细阐述哈希值的生成流程。 分析 make_version.py,这里取部分代码 VM_SNAPSHOT_FI…
扫描二维码继续阅读
2021-02-10