Linux/Windows 实用工具简记
以下只是开发中可能用的比较多的工具,另外还有其他很多未曾提及的实用工具。
Linux篇:
1.链接过程的调试:主要用于查看构建过程;如链接时加载的动态库以及运行时加载动态库过程的调试
支持LD_DEBUG环境变量(glibc下提供给加载器便于调试的一个环境变量);
常用的使用方法:
LD_DEBUG=help XXX XXX可为任意字符串,即可调出帮助信息;
LD_DEBUG=libs xxx xxx为可执行二进制文件,显示所依赖库的文件路径;
此外还可以显示重定位、符号表、依赖库版本匹配信息等;
对于LD_DEBUG环境变量,可以在调用链接器命令时使用,也可以在当前终端的shell下设置环境变量如export LD_DEBUG=option;或者是在系统的环境变量下设置(不建议采用)。
2. 二进制文件类型
1)file程序查看,如:file XXX;
2)readelf分析ELF头信息,如:readelf -h XXX ;其中类型:EXEC DYN REL 分别为可执行文件、共享目标文件、可重定位文件(如.a/.o文件);
3)objdump分析ELF头信息,同readelf类似,其中类型:EXEC_P DYNAMIC 分别为可执行文件、共享目标文件,对于目标文件没有显示类型信息。
3. 二进制文件入口点
1)可执行文件的入口点
readelf -h XXX
或objdump -f XXX 。
2)动态库的入口点
对于静态加载的动态库,一般可通过gdb调试,打断点进而确定加载的动态库入口点具体位置;
对于动态加载的动态库,则只能在方法中将大量屏幕输出重定向进行查询。
4. 查看导出符号列表信息
1) nm 程序
2) readelf程序
3) objdump程序
具体的查询选项可查看各工具程序-help或--help选项。
5. 查看符号节、段的信息
1) readelf程序
2) objdump程序
具体的查询选项可查看各工具程序-help或--help选项。
6. 反汇编
1) 反汇编二进制:objdump -d/-D选项。
2) 反汇编运行的进程:gdb调试器
7. 查看可执行文件或者共享库加载时依赖的共享列表
1) ldd程序可查看完整依赖列表(含直接依赖库以及依赖库的依赖库(或者更多间接依赖库))
2) objdump -p或readelf -d的动态节信息
8. 查看装载器可找到的有效库文件:ldd -p
9. 查看运行时加载的动态库链接文件:
1) strace程序 跟踪系统调用,如:strace -f -e open cat,即查看cat程序的open系统调用;
2) LD_DEBUG环境变量,如LD_DEBUG=files选项,如:LD_DEBUG=files gdb -q XXX;通过gdb调试打断点以使得程序XXX执行中暂停,此时可以显示携带的信息,
另外也可以在以进程PID下的/proc/PID/maps文件中,可查看被记录加载的动态库文件;
3) lsof程序,可查看静态或者动态加载的动态库,此外其还可以查看普通文件、套接字、库文件、设备文件等打开的情况。
10. 静态库创建和其他操作:ar归档工具,可实现目标文件打包成静态库,另外还有添加、替换、删除、提取、调整顺序等操作
Windows篇:
1. 库管理器lib.exe
类似于Linux的ar归档工具,此外还可以创建动态库引入库文件以及解析循环依赖的exp导出库文件;
1) 创建静态库文件: lib.exe /OUT:XXX.lib /NOLOGO x.obj y.obj z.obj ...等
2) 此外列出、删除、提取操作分别以/LIST /REMOVE /EXTRACT,追加操作lib.exe XXX.lib abc.obj
3) 创建动态库导入库(引入库),如通过def模块定义文件创建引入库lib:lib.exe /machine:x64 /def:XXX.def /out:XXX.lib
4) 事实上除了lib可以创建动态库引入库外,还可以直接通到dll文件来导出,如 dumpbin /exports XXX.dll > XXX.def
2. PE/COFF文件格式信息查看工具dumpbin.exe
类似于Linux的objdump工具,其可查看导出符合、节信息、反汇编信息以及可查看静态库中的目标文件等,具体使用可查看各个选项,
如:/EXPORTS 查看导出函数 /IMPORTS 查看加载时依赖项,依赖库和符号列表 /HEADERS 查看节信息 /SECTION查看特定节信息 /DISASM查看反汇编信息。
3. PE模块依赖分析工具Dependency walker(depends.exe)
类似于Linux的ldd工具,可查看库或应用程序依赖关系以及导入、导出函数等,部分应用程序运行异常,可通过此工具查看缺少的依赖库;
有时候该工具都找到并添加相应依赖库后仍然运行异常,则可结合sxstrace,查看是否缺少或是不匹配的清单文件,或者是其他错误提示信息。
Linux/Windows 实用工具简记的更多相关文章
- linux 下实用工具
gpm 让linux 纯字符终端具备窗口模式下的鼠标功能 xterm + tmux 支持横向或者纵向切屏的终端 urxvt-unicode 支持中文的终端
- Linux系统监控实用工具Glances
Linux系统监控实用工具Glances Glances安装 Glances安装要求:python >= 2.6 和 psutil >= 0.4.1 1.第一步,安装了python-> ...
- Kali Linux Web后门工具、Windows操作系统痕迹清除方法
Kali Linux Web后门工具 Kali的web后门工具一共有四款,今天只介绍WebaCoo 首先介绍第一个WeBaCoo(Web Backdoor Cookie) WeBaCoo是一款隐蔽的脚 ...
- 自学Linux Shell18.3-sed实用工具
点击返回 自学Linux命令行与Shell脚本之路 18.3-sed实用工具 1. 加倍行间距 命令格式: .......
- [Linux实用工具]munin-node插件配置和插件编写
前面介绍了2篇munin使用的相关文章: [Linux实用工具]Linux监控工具munin的安装和配置 [Linux实用工具]Linux监控工具munin的展示(Nginx) 这次介绍一下mun ...
- [Linux实用工具]Linux监控工具munin的展示(Nginx)
Munin的安装和配置可以参考第一篇文章: [Linux实用工具]Linux监控工具munin的安装和配置 http://www.cnblogs.com/rond/p/3757804.html Mun ...
- Windows 实用小工具
超实用的Windows工具 ====================================================================================== ...
- 批量Linux、Windows管理工具BatchShell 1.2(最新版)
简介: BatchShell是什么: BatchShell是一款基于SSH2的批量文件传输及命令执行工具,它可以同时传输文件到多台远程服务器以及同时对多台远程服务器执行命令.具备以下主要功能: ...
- windows下模拟linux命令的工具 xshell
windows下模拟linux命令的工具 xshell
随机推荐
- Identifier expected after this token
Cursor cursor = db.query(true, "user", new String[]{"id","mode"}, &quo ...
- 「USACO」「LuoguP2731」 骑马修栅栏 Riding the Fences(欧拉路径
Description Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编 ...
- 动态编译c#脚本(把c#当作脚本执行)
csscript动态编译C#脚本 This document contains information about the CLR based scripting system CS-Script ( ...
- error: expected ‘)’ before ‘PRId64’(转载)
转自:www.xuebuyuan.com/2077822.html error: expected ‘)’ before ‘PRId64’ 原来这个宏定义给c用的,C++要用它,就要定义一个__STD ...
- bzoj 5019: [Snoi2017]遗失的答案【dp+FWT】
满足GL的组合一定包含GL每个质因数最大次幂个最小次幂,并且能做限制这些数不会超过600个 然后质因数最多8个,所以可以状压f[s1][s2]为选s1集合满足最大限制选s2集合满足最小限制 dfs一下 ...
- NOIp 2015真题模拟赛 By cellur925
果然我还是最菜的==不接受反驳== Day1 T1:神奇的幻方 思路:直接模拟即可,由于当前放法只与上一放法有关系,用两个变量记录一下即可.10分钟内切掉== 预计得分:100分 实际得分:100分 ...
- 跟我一起玩Win32开发(20):浏览文件夹
最近忙于一些相当无聊的事情,还没忙完,不过,博客还是要写的,不然我头顶上会多了几块砖头. 在上一篇博文中,我们浏览了文件,今天我们也浏览一下目录,如何? 浏览目录我们同样有两个规矩,用托管类库的我就不 ...
- 跟我一起玩Win32开发(3):窗口的重绘
c可以编译#include <Windows.h> //先声明一下消息处理函数 LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT msg, WPA ...
- [NOIP2018校模拟赛]T1聚会 party
题目链接: 聚会 分析: 设每个点到1号点的距离为dist_{i},每个点的权值为x_{i},目标点到1号点的距离为dist,权值为x,那么对于每一次查询,我们讨论三种情况: ① 目标家庭在区间左边( ...
- mysql学习之通过文件创建数据库以及添加数据
转自:http://blog.163.com/wujicaiguai@126/blog/static/170171558201411311547655/ 1.# 创建数据库语句 create data ...