大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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;
}
};
$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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/213528.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...