exeinfo pe的使用(基本)

文章介绍了如何使用exeinfope和PE-Bear工具获取程序的哈希值、PE结构、是否加壳、导入导出表,以及识别常用DLL和其功能,强调了静态分析在初步理解文件性质中的重要性。

基本静态信息获取

一般需要获取的信息包括但不限于:

  1. 程序哈希值
  2. 导入函数表
  3. 导出函数表
  4. 是否有壳
  5. 程序的位数
  6. 字符串

具体步骤

使用exeinfope获取相关信息
  1. 讲文件拖入到exeinfope.exe中,可获取该文件的PE信息,示例如下:

如图中标记,可以知道:

  1. 该程序是个32的可执行程序
  2. 通过节区信息可以判断是否加壳,该程序没加壳,现实的是正常的.text节区

如下图:可以看到加了upx

  1. 点击图中的PE,可以进一步获取导入表等相关信息


![](https://img-blog.csdnimg.cn/img_convert/100e0e68bb155ca89217f61ee3385bcc.jpeg)

  1. 导入表、导出表信息可以帮助我们获取到程序所用到的功能函数,在恶意代码中获取常用的windows api.

初学者应该多翻翻导入的函数,熟悉哪些是恶意软件常用函数以及了解常用的windows api函数

常见dll程序如下:

Kemel32.dll - 这是 个很常见的 DLL 它包含核心系统功能,如访问和操作内存、文件和硬件,

等等

Advapi32.dll - 这个 DLL 提供了对核心 Window 组件的访问,比如服务管理器和注册表

User32.dll - 这个 DLL 包含了所有用户界面组件,如按钮、滚动条以及控制和响应用户操作的组件

Gdi32.dll - 这个 DLL 中包含了图形显示和操作的函数

Ntdll.dll - 这个 LL Window 内核的接口 可执行文件通常不直接导入这个函数,而是由 Kemel32.dll 接导入,如果这个可执行文件导入了这个文件,这意味着作者企图使用那些不是正常提供给 Windows 程序使用的函数。 一些如隐藏功能和操作进程等任务会 使用这个接口

Wsock32.dll、Ws2 32.dll - 这两个是联网 DLL, 访问其中任 DLL 程序非常可能连接网络,或是执行网络相关的任务

Wininet.dll - 这个 DLL 包含了更高层次的网络函数,实现了如 TP HTT NT 协议

使用PE-bear.exe获取相关信息

总结

在该文章中所涉及的知识主要是pe文件格式的相关知识,使用文字进行原理说明会相对冗余。

使用工具进行初步的静态分析实践起来,后续可以对照PE格式进行分析。

### 如何使用 ExeinfoPE 工具 ExeinfoPE 是一款功能强大的查壳工具,主要用于分析可执行文件(EXE)、动态链接库(DLL)以及其他类型的二进制文件。以下是关于其使用的详细介绍: #### 功能概述 ExeinfoPE 可以帮助用户检测目标文件是否被加壳以及所采用的具体壳类型[^1]。此外,它还能够提供有关编程语言的信息和其他元数据,这对于逆向工程师和安全研究人员来说是非常有价值的。 #### 启动与界面说明 当打开 ExeinfoPE 应用程序时,会看到一个简洁直观的操作窗口。该界面上方有菜单栏选项可供配置设置;中间部分则是主要显示区域,在这里可以看到扫描后的结果列表[^2]。 #### 基本操作流程 - **加载文件**: 点击“File”-> “Open”,然后浏览并选择想要检查的目标文件。 - **开始分析**: 单击按钮启动自动检测过程。此阶段软件会对选定对象进行全面解析,并尝试匹配已知的各种外壳特征码数据库条目。 - **查看报告**: 扫描完成后,下方将以表格形式呈现发现的所有可能匹配项及其置信度百分比数值。高可信度的结果意味着更有可能准确反映实际情况。 注意:对于某些复杂情况下的多层嵌套封装结构,则需要进一步手动验证确认最终结论。 ```python # 示例 Python 脚本调用 exeinfope 进行批量处理 (伪代码演示) import subprocess def analyze_files(file_list): results = [] for file_path in file_list: result = subprocess.run(["path/to/exeinfope", "-a", file_path], capture_output=True, text=True) if "Packed with" in result.stdout: packer_info = extract_packer_info(result.stdout) results.append((file_path, packer_info)) return results def extract_packer_info(output_string): lines = output_string.split("\n") relevant_line = next(line for line in lines if "Packed with" in line) return relevant_line.strip() if __name__ == "__main__": files_to_check = ["example.exe", "another_example.dll"] analysis_results = analyze_files(files_to_check) print(analysis_results) ``` 上述脚本展示了如何通过命令行接口来自动化运行多个文件的打包器识别任务。这只是一个简单的例子,实际应用中可以根据需求调整参数或增加错误处理逻辑等功能模块。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值