Android 逆向使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 逆向使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )相关的知识,希望对你有一定的参考价值。





一、PyCharm 中进行断点调试



在上一篇博客 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中创建 Python 程序 | 导入 ELFFile 库 | 解析 ELF 文件 ) 中 , 使用 Python 解析 ELF 文件 , 重点是了解 ELFFile 对象的结构 , 下面开始使用断点调试 , 查看具体的 ELFFile 对象细节 ;

解析 ELF 文件代码如下 :

# coding=utf-8
# 解析 elf 文件需要导入的依赖库
#   安装 pyelftools 库
from elftools.elf.elffile import ELFFile


def main():
    # 要解析的动态库路径
    elf_path = r'libwtcrypto.so'
    # 打开 elf 文件
    file = open(elf_path, 'rb')
    # 创建 ELFFile 对象 , 该对象是核心对象
    elf_file = ELFFile(file)

    # 打印 elf 文件头
    print(elf_file.header)
    # 打印 程序头入口 个数
    print(elf_file.num_segments())
    # 打印 节区头入口 个数
    print(elf_file.num_sections())

    # 遍历打印 程序头入口
    for segment in elf_file.iter_segments():
        print(segment.header)
        print(segment.header['p_align'])

    # 遍历打印 节区头入口
    for section in elf_file.iter_sections():
        print('name:', section.name)
        print('header', section.header)

    # 关闭文件
    file.close()
    pass


if __name__ == '__main__':
    main()

在创建 ELFFile 对象的后面一行加上断点 ;

右键点击 __main__ 函数左侧的 运行按钮 , 选择 " Debug ‘main’ " 选项 ;

程序运行后 , 会自动进入 Debug 面板 ;





二、ELFFile 实例对象分析



打开右侧的 elf_file 变量 , 即可查看 ELFFile 对象的内部字段值 ;

header 是文件头信息 ;

stream 是对应的文件 ;

structs 是 ELF 文件的一些标志 ,

以上是关于Android 逆向使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编框架 | PyCharm 中导入 Capstone 反汇编框架 )

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

Android 逆向逆向修改游戏应用 ( APK 解析工具 | 解包 -> 分析 -> 重打包 -> 签名 流程 )

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 反汇编二进制机器码 | 打印反汇编数据 )

Android 逆向arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 分析 malloc 函数的 arm 汇编语言 )