最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

LyScript實(shí)現(xiàn)計(jì)算片段Hash并寫出Excel的示例代碼

 更新時(shí)間:2022年09月13日 09:44:08   作者:lyshark  
本案例將學(xué)習(xí)運(yùn)用LyScript計(jì)算特定程序中特定某些片段的Hash特征值,并通過xlsxwriter這個(gè)第三方模塊將計(jì)算到的hash值存儲(chǔ)成一個(gè)excel表格,感興趣的可以跟隨小編一起學(xué)習(xí)一下

本案例將學(xué)習(xí)運(yùn)用LyScript計(jì)算特定程序中特定某些片段的Hash特征值,并通過xlsxwriter這個(gè)第三方模塊將計(jì)算到的hash值存儲(chǔ)成一個(gè)excel表格,本例中的知識(shí)點(diǎn)可以說已經(jīng)具備了簡(jiǎn)單的表格輸出能力,如果時(shí)間充裕完全可以實(shí)現(xiàn)自動(dòng)化報(bào)告生成。

第一步實(shí)現(xiàn)計(jì)算特定片段的特征值,此類代碼實(shí)現(xiàn)原理用戶傳入一個(gè)rva相對(duì)地址以及讀入指令長(zhǎng)度,并通過內(nèi)置的hashlib庫(kù)實(shí)現(xiàn)計(jì)算內(nèi)存段內(nèi)指令的特征,如下代碼先來實(shí)現(xiàn)計(jì)算兩段指令特征。

import hashlib
import zlib,binascii
from LyScript32 import MyDebug

# 計(jì)算哈希
def calc_hash(dbg, rva,size):
    read_list = bytearray()
    ref_hash = { "va": None, "size": None, "md5":None, "sha256":None, "sha512":None, "crc32":None }

    # 得到基地址
    base = dbg.get_local_module_base()

    # 讀入數(shù)據(jù)
    for index in range(0,size):
        readbyte = dbg.read_memory_byte(base + rva + index)
        read_list.append(readbyte)

    # 計(jì)算特征
    md5hash = hashlib.md5(read_list)
    sha512hash = hashlib.sha512(read_list)
    sha256hash = hashlib.sha256(read_list)
    # crc32hash = binascii.crc32(read_list) & 0xffffffff

    ref_hash["va"] = hex(base+rva)
    ref_hash["size"] = size
    ref_hash["md5"] = md5hash.hexdigest()
    ref_hash["sha256"] = sha256hash.hexdigest()
    ref_hash["sha512"] = sha512hash.hexdigest()
    ref_hash["crc32"] = hex(zlib.crc32(read_list))
    return ref_hash

if __name__ == "__main__":
    dbg = MyDebug()
    connect = dbg.connect()

    # 傳入相對(duì)地址,計(jì)算計(jì)算字節(jié)
    ref = calc_hash(dbg,0x19fd,10)
    print(ref)

    # 計(jì)算第二段
    ref = calc_hash(dbg,0x1030,26)
    print(ref)

    dbg.close()

計(jì)算后輸出字典格式:

第二部使用第三方庫(kù),將讀入的hash參數(shù)寫出到表格內(nèi),并在下方生成hash圖例,方便觀察。

import hashlib
import time
import zlib,binascii
from LyScript32 import MyDebug
import xlsxwriter

# 計(jì)算哈希
def calc_hash(dbg, rva,size):
    read_list = bytearray()
    ref_hash = { "va": None, "size": None, "md5":None, "sha256":None, "sha512":None, "crc32":None }

    # 得到基地址
    base = dbg.get_local_module_base()

    # 讀入數(shù)據(jù)
    for index in range(0,size):
        readbyte = dbg.read_memory_byte(base + rva + index)
        read_list.append(readbyte)

    # 計(jì)算特征
    md5hash = hashlib.md5(read_list)
    sha512hash = hashlib.sha512(read_list)
    sha256hash = hashlib.sha256(read_list)
    # crc32hash = binascii.crc32(read_list) & 0xffffffff

    ref_hash["va"] = hex(base+rva)
    ref_hash["size"] = size
    ref_hash["md5"] = md5hash.hexdigest()
    ref_hash["sha256"] = sha256hash.hexdigest()
    ref_hash["sha512"] = sha512hash.hexdigest()
    ref_hash["crc32"] = hex(zlib.crc32(read_list))
    return ref_hash

if __name__ == "__main__":
    dbg = MyDebug()
    connect = dbg.connect()

    # 打開一個(gè)被調(diào)試進(jìn)程
    dbg.open_debug("D:\\Win32Project.exe")

    # 傳入相對(duì)地址,計(jì)算計(jì)算字節(jié)
    ref = calc_hash(dbg,0x19fd,10)
    print(ref)

    ref2 = calc_hash(dbg,0x1030,26)
    print(ref2)

    ref3 = calc_hash(dbg,0x15EB,46)
    print(ref3)

    ref4 = calc_hash(dbg,0x172B,8)
    print(ref4)

    # 寫出表格
    workbook = xlsxwriter.Workbook("pe_hash.xlsx")
    worksheet = workbook.add_worksheet()

    headings = ["VA地址", "計(jì)算長(zhǎng)度", "MD5", "SHA256", "SHA512","CRC32"]
    data = [
        [ref.get("va"),ref.get("size"),ref.get("md5"),ref.get("sha256"),ref.get("sha512"),ref.get("crc32")],
        [ref2.get("va"), ref2.get("size"), ref2.get("md5"), ref2.get("sha256"), ref2.get("sha512"), ref2.get("crc32")],
        [ref3.get("va"), ref3.get("size"), ref3.get("md5"), ref3.get("sha256"), ref3.get("sha512"), ref3.get("crc32")],
        [ref4.get("va"), ref4.get("size"), ref4.get("md5"), ref4.get("sha256"), ref4.get("sha512"), ref4.get("crc32")]
    ]

    # 定義表格樣式
    head_style = workbook.add_format({"bold": True, "align": "center", "fg_color": "#D7E4BC"})
    worksheet.set_column("A1:F1", 15)

    # 逐條寫入數(shù)據(jù)
    worksheet.write_row("A1", headings, head_style)
    for i in range(0, len(data)):
        worksheet.write_row("A{}".format(i + 2), data[i])

    # 添加條形圖,顯示前十個(gè)元素
    chart = workbook.add_chart({"type": "line"})
    chart.add_series({
        "name": "=Sheet1!$B$1",              # 圖例項(xiàng)
        "categories": "=Sheet1!$A$2:$A$10",  # X軸 Item名稱
        "values": "=Sheet1!$B$2:$B$10"       # X軸Item值
    })
    chart.add_series({
        "name": "=Sheet1!$C$1",
        "categories": "=Sheet1!$A$2:$A$10",
        "values": "=Sheet1!$C$2:$C$10"
    })
    chart.add_series({
        "name": "=Sheet1!$D$1",
        "categories": "=Sheet1!$A$2:$A$10",
        "values": "=Sheet1!$D$2:$D$10"
    })

    # 添加柱狀圖標(biāo)題
    chart.set_title({"name": "計(jì)算HASH統(tǒng)計(jì)圖"})
    # chart.set_style(8)

    chart.set_size({'width': 500, 'height': 250})
    chart.set_legend({'position': 'top'})

    # 在F2處繪制
    worksheet.insert_chart("H2", chart)
    workbook.close()


    # 關(guān)閉被調(diào)試進(jìn)程
    time.sleep(1)
    dbg.close_debug()
    dbg.close()

生成后的圖例效果如下:

到此這篇關(guān)于LyScript實(shí)現(xiàn)計(jì)算片段Hash并寫出Excel的示例代碼的文章就介紹到這了,更多相關(guān)LyScript算片段Hash內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python如何實(shí)現(xiàn)拆分?jǐn)?shù)據(jù)集

    Python如何實(shí)現(xiàn)拆分?jǐn)?shù)據(jù)集

    這篇文章主要介紹了Python如何實(shí)現(xiàn)拆分?jǐn)?shù)據(jù)集問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python35種繪圖函數(shù)詳細(xì)總結(jié)

    python35種繪圖函數(shù)詳細(xì)總結(jié)

    Python有許多用于繪圖的函數(shù)和庫(kù),比如Matplotlib,Plotly,Bokeh,Seaborn等,這只是一些常用的繪圖函數(shù)和庫(kù),Python還有其他繪圖工具,如Pandas、ggplot等,選擇適合你需求的庫(kù),可以根據(jù)你的數(shù)據(jù)類型、圖形需求和個(gè)人偏好來決定,本文給大家總結(jié)了python35種繪圖函數(shù)
    2023-08-08
  • Python函數(shù)定義及傳參方式詳解(4種)

    Python函數(shù)定義及傳參方式詳解(4種)

    這篇文章主要介紹了Python函數(shù)定義及傳參方式詳解(4種),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 一文掌握python中的__init__的意思及使用場(chǎng)景分析

    一文掌握python中的__init__的意思及使用場(chǎng)景分析

    __init__是構(gòu)造方法,誰調(diào)用,表示誰(更直觀的理解就是類的方法中,誰調(diào)用,表示誰,見下面第一個(gè)代碼)??!并不是必選項(xiàng),也就是說在類中,這個(gè)不是必須用的,那什么場(chǎng)景需要用到,什么場(chǎng)景不需要用到呢,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • 進(jìn)一步探究Python的裝飾器的運(yùn)用

    進(jìn)一步探究Python的裝飾器的運(yùn)用

    這篇文章主要介紹了更為深入的Python的裝飾器的運(yùn)用,Python的裝飾器是Python學(xué)習(xí)進(jìn)階當(dāng)中的重要知識(shí)點(diǎn),需要的朋友可以參考下
    2015-05-05
  • Web自動(dòng)化之Selenium常用操作方法大全

    Web自動(dòng)化之Selenium常用操作方法大全

    Selenium是一種自動(dòng)化測(cè)試工具,可以用于測(cè)試Web應(yīng)用程序,它提供了一組用于自動(dòng)化Web瀏覽器進(jìn)行測(cè)試的API,下面這篇文章主要給大家介紹了關(guān)于Web自動(dòng)化之Selenium常用操作方法的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Python中iter函數(shù)的具體使用

    Python中iter函數(shù)的具體使用

    Python中iter函數(shù)用于創(chuàng)建迭代器對(duì)象,可以遍歷可迭代對(duì)象的元素,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • python輸出第n個(gè)默尼森數(shù)的實(shí)現(xiàn)示例

    python輸出第n個(gè)默尼森數(shù)的實(shí)現(xiàn)示例

    這篇文章主要介紹了python輸出第n個(gè)默尼森數(shù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python 一維二維插值實(shí)例

    python 一維二維插值實(shí)例

    這篇文章主要介紹了python 一維二維插值實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python清理數(shù)據(jù)的八種常用方法

    Python清理數(shù)據(jù)的八種常用方法

    在本文中,我們將介紹Python中一些常用的數(shù)據(jù)清理方法,包括數(shù)據(jù)預(yù)覽、缺失值處理、異常值處理、數(shù)據(jù)類型轉(zhuǎn)換、重復(fù)值處理、數(shù)據(jù)標(biāo)準(zhǔn)化、特征選擇以及處理類別數(shù)據(jù),感興趣的可以了解一下
    2023-11-11

最新評(píng)論

南江县| 常德市| 称多县| 郴州市| 宁化县| 义乌市| 临海市| 方城县| 达日县| 长春市| 遂平县| 原阳县| 金山区| 读书| 沙湾县| 黑龙江省| 上高县| 新巴尔虎左旗| 响水县| 神木县| 涟源市| 海口市| 陕西省| 延川县| 永安市| 玛多县| 金溪县| 育儿| 平乐县| 红原县| 抚顺县| 朝阳区| 宜良县| 灵石县| 利津县| 瓮安县| 辽阳市| 定日县| 津南区| 清河县| 广安市|