解析exe文件

概述:上次用java生成exe文件。那如何解析exe文件呢?0.0  

首先我们要了解exe文件里面有什么。用360压缩解压一下。

  1. .data:

    • 存储程序中的初始化的全局和静态变量。在程序运行之前,这些变量会被赋予特定的初始值。
  2. .pdata (Procedure Data):

    • 包含有关程序中函数或异常处理程序的信息。这对于调试和异常处理非常重要。
  3. .rdata (Read-Only Data):

    • 存储只读数据,如常量、字符串等。这些数据在程序运行期间不应被修改。
  4. .reloc (Relocation):

    • 包含需要在运行时进行修正的信息。当可执行文件被加载到内存中的不同地址时,这些修正会调整程序中的地址引用。
  5. .rodata (Read-Only Data):

    • 类似于.rdata,存储只读的数据。通常包含程序中的只读常量、字符串等。
  6. .svm_hea (SVM Header):

    • 这个名称不是标准的Windows PE文件节,可能是某些特定用途的自定义标记。通常,PE文件不包含此类节。可能是某些特定工具或库生成的文件才会包含这样的节。
  7. .text:

    • 存储程序的机器代码,即实际的可执行指令。这是程序的主要执行代码区域。

objdump解析exe文件

objdump  --help

Usage: objdump <option(s)> <file(s)>Display information from object <file(s)>.At least one of the following switches must be given:-a, --archive-headers    Display archive header information-f, --file-headers       Display the contents of the overall file header-p, --private-headers    Display object format specific file header contents-P, --private=OPT,OPT... Display object format specific contents-h, --[section-]headers  Display the contents of the section headers-x, --all-headers        Display the contents of all headers-d, --disassemble        Display assembler contents of executable sections-D, --disassemble-all    Display assembler contents of all sections--disassemble=<sym>  Display assembler contents from <sym>-S, --source             Intermix source code with disassembly--source-comment[=<txt>] Prefix lines of source code with <txt>-s, --full-contents      Display the full contents of all sections requested-g, --debugging          Display debug information in object file-e, --debugging-tags     Display debug information using ctags style-G, --stabs              Display (in raw form) any STABS info in the file-W, --dwarf[a/=abbrev, A/=addr, r/=aranges, c/=cu_index, L/=decodedline,f/=frames, F/=frames-interp, g/=gdb_index, i/=info, o/=loc,m/=macro, p/=pubnames, t/=pubtypes, R/=Ranges, l/=rawline,s/=str, O/=str-offsets, u/=trace_abbrev, T/=trace_aranges,U/=trace_info]Display the contents of DWARF debug sections-Wk,--dwarf=links        Display the contents of sections that link toseparate debuginfo files-WK,--dwarf=follow-linksFollow links to separate debug info files (default)-WN,--dwarf=no-follow-linksDo not follow links to separate debug info files-L, --process-links      Display the contents of non-debug sections inseparate debuginfo files.  (Implies -WK)--ctf[=SECTION]      Display CTF info from SECTION, (default `.ctf')--sframe[=SECTION]   Display SFrame info from SECTION, (default '.sframe')-t, --syms               Display the contents of the symbol table(s)-T, --dynamic-syms       Display the contents of the dynamic symbol table-r, --reloc              Display the relocation entries in the file-R, --dynamic-reloc      Display the dynamic relocation entries in the file@<file>                  Read options from <file>-v, --version            Display this program's version number-i, --info               List object formats and architectures supported-H, --help               Display this informationThe following switches are optional:-b, --target=BFDNAME           Specify the target object format as BFDNAME-m, --architecture=MACHINE     Specify the target architecture as MACHINE-j, --section=NAME             Only display information for section NAME-M, --disassembler-options=OPT Pass text OPT on to the disassembler-EB --endian=big               Assume big endian format when disassembling-EL --endian=little            Assume little endian format when disassembling--file-start-context       Include context from start of file (with -S)-I, --include=DIR              Add DIR to search list for source files-l, --line-numbers             Include line numbers and filenames in output-F, --file-offsets             Include file offsets when displaying information-C, --demangle[=STYLE]         Decode mangled/processed symbol namesSTYLE can be "none", "auto", "gnu-v3","java", "gnat", "dlang", "rust"--recurse-limit            Enable a limit on recursion whilst demangling(default)--no-recurse-limit         Disable a limit on recursion whilst demangling-w, --wide                     Format output for more than 80 columns-U[d|l|i|x|e|h]                Controls the display of UTF-8 unicode characters--unicode=[default|locale|invalid|hex|escape|highlight]-z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling--start-address=ADDR       Only process data whose address is >= ADDR--stop-address=ADDR        Only process data whose address is < ADDR--no-addresses             Do not print address alongside disassembly--prefix-addresses         Print complete address alongside disassembly--[no-]show-raw-insn       Display hex alongside symbolic disassembly--insn-width=WIDTH         Display WIDTH bytes on a single line for -d--adjust-vma=OFFSET        Add OFFSET to all displayed section addresses--show-all-symbols         When disassembling, display all symbols at a given address--special-syms             Include special symbols in symbol dumps--inlines                  Print all inlines for source line (with -l)--prefix=PREFIX            Add PREFIX to absolute paths for -S--prefix-strip=LEVEL       Strip initial directory names for -S--dwarf-depth=N            Do not display DIEs at depth N or greater--dwarf-start=N            Display DIEs starting at offset N--dwarf-check              Make additional dwarf consistency checks.--ctf-parent=NAME          Use CTF archive member NAME as the CTF parent--visualize-jumps          Visualize jumps by drawing ASCII art lines--visualize-jumps=color    Use colors in the ASCII art--visualize-jumps=extended-colorUse extended 8-bit color codes--visualize-jumps=off      Disable jump visualization--disassembler-color=off       Disable disassembler color output. (default)--disassembler-color=terminal  Enable disassembler color output if displaying on a terminal.--disassembler-color=on        Enable disassembler color output.--disassembler-color=extended  Use 8-bit colors in disassembler output.objdump: supported targets: pe-x86-64 pei-x86-64 pe-bigobj-x86-64 elf64-x86-64 pe-i386 pei-i386 elf32-i386 elf32-iamcu pdb elf64-little elf64-big elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex plugin
objdump: supported architectures: i386 i386:x86-64 i386:x64-32 i8086 i386:intel i386:x86-64:intel i386:x64-32:intel iamcu iamcu:intelThe following i386/x86-64 specific disassembler options are supported for use
with the -M switch (multiple options should be separated by commas):x86-64      Disassemble in 64bit modei386        Disassemble in 32bit modei8086       Disassemble in 16bit modeatt         Display instruction in AT&T syntaxintel       Display instruction in Intel syntaxatt-mnemonicDisplay instruction in AT&T mnemonicintel-mnemonicDisplay instruction in Intel mnemonicaddr64      Assume 64bit address sizeaddr32      Assume 32bit address sizeaddr16      Assume 16bit address sizedata32      Assume 32bit data sizedata16      Assume 16bit data sizesuffix      Always display instruction suffix in AT&T syntaxamd64       Display instruction in AMD64 ISAintel64     Display instruction in Intel64 ISA
Report bugs to <https://sourceware.org/bugzilla/>.
  • -a:显示归档头信息
  • -f:显示整个文件头信息
  • -p:显示对象格式特定的文件头内容
  • -P:显示对象格式特定的内容
  • -h:显示节头信息
  • -x:显示所有节头信息
  • -d:显示可执行段的汇编代码
  • -D:显示所有可执行段的汇编代码
  • --disassemble=<sym>:显示指定符号的汇编代码
  • -S:将源代码与反汇编代码混合在一起
  • -s:显示完整内容
  • -g:显示调试信息
  • -e:使用ctags风格的调试信息
  • -G:显示DWARF调试信息
  • -w:格式化输出以适应80列以上宽度
  • --unicode=[default|locale|invalid|hex|escape|highlight]:控制显示UTF-8 Unicode字符的方式
  • --start-address=ADDR:只处理地址大于等于ADDR的数据
  • --stop-address=ADDR:只处理地址小于ADDR的数据
  • --no-addresses:不打印地址信息
  • --prefix-addresses:在反汇编时打印完整的地址信息
  • --insn-width=WIDTH:在反汇编时,每行显示WIDTH个字节
  • --adjust-vma=OFFSET:将所有显示的节地址加上OFFSET
  • --show-all-symbols:在反汇编时,显示给定地址的所有符号
  • --special-syms:在符号转储中包含特殊符号
  • --inlines:在源行上打印所有内联函数
  • --prefix=PREFIX:为-S选项添加前缀
  • --prefix-strip=LEVEL:为-S选项删除初始目录名
  • --dwarf-depth=N:不显示深度大于或等于N的DIEs
  • --dwarf-start=N:显示从偏移量N开始的DIEs
  • --dwarf-check:进行额外的dwarf一致性检查
  • --ctf-parent=NAME:使用CTF存档成员NAME作为CTF父级
  • --visualize-jumps:通过绘制ASCII艺术线条可视化跳转
  • --visualize-jumps=color:使用颜色在ASCII艺术中显示跳转
  • --visualize-jumps=extended-color:使用扩展的8位颜色代码显示跳转
  • --visualize-jumps=off:禁用跳转可视化
  • --disassembler-color=off:禁用反汇编器颜色输出(默认)
  • --disassembler-color=terminal:如果显示在终端上,则启用反汇编器颜色输出
  • --disassembler-color=on:启用反汇编器颜色输出
  • --disassembler-color=extended:在反汇编器输出中使用8位颜色

标准用法就是objdump <-options> 可执行文件

例如:objdump -d   main.exe         显示可执行段的汇编代码

执行  objdump -h main.exe     显示节头信息

  1. Idx Name:内存段的索引名。
  2. Size:内存段的大小,以字节为单位。
  3. VMA:虚拟内存地址,这是在进程空间中分配给该内存段的地址。
  4. LMA:加载内存地址,这是在文件或磁盘上分配给该内存段的地址。
  5. File off:文件偏移量,这是在文件中相对于文件开始的位置。
  6. Algn:对齐方式,表示内存段的地址需要满足的对齐要求。例如,2**4表示地址必须是4字节对齐的。
  7. CONTENTS, ALLOC, LOAD, READONLY, CODE/DATA:这些是内存段的属性,描述了内存段的类型和用途。例如,CONTENTS表示该内存段包含数据;ALLOC表示该内存段由操作系统分配;LOAD表示该内存段可以被加载到进程的地址空间;READONLY表示该内存段的内容不能被修改;CODE表示该内存段包含可执行代码;DATA表示该内存段包含数据。

执行  objdump -s main.exe   显示完整内容 

还在往下走,数量有点大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

销售方法用得好,业绩蹭蹭蹭!

新零售模式是随着科技的发展而崭露头角的零售业态&#xff0c;它融合了传统零售与先进技术&#xff0c;为消费者带来了更便捷、智能的购物体验。 其中&#xff0c;自动售货机作为新零售的一种代表形式&#xff0c;通过高度自动化和数字化的手段&#xff0c;为消费者提供更加便利…

【RT-DETR有效改进】移动设备网络ShuffleNetV1(超轻量化网络主干)

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…

计算机网络-计算机网络的概念 功能 发展阶段 组成 分类

文章目录 计算机网络的概念 功能 发展阶段总览计算机网络的概念计算机网络的功能计算机网络的发展计算机网络的发展-第一阶段计算机网络的发展-第二阶段-第三阶段计算机网络的发展-第三阶段-多层次ISP结构 小结 计算机网络的组成与分类计算机网络的组成计算机网络的分类小结 计…

【史上最全】前端页面深入浅出浏览器渲染原理

前言 浏览器的核心组件&#xff0c;即通常所说的浏览器内核&#xff0c;是支撑整个浏览器运行的关键性底层软件架构&#xff0c;它由两个关键组成部分构成&#xff1a;一个是负责网页内容解析和渲染的渲染引擎&#xff0c;另一个则是用于执行JavaScript代码的JS引擎。各浏览器厂…

双向搜索的理解和板子

"互相奔赴&#xff0c;各司其职。“ ——双向搜索 双搜的要求&#xff1a; 当我们发现&#xff0c;要从一种状态开始&#xff0c;经过很多次操作&#xff0c;来得到一种给定的状态。 这时候&#xff0c;我们就可以考虑用双向搜索。 从起点和终点开始搜。当二者相遇&…

【React】组件性能优化、高阶组件

文章目录 React性能优化SCUReact更新机制keys的优化render函数被调用shouldComponentUpdatePureComponentshallowEqual方法高阶组件memo 获取DOM方式refs如何使用refref的类型 受控和非受控组件认识受控组件非受控组件 React的高阶组件认识高阶函数高阶组件的定义应用一 – pro…

如何用Python进行数据分析(保姆级教程)

有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了&#xff0c;比较复杂。 很多网上的资料都是从语法教起的&#xff0c;花了很多时间还是云里雾里&#xff0c;摸不清方向。今天就给大家来捋一捋思路&#xff01;帮助大家提高学习效率&#xff01; Pyt…

Markdown 类图绘制详解

✍️作者简介&#xff1a;小北编程&#xff08;专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a; 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您有一定的帮助请&#x1f…

水电站智能监测泄洪预警系统介绍

一、背景 近年来由于危险河道管理措施不到位&#xff0c;调峰电站泄水风险长期存在&#xff0c;信息通报制度缺失以及民众安全警觉性不高等因素导致的水电站在泄洪时冲走下游河道游客以及人民财产的事故频发。 二、系统介绍 水电站智能监测泄洪预警系统是一种集成了物联网、云…

ElasticSearch的常用增删改查DSL和代码

es增删改查常用语法 我们日常开发中&#xff0c;操作数据库写sql倒是不可能忘记&#xff0c;但是操作es的dsl语句有时候很容易忘记&#xff0c;特地记录一下方便查找。 DSL语句 1、创建索引 -- 创建索引 PUT /my_index {"mappings": {"properties": {&…

GEE中Landsat、Sentinel、Modis主要数据集区别

一、Landsat 1. Collection 1/2 的区别 Collection 2 是Landsat Level 1 数据的又一次重大再处理&#xff0c;显著提高了绝对地理定位精度。 Collection1Collection2时间跨度1972~2021底1972~至今数据等级level 1level1&#xff1a;1972~2021底 level2&#xff1a;1982~至今 …

路由器初始化配置、功能配置

实验环境 拓扑图 Ip规划表&#xff08;各组使用自己的IP规划表&#xff09; 部门 主机数量 网络地址 子网掩码 网关 可用ip Vlan 市场部 38 192.168.131.0 255.255.255.0 192.168.131.1 2-254 11 研发部 53 192.168.132.0 255.255.255.0 192.168.132.1 2-2…

Oracle21C + PLSQL Developer 15 + Oracle客户端21安装配置完整图文版

一、Oracle21C PLSQL Developer 15 Oracle客户端文件下载 1、Oracl21C下载地址&#xff1a;Database Software Downloads | Oracle 中国 2、 PLSQL Developer 15下载地址&#xff1a;Registered download PL/SQL Developer - Allround Automations 3、 Oracle 客户端下载地址…

全球光伏知名企业-晶科能源联合泛微采知连,建立文控管理平台

晶科能源股份有限公司&#xff08;简称“晶科能源”&#xff09;是一家全球知名、极具创新力的太阳能科技企业。 &#xff08;图片素材来自晶科能源官网&#xff09; 公司战略性布局光伏产业链核心环节&#xff0c;聚焦光伏产品一体化研发制造和清洁能源整体解决方案提供&…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--具身智能、强化学习

专属领域论文订阅 VX关注 晓理紫&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 分类: 大语言模型LLM视觉模型VLM扩散模型视觉导航具身智能&#xff0c;机器人强化学习开放词汇&#xff0c;检测分割 [晓理紫]每日论文分享…

【LabVIEW FPGA入门】FPGA中的数学运算

数值控件选板上的大部分数学函数都支持整数或定点数据类型&#xff0c;但是需要请注意&#xff0c;避免使用乘法、除法、倒数、平方根等函数&#xff0c;此类函数比较占用FPGA资源&#xff0c;且如果使用的是定点数据或单精度浮点数据仅适用于FPGA终端。 1.整数运算 支持的数…

【Java】IDEA中的JFormDesigner使用教程

目录 1 安装 JFormDesigner 插件2 JFormDesigner 使用教程2.1 新建JFormDesigner Form时的选项2.2 JFormDesigner Form界面布局2.3 JFormDesigner 组件2.3.1 Components基本组件2.3.2 Containers中间容器&#xff08;面板&#xff09;2.3.3 Windows顶级容器&#xff08;窗口&am…

给科研人的 ML 开源发布工具包

什么是开源发布工具包&#xff1f; 恭喜你的论文成功发表&#xff0c;这是一个巨大的成就&#xff01;你的研究成果将为学界做出贡献。 其实除了发表论文之外&#xff0c;你还可以通过发布研究的其他部分&#xff0c;如代码、数据集、模型等&#xff0c;来增加研究的可见度和采…

【从0上手cornerstone3D】如何加载nifti格式的文件

在线演示 支持加载的文件格式 .nii .nii.gz 代码实现 npm install cornerstonejs/nifti-volume-loader// ------------- 核心代码 Start------------------- // 注册一个nifti格式的加载器 volumeLoader.registerVolumeLoader("nifti",cornerstoneNiftiImageVolu…

Qt/C++编写视频监控系统83-自定义悬浮条信息

一、前言 一般视频控件上会给出个悬浮条&#xff0c;这个悬浮条用于显示分辨率或者一些用户期望看到的信息&#xff0c;一般常用的信息除了分辨率以外&#xff0c;还有帧率、封装格式、视频解码器名称、音频解码器名称、实时码率等&#xff0c;由于实际的场景不一样&#xff0…