文章目录
- 一、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 文件的一些标志 ,