Python+LyScript實現自定義反匯編

LyScript 插件默認提供了一個get_disasm_code()方法可以直接獲取到指定行數得反匯編代碼,但如果需要自定義獲取或者是需要自己封裝一個反匯編方法,則你可以用如下兩種方式來得到。

LyScript項目地址: https://github.com/lyshark/LyScript

第一步直接獲取到指定EIP位置得反匯編代碼,這段代碼可以這樣來寫。

from LyScript32 import MyDebugif __name__ == "__main__":    dbg = MyDebug()    conn = dbg.connect()    # 獲取當前EIP地址    eip = dbg.get_register("eip")    print("eip = {}".format(hex(eip)))    # 向下反匯編字節數    count = eip + 15    while True:        # 每次得到一條反匯編指令        dissasm = dbg.get_disasm_one_code(eip)        print("0x{:08x} | {}".format(eip, dissasm))        # 判斷是否滿足退出條件        if eip >= count:            break        else:            # 得到本條反匯編代碼得長度            dis_size = dbg.assemble_code_size(dissasm)            eip = eip + dis_size    dbg.close()    pass

輸出效果如下。

第二步得到當前EIP機器碼,獲取到當前EIP指針所在位置得機器碼,你可以靈活運用反匯編代碼得組合實現。

from LyScript32 import MyDebug# 得到機器碼def GetHexCode(dbg,address):    ref_bytes = []    # 首先得到反匯編指令,然后得到該指令得長度    asm_len = dbg.assemble_code_size( dbg.get_disasm_one_code(address) )    # 循環得到每個機器碼    for index in range(0,asm_len):        ref_bytes.append(dbg.read_memory_byte(address))        address = address + 1    return ref_bytesif __name__ == "__main__":    dbg = MyDebug()    conn = dbg.connect()    # 獲取當前EIP地址    eip = dbg.get_register("eip")    print("eip = {}".format(hex(eip)))    # 得到機器碼    ref = GetHexCode(dbg,eip)    for i in range(0,len(ref)):        print("0x{:02x} ".format(ref[i]),end="")    dbg.close()    pass

輸出效果如下所示:

如果將如上兩種方法結合在一起,那么你就可以獲取到x64dbg反匯編窗口中得三個主要參數區中得內容了。

from LyScript32 import MyDebug# 得到機器碼def GetHexCode(dbg,address):    ref_bytes = []    # 首先得到反匯編指令,然后得到該指令得長度    asm_len = dbg.assemble_code_size( dbg.get_disasm_one_code(address) )    # 循環得到每個機器碼    for index in range(0,asm_len):        ref_bytes.append(dbg.read_memory_byte(address))        address = address + 1    return ref_bytesif __name__ == "__main__":    dbg = MyDebug()    conn = dbg.connect()    # 獲取當前EIP地址    eip = dbg.get_register("eip")    print("eip = {}".format(hex(eip)))    # 向下反匯編字節數    count = eip + 20    while True:        # 每次得到一條反匯編指令        dissasm = dbg.get_disasm_one_code(eip)        print("0x{:08x} | {:50} | ".format(eip, dissasm),end="")        # 得到機器碼        ref = GetHexCode(dbg, eip)        for i in range(0, len(ref)):            print("0x{:02x} ".format(ref[i]), end="")        print()        # 判斷是否滿足退出條件        if eip >= count:            break        else:            # 得到本條反匯編代碼得長度            dis_size = dbg.assemble_code_size(dissasm)            eip = eip + dis_size    dbg.close()    pass

獲取效果圖如下:

到此這篇關于Python+LyScript實現自定義反匯編得內容就介紹到這了,更多相關Python LyScript反匯編內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!

聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
發表評論
更多 網友評論1 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 色噜噜狠狠成人网| 久久久久人妻精品一区蜜桃 | 4399理论片午午伦夜理片| 牛牛影院毛片大全免费看| 天天操天天操天天操| 免费看a级毛片| www.jizz在线观看| 男生和女生一起差差差差| 好男人好影视在线观看视频| 免费无码看av的网站| eeuss影院在线观看| ririai66视频在线播放| 秋葵app官网免费下载地址| 孕交videodesexo孕交| 免费在线观看色| 99资源在线观看| 欧美日韩高清性色生活片| 国产精品拍拍拍| 亚洲AV无码一区二区三区在线| 成人黄色免费网址| 日韩制服丝袜在线| 国产三级日本三级韩国三级在线观看| 久久久久久人妻一区二区三区| 美腿丝袜中文字幕| 孩交精品xxxx视频视频| 人妻互换一二三区激情视频| 91欧美一区二区三区综合在线| 欧美人与牲动交xxxx| 好紧的小嫩木耳白浆| 亚洲精品无码专区在线 | 亚洲人成网站在线观看播放青青| 亚洲精品aaa| 日本高清免费中文字幕不卡| 四虎永久网址影院| tom影院亚洲国产一区二区| 波多野结衣在线不卡| 国产精品亚洲片在线观看不卡 | 男女猛烈xx00免费视频试看| 国产麻传媒精品国产AV| 亚洲av无码一区二区三区观看 | 美女的胸www又黄的网站|