(接上篇)反编译两种可执行文件

上篇地址:http://blog.csdn.net/eliot_shao/article/details/78648314

上篇主要内容回顾:

上篇内容介绍了静态编译生成静态库,然后链接静态库生成可执行文件的过程;也对比介绍了动态编译生成动态库然后链接动态库生成可执行文件的过程。我们也得出了结论:

链接静态库生成的可执行文件main运行不依赖与静态库是否存在,而链接动态库生成的可执行文件main2是依赖于动态库的存在的。


下面我们使用反编译手段分析上面的结论。

1:链接静态链接库,生成可执行文件
gcc main.c -static -L. -lstruct -o main

反编译可执行文件 objdump -D main > static_obj.txt

2:链接动态链接库,生成可执行文件
gcc main.c -L. -lstruct -o main
2

反编译可执行文件 objdump -D main > shard_obj.txt

对比大图:


链接静态库(该库只有hello函数)生成的可执行文件反编译结果:


链接动态库(该库只有hello函数)生成的可执行文件反编译结果,分三步查找:

查找过程1、2、3可以通过博文http://blog.csdn.net/eliot_shao/article/details/78549247中的一张图反映。最终还是依赖于解析器将动态库加载到内存,找到动态库对应符号(hello)的位置,然后跳转到hello,执行权利交接,hello函数得以执行!



.so本质和可执行文件一样也是elf,elf一种。.a则不是elf文件,这里没深入研究。见下图。

结论;通过反编译两个可执行文件,我们会发现二者主要区别是动态链接过程,前者已经把静态库的内容链接到可执行文件内部,不需要额外的定位库文件,而后者则需要解析器去通过PLTGOT去加载动态库文件(.so)到内存然后在去定位要访问函数的位置。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VC反编译软件,也称为Visual C++反编译软件,是一种可以将已经编译成机器代码的程序重新转换回可读的源代码的工具。VC反编译软件主要用于逆向工程、代码审查、软件安全分析等领域。 VC反编译软件能够将机器代码进行逆向转换,还原出编写该程序时所使用的高级语言源代码。通过使用VC反编译软件,我们可以更加容易地理解程序的逻辑结构和运行过程,对程序进行修改和优化。 VC反编译软件一般支持多种编程语言,主要包括C++、C#等。通过将编译生成的可执行文件或动态链接加载到VC反编译软件中,软件会尝试还原原始的源代码,包括变量名、函数名、类名等。 但是需要注意的是,VC反编译软件并不是完美的,它无法还原出源代码中的注释、宏定义等细节。此外,当程序使用了加密、压缩、混淆等保护措施时,VC反编译软件的效果会大打折扣。 由于VC反编译软件的存在,一些开发者可能担心自己的代码会被不法分子通过反编译获取。因此,在进行软件开发时,我们应该注意代码的安全性,采取一些措施来防止代码被反编译,例如使用代码混淆技术、加密关键部分等。 总而言之,VC反编译软件是一种能够将机器代码还原为可读源代码的工具,它在逆向工程、代码审查、软件安全分析等领域发挥着重要的作用。然而,如何保护好自己的代码,避免被反编译,也是我们需要思考和解决的问题。 ### 回答2: VC反编译软件是一种能够将已经编译后的VC程序反向解析为可读的源代码的工具。VC指的是Visual C++,它是一种用于开发Windows操作系统上的应用程序的集成开发环境。反编译软件可以通过分析程序的二进制文件,还原出程序的源代码结构和逻辑。 反编译软件的作用主要有两方面。首先,对于一些没有提供源代码的软件,我们可以使用反编译软件将其反编译,从而了解软件的实现原理和逻辑。这对于研究学习和逆向工程都非常有用。其次,对于一些已经编译的程序,在需要修改或者调试的时候,我们可以使用反编译软件将其反编译为源代码,方便我们进行修改和调试。 然而,需要注意的是,反编译软件并不是万能的,它所还原出的源代码并不一定完全和原始的源代码相同。反编译只是通过解析二进制文件还原出源代码的一种技术手段,并且在这个过程中可能会存在误差。因此,反编译出的源代码可能会比原始的源代码缺失一些细节和结构。 另外,需要强调的是,反编译软件的使用需要严格遵守法律法规,不得用于侵犯他人的知识产权和商业利益。在使用反编译软件时,应该遵循合法合规的原则,尊重程序作者的权益,并仅限于学习、研究和技术交流等合法目的。 总之,VC反编译软件是一种能够将已经编译后的VC程序反向解析为可读的源代码的工具。它在研究学习和逆向工程中有一定的作用,在使用时需要遵守法律法规并保持合法合规的原则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值