首页 > 其他分享 >文件的内容特征

文件的内容特征

时间:2023-11-16 16:57:38浏览次数:30  
标签:文件 字节 lib 特征 IMAGE ELF 内容 FILE

1.bat特征

2.dll
PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)
和其它可执行文件格式一样,PE文件在众所周知的地方有一些定义文件其余部分面貌的域
Signature字段设置为0x00004550,ANCII码字符是“PE00

3.exe
dll和EXE都是PE格式的文件
特征:以MZ开头,中间有PE(0x50 0x45 0x00 0x00) ,紧接着是CPU类型(0x00 0x00 | 0x4c 0x01 | 0x64 0x86),后续是PE
头大小,默认情况下32位PE文件对应值位0xE0,64位PE文件对应值为0xF0(0xe0 0x00| 0xf0 0x00)

exe:0x22 0x00:IMAGE_FILE_EXECUTABLE_IMAGE|IMAGE_FILE_LARGE_ADDRESS_AWARE
0x02 0x01:IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_32BIT_MACHINE

dll:0x22 0x20:IMAGE_FILE_EXECUTABLE_IMAGE|IMAGE_FILE_LARGE_ADDRESS_AWARE | IMAGE_FILE_DLL
0x26 0x20:IMAGE_FILE_EXECUTABLE_IMAGE| IMAGE_FILE_LINE_NUMS_STRIPPED |IMAGE_FILE_LARGE_ADDRESS_AWARE| IMAGE_FILE_DLL
0x26 0x22:IMAGE_FILE_EXECUTABLE_IMAGE| IMAGE_FILE_LINE_NUMS_STRIPPED |IMAGE_FILE_LARGE_ADDRESS_AWARE|IMAGE_FILE_DEBUG_STRIPPED | IMAGE_FILE_DLL
0x2e 0x22:

exe必须带 IMAGE_FILE_EXECUTABLE_IMAGE,且没有IMAGE_FILE_DLL
第一个字节 .... ..1. 第二字节 ..0. ....
dll必须带 IMAGE_FILE_DLL
第一个字节 .... .... 第二字节 ..1. ....

4.lib
lib文件是很多obj文件合在一起得到的一个静态库文件。
lib文件最开头,由8个字符串开始,值为“!<arch>\n”,文件

第一种是静态lib库:静态lib库,包含了所有的代码实现的,是源代码文件.c或.cpp文件编译生成的,这个lib库就是文本形式的源代码编译后的二进制形式代码。(没有特征)

第二种是lib导入库:lib导入库,这个库里只是相应的dll文件中的所有函数在dll文件中的地址的说明。也就是这个lib导入库里没有函数的具体实现,只是对相应的dll文件的说明。(存在特征.dll/)

也就是说目前以.lib为后缀的库有两种,一种为静态链接库(static library,简称“静态库”),另一种为动态链接库(DLL,简称“动态库”)的导入库(import library)。


5.linux: so (动态库)
elf格式,有3个类型
可重定位的目标文件(Relocatable,或者Object File)
可执行文件(Executable)
共享库(Shared Object,或者Shared Library)

E_ident[16]是一个数组,它有16个字节,这16个字节被分为好几个部分,分别代表不同的涵义:
(1)e_ident[0]-e_ident[3]:这四个字节被称为“魔数“(Magic),它们分别是“0x7F“,”E“,”L“,”F“的ASCII码,对所有ELF格式的文件来说,这四个字节是固定的,也就是说,只有当这四个字节是这些值的时候,才代表这个文件是ELF格式的文件。相当于ELF文件的身份证。

(2)e_ident[4]:这个字节给出了这个ELF文件是多少位的:当取“0x1”时,代表这个ELF文件是32位的;当取”0x2”时,代表这个ELF文件是64位的。

(3)e_ident[5]:这个字节给出了这个ELF文件使用的字节顺序:当取”0x1”时,代表小端序,当取”0x2”时,代表大端序。

(4)e_ident[6]:这个字节给出了这个ELF文件头的版本,当前只有一个版本,所以这个字节目前只能取”0x1”

(5)e_ident[7]到e_ident[15]:这九个字节目前还没有实际意义,一般为0,也有的文件会用它们做一些特殊的标记。

●e_type用于区分ELF文件的类型:(系统通过这个数值来判断文件类型,而不是后缀名)
0000:no file type
0001: relocatable file
0002: excutable file
0003: shared object file

6.a(静态库)
和lib文件一样,都是存档文件
lib文件是很多obj文件合在一起得到的一个静态库文件。
lib文件最开头,由8个字符串开始,值为“!<arch>\n”
他把很多的目标文件(*.o)文件打包为单一的库文件。(特征.o/)

7.shell脚本:sh
定义以开头:#!/bin/sh
解释器: /bin/sh /usr/bin/sh
8.shell脚本:bash
定义以开头:
#!/bin/bash
解释器: /bin/bash /usr/bin/bash

9.python:py
代码文件:特征不是特别强
#!/usr/bin/env python
import xxx
from xxx import yyy
10.golang编译的二进制:go
Go二进制文件通常是ELF(Executable and Linkable Format)格式的可执行文件,这是一种在Linux和Unix系统上常见的可执行文件格式。对于Windows系统,则通常是PE(Portable Executable)格式。
linux:linux-exe
windows:exe

11. ruby程序:rb

标签:文件,字节,lib,特征,IMAGE,ELF,内容,FILE
From: https://www.cnblogs.com/callmesblog/p/17836699.html

相关文章

  • 创建目录和文件
    mkdir基本概述mkdir命令来自英文词组”makedirectories“的缩写,其功能是用来创建目录文件。使用方法简单,但需要注意若要创建的目标目录已经存在,则会提示已存在而不继续创建,不覆盖已有文件。而目录不存在,但具有嵌套的依赖关系时,例如/Dir1/Dir2/Dir3/Dir4/Dir5,要想一次性创建则需......
  • Idea配置mybatis核心配置文件模板
    在我们日常开发中不可能将mybatis相关配置文件全部记住,我们这里通过在idea中配置模板快捷生成(本文演示idea版本为2022.02.01)。方法如下:1.进入idea设置File->settings2.选择Editor->FileandCodeTemplates->Files3.点击“+”创建模板,对模板命名,设置模板类型,设置模板默认名字(模板中......
  • SpringBoot 中大文件(分片上传)断点续传与极速秒传功能的实现
    1.背景在实际项目中,我们经常会遇到需要上传大文件的情况,常见的方法是将整个文件一次性上传,在文件较大时会出现上传速度慢或者可能导致上传失败等问题。针对这种情况,通常可以采用分片上传的方式,将文件分为多个小片段进行上传,降低单个上传请求的负载,提高上传效率。同时,考虑到用户......
  • Linux文件权限02
    ACL高级特性最大有效权限mask:使用getfacl,其中mask项就是ACL的最大有效权限注:mask用来指定最大有效权限。系统给用户赋予ACL权限需要和mask的权限逻辑“相与”之后的权限才是用户的真正权限default:继承创建目录dir01,使用setfacl命令给用户增加rwx权限,然后在dir01目录下创建dir0......
  • python调用ffmpeg循环播放一个文件夹内的视频,如果播放中断了,下次继续播放可以从上次播
    importosimportsubprocessdefplay_videos_in_folder(folder_path):#获取所有视频文件files=[os.path.join(folder_path,f)forfinos.listdir(folder_path)iff.endswith(('.mp4','.mkv'))]idx=0#视频文件索引whileTrue:......
  • 去除:Vue项目打包后生成的.map文件&文件hash值命名
    在vue.config.js文件中设置productionSourceMap和filenameHashing项为false即可。//vue.config.js文件module.exports={outputDir:'dist',assetsDir:'assets',publicPath:'./',//需注意是相对路径,不然dist打包访问后就会出现空白问题。productionSourceMap......
  • 《文件篇》读写txt
    stdio.hfopen(),打开文件fopen(constchar*filename,constchar*mode)其中mode:"r",read:为输入操作打开文件,文件必须存在。"w",write:为输出操作创建一个空文件,如果文件已存在,则将已有文件内容舍弃,按照空文件对待。"a",append:为输出打开文件,输出操作总是再文件末尾追......
  • 由数据范围反推算法复杂度以及算法内容
    由数据范围反推算法复杂度以及算法内容一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,\(\mathrm{C}++\)代码中的操作次数控制在\(10^{7}\sim10^{8}\)为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:\(n\leq30\),指数级别,\(\mathrm{dfs......
  • ASPNET项目打包时遇到错误:无法生成项目输出组内容文件来自Web(活动)
    试试在“解决方案资源管理器”中,刷新目标项目,看看项目中有没有一些文件丢失(以感叹号标识,如下图所示),如果有,将所有这些文件补上或者“从项目中排除”,然后再重新生成安装包。1.检查文件中是否有文件未包括到项目中,2。检查是否项目中有文件前面含有感叹号,特别是图像文件。他们可能是......
  • RDLC 格式化文本内容
    格式化:日期,时间,货币,数字,百分比。Inthereport(rdlc),RightClickintheField,selectproperties,SelecttheTabFormat,andusetheformatcodeyouneed. dShortdateDLongdatetShorttimeTLongtimefFulldate/time(shorttime)FFulldate/time(longtime)g......