博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pefile解析PE格式
阅读量:6246 次
发布时间:2019-06-22

本文共 2071 字,大约阅读时间需要 6 分钟。

import os,sysimport pefileimport pydasmimport struct#print sys.argvdef show_section(pe):    print "[sections layout:]"    print "#"*45    print "%10s %10s %10s %10s" % ("section", "addr", "real_size", "alloc_size" )    print "-"*45    for section in pe.sections:        print "%10s %10x %10x %10x" % (section.Name.strip('\x00'), section.VirtualAddress, section.Misc_VirtualSize, section.SizeOfRawData)    print "\n"    def show_imports(pe):    pe.parse_data_directories()    print "[imports:]"    print "#"*45    for entry in pe.DIRECTORY_ENTRY_IMPORT:        print "%s" % entry.dll.center(45, "-")        print "%10s %30s" % ("addr", "function")        print "-"*45        for imp in entry.imports:            print "%10x %30s" % (imp.address, imp.name)    print "\n"def show_exports(pe):    pe.parse_data_directories()    print "[exports:]"    print "#"*45    print "%10s %30s" % ("addr", "function")    print "-"*45    for exp in pe.DIRECTORY_ENTRY_EXPORT.symbols:        print "%10x %30s" % (pe.OPTIONAL_HEADER.ImageBase + exp.address, exp.name)    print "\n"def show_disasm(pe, off_img, count):    print "[disasm %08x - %08x]" % (off_img, off_img + count)    print "-"*45    image_base = pe.OPTIONAL_HEADER.ImageBase    data = pe.get_memory_mapped_image()[off_img:off_img+count]    offset = 0    while offset < len(data):        i = pydasm.get_instruction(data[offset:], pydasm.MODE_32)        raw = ""        for k in range(0,i.length):            raw += "%2X " % (struct.unpack("B", data[offset+k])[0])        print "%25s   %-20s" % ( raw, pydasm.get_instruction_string(i, pydasm.FORMAT_INTEL, image_base+off_img))        offset += i.length    def show_entry(pe):    print "[entry]"    print "#"*45    off_entry = pe.OPTIONAL_HEADER.AddressOfEntryPoint    show_disasm(pe, off_entry, 100)    if __name__ == "__main__":    try:        filename = sys.argv[1]    except:        sys.exit(1)           pe = pefile.PE(filename)    show_section(pe)        show_imports(pe)    show_exports(pe)        show_entry(pe)

  

转载于:https://www.cnblogs.com/long123king/p/3614288.html

你可能感兴趣的文章
Java性能调优攻略全分享,七步搞定!(附学习资料分享)
查看>>
企业级 SpringBoot 教程 (六)springboot整合mybatis
查看>>
程序员写了一段注释, 第二天惨被公司开除, 公司巧妙回怼
查看>>
8.eclipse 安装 lombook插件
查看>>
Maven项目中使用本地JAR包方案4
查看>>
如何利用XMind创建概念图
查看>>
ldap接触(3)之LDAP特定错误以及错误一览表
查看>>
Zookeeper的功能以及工作原理
查看>>
朝花夕拾之Oracle11g 表分区
查看>>
本分类说明 -- django
查看>>
Android Binder IPC分析
查看>>
mysql分隔字符串,并将分隔字符串作为新列
查看>>
图学java基础篇之集合
查看>>
Tomcat源码分析------ 架构
查看>>
如何分析并策划好网站
查看>>
解决Skype一台电脑登陆多个账号的问题
查看>>
Gradle构建卡住问题解决
查看>>
linux使用cron任务定时执行数据库操作
查看>>
实验11 原始套接字
查看>>
C#配置Properties.Setting
查看>>