objdump 反汇编_so文件反汇编

objdump 反汇编_so文件反汇编objdump反汇编,反汇编与源代码混合显示,C++符号逆向解析。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

objdump反汇编用法示例

原文:http://blog.csdn.net/zoomdy/article/details/50563680
mingdu.zheng at gmail dot com

  • -d:将代码段反汇编
  • -S:将代码段反汇编的同时,将反汇编代码和源代码交替显示,编译时需要给出-g,即需要调试信息。
  • -C:将C++符号名逆向解析。
  • -l:反汇编代码中插入源代码的文件名和行号。
  • -j section:仅反汇编指定的section。可以有多个-j参数来选择多个section。

有代码如下:

class Main
{ 
   
	int a;
public:
	Main()
	{ 
   
		a = 0;
	}

	int getA(void)
	{ 
   
		return this->a;
	}
};

Jetbrains全家桶1年46,售后保障稳定

$objdump -d a.out # 简单反汇编

08048456 <_ZN4MainC1Ev>:
 8048456:	55                   	push   %ebp
 8048457:	89 e5                	mov    %esp,%ebp
 8048459:	8b 45 08             	mov    0x8(%ebp),%eax
 804845c:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
 8048462:	5d                   	pop    %ebp
 8048463:	c3                   	ret    

08048464 <_ZN4Main4getAEv>:
 8048464:	55                   	push   %ebp
 8048465:	89 e5                	mov    %esp,%ebp
 8048467:	8b 45 08             	mov    0x8(%ebp),%eax
 804846a:	8b 00                	mov    (%eax),%eax
 804846c:	5d                   	pop    %ebp
 804846d:	c3                   	ret    

$objdump -S a.out # 反汇编代码中混入对应的源代码

08048456 <_ZN4MainC1Ev>:
class Main
{
	int a;
public:
	Main()
 8048456:	55                   	push   %ebp
 8048457:	89 e5                	mov    %esp,%ebp
	{
		a = 0;
 8048459:	8b 45 08             	mov    0x8(%ebp),%eax
 804845c:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
	}
 8048462:	5d                   	pop    %ebp
 8048463:	c3                   	ret    

08048464 <_ZN4Main4getAEv>:

	int getA(void)
 8048464:	55                   	push   %ebp
 8048465:	89 e5                	mov    %esp,%ebp
	{
		return this->a;
 8048467:	8b 45 08             	mov    0x8(%ebp),%eax
 804846a:	8b 00                	mov    (%eax),%eax
	}
 804846c:	5d                   	pop    %ebp
 804846d:	c3                   	ret    

$objdump -C -S a.out # C++符号名逆向解析

08048456 <Main::Main()>:
class Main
{
	int a;
public:
	Main()
 8048456:	55                   	push   %ebp
 8048457:	89 e5                	mov    %esp,%ebp
	{
		a = 0;
 8048459:	8b 45 08             	mov    0x8(%ebp),%eax
 804845c:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
	}
 8048462:	5d                   	pop    %ebp
 8048463:	c3                   	ret    

08048464 <Main::getA()>:

	int getA(void)
 8048464:	55                   	push   %ebp
 8048465:	89 e5                	mov    %esp,%ebp
	{
		return this->a;
 8048467:	8b 45 08             	mov    0x8(%ebp),%eax
 804846a:	8b 00                	mov    (%eax),%eax
	}
 804846c:	5d                   	pop    %ebp
 804846d:	c3                   	ret    

objdump -j .text -l -C -S a.out # 打印源文件名和行号

08048456 <Main::Main()>:
_ZN4MainC2Ev():
~/objdump/main.h:5
class Main
{
	int a;
public:
	Main()
 8048456:	55                   	push   %ebp
 8048457:	89 e5                	mov    %esp,%ebp
~/objdump/main.h:7
	{
		a = 0;
 8048459:	8b 45 08             	mov    0x8(%ebp),%eax
 804845c:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
~/objdump/main.h:8
	}
 8048462:	5d                   	pop    %ebp
 8048463:	c3                   	ret    

08048464 <Main::getA()>:
_ZN4Main4getAEv():
~/objdump/main.h:10

	int getA(void)
 8048464:	55                   	push   %ebp
 8048465:	89 e5                	mov    %esp,%ebp
~/objdump/main.h:12
	{
		return this->a;
 8048467:	8b 45 08             	mov    0x8(%ebp),%eax
 804846a:	8b 00                	mov    (%eax),%eax
~/objdump/main.h:13
	}
 804846c:	5d                   	pop    %ebp
 804846d:	c3                   	ret    
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213528.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux版本i686,在Ubuntu中’i686’是什么意思? – Ubuntu问答

    linux版本i686,在Ubuntu中’i686’是什么意思? – Ubuntu问答问题描述检查我是使用32位还是64位Ubuntu。我查看了如何检查我是否拥有32位或64位操作系统?,发现此答案为uname-a。如果它显示为i386,它将是32位和amd64,它将是64位,但我得到了这个结果:Linuxmukund-ThinkPad-Edge-E4313.8.0-35-generic#50-UbuntuSMPTueDec301:25:33UTC2013i…

    2022年6月7日
    39
  • jdk11的zgc_开源jdk

    jdk11的zgc_开源jdkJDK11ZGC简介注1:本文翻译自这篇"文章"注2:我有了新的独立博客"地址",欢迎访问前言ZGC是最近由Oracle为OpenJDK开源

    2022年8月2日
    8
  • broadcast receiver_consolidator

    broadcast receiver_consolidator应用调用RegisterReciever,实质是调用的ContextImpl的registerReceiver,接下来跟一下这个流程:@OverridepublicIntentregisterReceiver(BroadcastReceiverreceiver,IntentFilterfilter){returnregisterReceiver(receiver,…

    2025年11月2日
    2
  • 搜索优化_百度搜索关键词

    搜索优化_百度搜索关键词一个网站其实很简单,但难的是在于那些搜索引擎如(google,yahoo,msn等)如何找到你,并提高排名!最近,我总结了7条最新、最重要的注意事项1.网站优化是为了访问者,而不是针对搜索引擎。  这一点是做网站的终极目标,请牢记这一点。搜索引擎优化要考虑用户体验,用户体验这个东西最重要的了,我们做站就是为了客户所以用户体验是非常重要是第一位的。其次在用户体验的基础之上很好地进行搜

    2025年7月29日
    4
  • git 删除时报 the branch is not fully merged 这是什么意思

    git 删除时报 the branch is not fully merged 这是什么意思

    2021年10月23日
    110
  • CentOs6 Yum 源失效 404[通俗易懂]

    CentOs6 Yum 源失效 404[通俗易懂]今天下午想装点东西。。突然发现所有的6yum源都失效了YumRepoError:AllmirrorURLsarenotusingftp,http[s]orfile.Eg.Invalidrelease/repo/archcombination/removingmirrorlistwithnovalidmirrors:/var/cache/yum/x86_64/6/base/mirrorlist.txtError:Cannotfindavalid..

    2022年5月16日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号