欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python利用capstone實現(xiàn)反匯編

 更新時間:2022年04月06日 08:39:54   作者:lyshark  
Capstone是一個輕量級的多平臺、多架構(gòu)的反匯編框架,該模塊支持目前所有通用操作系統(tǒng),反匯編架構(gòu)幾乎全部支持。本文就將利用他實現(xiàn)反匯編,感興趣的可以了解下

Capstone是Kali Linux自帶的一款輕量級反匯編引擎。它可以支持多種硬件構(gòu)架,如ARM、ARM64、MIPS、X86。該框架使用C語言實現(xiàn),但支持C++、Python、Ruby、OCaml、C#、Java和Go語言,具有很好的擴展性。因此,該框架被256種工具所集成,如Cuckoo、Binwalk、IntelliJ IDEA。滲透測試人員一額可以通過Python、Ruby語言編寫腳本,引入Capstone引擎,從而構(gòu)建自己的反匯編工具。

Capstone作為一個輕量級的多平臺、多架構(gòu)的反匯編框架,該模塊支持目前所有通用操作系統(tǒng),反匯編架構(gòu)幾乎全部支持。

capstone使用起來非常簡單,如果只需要靜態(tài)反匯編,則幾行代碼即可完成該功能了。

from capstone import *

# powerby LyShark
def Disassembly(path,BaseAddr,FileOffset,ReadByte):
    with open(path,"rb") as fp:
        fp.seek(int(FileOffset))
        opcode = fp.read(int(ReadByte))

    md = Cs(CS_ARCH_X86, CS_MODE_32)
    for item in md.disasm(opcode, 0):
        addr = int(BaseAddr) + item.address
        dic = {"Addr": str(addr) , "OpCode": item.mnemonic + " " + item.op_str}
        print(dic)

if __name__ == "__main__":
    # 文件名 內(nèi)存地址 開始位置 長度
    Disassembly("d://Win32Project.exe",401000,0,1024)

如果需要針對.text節(jié)進行反匯編,則需要通過pefile模塊找到該節(jié)所對應(yīng)到文件中的位置,并從該位置開始向下反編譯即可,代碼如下:

from capstone import *
import pefile

# 遍歷整個可執(zhí)行文件并返回匯編代碼,有一個小Bug
# powerby LyShark
def FOA_Disassembly(FilePath):
    opcode_list = []
    pe = pefile.PE(FilePath)
    ImageBase = pe.OPTIONAL_HEADER.ImageBase

    for item in pe.sections:
        if str(item.Name.decode('UTF-8').strip(b'\x00'.decode())) == ".text":
            # print("虛擬地址: 0x%.8X 虛擬大小: 0x%.8X" %(item.VirtualAddress,item.Misc_VirtualSize))
            VirtualAddress = item.VirtualAddress
            VirtualSize = item.Misc_VirtualSize
            ActualOffset = item.PointerToRawData
    StartVA = ImageBase + VirtualAddress
    StopVA = ImageBase + VirtualAddress + VirtualSize
    with open(FilePath,"rb") as fp:
        fp.seek(ActualOffset)
        HexCode = fp.read(VirtualSize)

    md = Cs(CS_ARCH_X86, CS_MODE_32)
    for item in md.disasm(HexCode, 0):
        addr = hex(int(StartVA) + item.address)
        dic = {"Addr": str(addr) , "OpCode": item.mnemonic + " " + item.op_str}
        print("[+] 反匯編地址: {} 參數(shù): {}".format(addr,dic))
        opcode_list.append(dic)
    return opcode_list

if __name__ == "__main__":
    ref = FOA_Disassembly("d://Win32Project.exe")
    print(ref)

到此這篇關(guān)于Python利用capstone實現(xiàn)反匯編的文章就介紹到這了,更多相關(guān)Python capstone反匯編內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python基礎(chǔ)之遞歸函數(shù)

    python基礎(chǔ)之遞歸函數(shù)

    這篇文章主要介紹了python遞歸函數(shù),實例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下
    2021-10-10
  • python的launcher用法知識點總結(jié)

    python的launcher用法知識點總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python的launcher用法知識點總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-08-08
  • 結(jié)合Python的SimpleHTTPServer源碼來解析socket通信

    結(jié)合Python的SimpleHTTPServer源碼來解析socket通信

    SimpleHTTPServer是Python中一個現(xiàn)成的HTTP服務(wù)器例子,本文我們將結(jié)合Python的SimpleHTTPServer源碼來解析socket通信,我們先來看一下socket的基本概念:
    2016-06-06
  • 用Python實現(xiàn)一個模仿UP主彈幕控制的直播間功能

    用Python實現(xiàn)一個模仿UP主彈幕控制的直播間功能

    up主通過代碼實現(xiàn)了實時讀取直播間里的彈幕內(nèi)容,進而控制自己的電腦,把彈幕翻譯成指令操控《賽博朋克2077》游戲,這篇文章主要介紹了用Python實現(xiàn)一個模仿UP主彈幕控制的直播間功能,需要的朋友可以參考下
    2021-12-12
  • Python+selenium實現(xiàn)瀏覽器基本操作詳解

    Python+selenium實現(xiàn)瀏覽器基本操作詳解

    這篇文章主要為大家詳細介紹了如何通過python腳本實現(xiàn)瀏覽器的一些基本操作,如:瀏覽器的前進后退、頁面刷新等,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • Django使用 Bootstrap 樣式修改書籍列表過程解析

    Django使用 Bootstrap 樣式修改書籍列表過程解析

    這篇文章主要介紹了Django使用 Bootstrap 樣式修改書籍列表過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python3如何實現(xiàn)Win10桌面自動切換

    Python3如何實現(xiàn)Win10桌面自動切換

    這篇文章主要介紹了Python3如何實現(xiàn)Win10桌面自動切換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • python實現(xiàn)二分查找算法

    python實現(xiàn)二分查找算法

    這篇文章主要介紹了python如何實現(xiàn)二分查找算法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下。
    2020-09-09
  • python制作抖音代碼舞

    python制作抖音代碼舞

    這篇文章主要為大家詳細介紹了python制作抖音代碼舞的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Django Web開發(fā)中django-debug-toolbar的配置以及使用

    Django Web開發(fā)中django-debug-toolbar的配置以及使用

    正在發(fā)愁怎么調(diào)試Django,就遇到了Django Debug Toolbar這個利器。下面這篇文章主要給大家介紹了關(guān)于django web開發(fā)中django-debug-toolbar的配置以及使用的相關(guān)資料,文中通過圖文及示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-05-05

最新評論