objdump

问题描述:使用objdump查看动态库和静态库中具有哪些 大家好,给大家分享一下Objdump 共享库 函数地址,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

使用objdump查看动态库和静态库中具有哪些函数

objdump的相关图片

objdump 是 gcc 套件中用来查看 ELF 文件的工具,具体详细用法不进行介绍,此处只讲解如何进行一个动态库和静态库中导出函数的查看。

1). 查看依赖项:objdump -x xxx.so | grep "NEEDED" 。下面是我查看 libsf_modbus_preproce.so 时的输出截图:

2). 查看动态符号表: objdump -T xxx.so 。假如想知道 xxx.so 中是否导出了符号 yyy ,那么命令为 objdump -T xxx.so | grep "yyy" 。下面是我查看 libsf_modbus_preproce.so 时的输出截图:

3). 查看符号表: objdump -t xxx.so 。-T 和 -t 选项在于 -T 只能查看动态符号,如库导出的函数和引用其他库的函数,而 -t 可以查看所有的符号,包括数据段的符号。下面是我查看 libsf_modbus_preproce.so 时的输出截图:

ubuntu图形界面怎么使用objdump的相关图片

ubuntu图形界面怎么使用objdump

可以使用file命令, 比较全(加 -l)。 file libname.so 也可以使用objdump, 这个可以看到多少位的库 objdump -a libname.so。

什么软件能将C语言的执行文件反汇编为汇编源代码的相关图片

什么软件能将C语言的执行文件反汇编为汇编源代码

1. 安装

在Ubuntu上从APT源安装viewVC会自动安装Apache, 所以我选择自己到viewVC下载源代码viewvc-1.1.12.tar.gz。

解包之后,运行sudo viewvc-install,默认安装到/usr/local/viewvc-1.1.12.。

2. 配置

在/usr/local/viewvc-1.1.12下面有个配置文件viewvc.conf,每个配置项里面独有详细帮助信息。我所修改的内容有:

root_parents = /opt/svn: svn。

root_parents为repository的上层目录。在该目录下所有的repository都会显示在GUI上。如果需要配置每个repository的目录,就应该使用svn_roots配置项。

allowed_views = annotate, diff, markup, roots。

用户可见的视图,使用默认配置。

3. 运行

执行sudo /usr/local/viewvc-1.1.12/bin/standalone.py就可以启动viewVC, 默认port是49132。(加 -p <port>参数可改变默认port)。

linux怎么把objdump输出到一个文件的相关图片

linux怎么把objdump输出到一个文件

用一个反汇编调试器即可。

IDA或者OllyDbg,方便直观,当然VC也有自带的调试器,不过很麻烦,不如IDA或者OD方便。

补充:

DLL 属于可执行文件中的一类,又称为动态链接库,不能直接用DEBUG加载,一般由应用程序因使用该库中的函数,而由操作系统在应用程序加载的同时被加载入特定地址,这个地址一般是DLL在链接时指定的。当DLL被加载到运行空间,根据输出函数表,可以得到各个函数的入口地址,然后用DEBUG在各个入口下断点,调用该函数时DEBUG将跟踪进入该函数,从而实现反汇编。

反汇编属于逆向工程,逆向工程的主要手段有两大类,其中一类是动态分析,另一类是静态分析。

前面提到的方法属于动态分析,由DEBUG实现反汇编,该方法不容易得到完整的代码,一般只能形成一段一段独立分散的代码,同时由于DEBUG的局限性,反汇编的代码质量多不高,生成的代码不能直接使用,原因在于DLL在加载时若没有加载到指定地址空间,操作系统将对代码进行重定向,所以DEBUG只能得到重定向后的代码,这类代码必须修改每一个重定向点,才能形成可执行代码。作为WINDOWS32位操作系统, OLLYDBG是最为优秀的调试、跟踪、反汇编工具,多窗口运行,可以方便的通过窗口操作完成各类动作,而不需要像一般DEBUG那样由命令行来完成,OLLYDBG还有许多一般调试器不具备的功能,同时由于每一代高手不断的修改,使其具有多种功能,同时带来的就是混乱,谁也不知道有多少版本,谁也不清楚每个版本到底增加了什么功能,但就这样,也是瑕不掩疵, OLLYDBG任然是DEBUG中最强大,最好使用的。

静态分析和动态分析不同,静态分析直接打开原程序,加载而不运行,然后直接分析加载的代码。目前静态分析工具,最强大的当属IDA,IDA支持几乎所有种类的汇编语言。

IDA加载应用程序有许多选项,可以选择完整的加载整个程序,也可以选择加载程序的某个块,一般可选择的是否加载文件头、资源表、输入表、输出表等等。

IDA还支持调试,也就是说,当你在进行反汇编过程时,可以直接使用IDA来调试跟踪,以分析代码的动态执行情况,不过就动态跟踪来说,OLLYDBG更为强大。

IDA反汇编的正确率和代码的复杂程度有关,对于正规开发的代码,尤其是如果能够获得源程序的调试文件,即所谓的PDB文件,IDA可以读取PDB文件中的信息,使得反汇编的效率和准确度大为提高,生成的代码甚至比源代码易读。IDA将反汇编生成的结果存入IDB文件中。当你确认反汇编的结果达到你的要求,可以让IDA输出汇编源代码,IDA也提供其他格式的输出,例如HTML文件,便于用户阅读。楼主主要是用于分析DLL文件,一般来说这类文件更适合做静态分析,所以推荐使用IDA来进行。

IDA对于分析那些加壳或含有大量花指令、混淆代码、垃圾代码的程序,反汇编的正确率会大为下降,因为IDA无法正确的确认当期位置上的数值是属于代码,还是属于数据,是普通C字符,还是DELPHI的字符串,还是UNICODE字符串,是结构数据还是数组还是类表(DELPHI生成的代码中含有大量的类表)等等。遇到这种情况,就需要使用者掌握许多技巧,例如可以通过使用者对当前数据的认识,指导IDA如何处理当前的数据。对于大批量的,具有某些规律的数据,IDA还提供了脚本语言(文件尾位idc),通过对脚本的执行来指导IDA如何进行反汇编。对于更为复杂的情况,例如程序是自解压运行的,这时IDA就没有任何能力来进行正确的分析,通常都会用OLLYDBG动态跟踪,等程序完成自解压后从内存中将解压后的代码完整的挖下来形成文件,再由IDA进行静态分析。

对于成功进行反汇编的代码,IDA根据代码的入口、调用、转移等指令,可以为使用者提供各种格式的程序的流程图,IDA提供许多格式由用户选择,便于用户理解程序的结构。

汇编语言的科学定义,其实就是介于机器码(各种01)和高级语言(如C)之间的一种语言。你用C语言写一段程序,其实要在机器上运行的话,机器是不懂的,要经过编译器、汇编器编译,变成汇编,最终再变成机器码,机器根据这些机器码的01可以控制硬件电路完成你程序想执行的操作。

objdump -h读出的.text段的大小怎么和用size工具读出的text大小不一样,要是一样

直接使用输出重定向到你想要的文件即可,不过将所有的控制到信息输出到一个文本文件,只有两个办法:

①:修改所有程序的输出路径:printf函数 echo.....几乎是不可能完成的任务。

②:修改linux的标准输出路径:

句柄 句柄的数字代号 描述。

STDIN 0 键盘输入。

STDOUT 1 输出到命令提示符窗口。

STDERR 2 错误输出到命令提示符窗口。

将标准输出 标准输出的默认设置更改为你要保存的文件,这样就会控制台的信息就会输出到你指定的文件里面。

原文地址:http://www.qianchusai.com/objdump.html

大塬,大塬朝属于什么时期的

大塬,大塬朝属于什么时期的

再世香港梦-30,再世香港梦跳刀阿七

再世香港梦-30,再世香港梦跳刀阿七

吉源的意思-10,吉源股份有限公司

吉源的意思-10,吉源股份有限公司

莺乔-20,莺乔吐吉,德必有邻

莺乔-20,莺乔吐吉,德必有邻

QMap-100

QMap-100

generalizations-80

generalizations-80

narrate,narrate怎么记忆

narrate,narrate怎么记忆

Erica

Erica

萦落-70,萦落什么意思

萦落-70,萦落什么意思

relationship-50

relationship-50