关于代码反编译的几点说明

       反编译?反向?解密?(Decompilation? Reverse? Cracking?)

       简单的说,反编译是编译过程的反转:把一个可执行文件翻译为更高级语言。假如你丢失了你的代码工程源程序而只有可执行文件:如果源程序已不可得则反向工程(反编译)是有用的。

       耶,“源程序不可得”,这是否意味着我们可以反编译别的程序员开发的工程呢?嗯,对也不对......

      真正的反编译可能吗?(Is true decompilation possible?)

       不,当然不行。完全自动的反编译是不可能的—没有一个反编译器可以正确的重生出原始代码。

       当工程被编译和连接从而产生一个独立的可执行文件,程序中使用的大部分的名称都被转换为地址。名称的丢失意味着反编译器必须为所有的常量、变 量、函数和过程创建唯一的名称。当然原始程序代码里面的所有说明和注释都不会被包含在可执行程序中。所以即使在某种程度上反编译是成功的,产生的“源代码”仍缺少了原始含义的变量和函数名和其它注释信息。

        显而易见,原始编程语言的语法在可执行文件中已不存在。所以,让反编译器对可执行文件的连续的机器语言指令进行翻译并判断出原始语言指令是非常困难的。

      为什么要使用并且什么时候使用呢(Why and when to use.)

       反向工程因为以下几个原因而使用:

      丢失源码的恢复;
      把应用程序移入新的硬件平台;
      判断程序中是否存在病毒或恶意代码;
      当程序拥有者不能更正错误时的程序错误的更正;
      其它开发人员的程序源代码的恢复(如:测定一个算法)


      这合法吗?(Is this legal?)

       反向工程不是解密,尽管很难在两者之间划一个明晰的界限。计算机程序被版权和商标法保护。不同的国家对版权拥有者的权利有着不同的解释。最共同的解释是,下列情况下的反编译是可以的

       为了更好的解释的目的,而接口说明已不可得;

      为了错位更正的目的,而版权拥有者不能进行更正;

      为了判断程序的部分内容是否被保护。

当然,如果你不能肯定是否被允许反汇编某些程序的可执行文件时,你应该很小心或者联系你的律师。

      注:如果你正寻找着怎样破解程序、钥匙产生器或仅仅是序列号:那么你找错地方了。请保证你在这儿所写下或所介绍的每件事都仅仅是为了研究和教育的目的。

Idea是一种集成开发环境(IDE),可以用于开发Java应用程序。它提供了许多功能,例如代码编辑、调试、编译以及将源代码打包成可执行的jar文件等。关于反编译和修改jar包,以下是一个简要的说明: 首先,反编译jar包是将已编译的Java字节码转换回可读的Java源代码文件的过程。这可以通过使用一些反编译工具来完成,例如JD-GUI、Fernflower等。你可以选择合适的工具来打开jar包,并将其中的class文件转换为可读的Java源代码。然后,你可以查看和修改源代码。 在反编译之后,你可以使用Idea或其他文本编辑器打开反编译得到的Java源代码文件。在这里,你可以对代码进行修改,添加新的功能,或者修复现有的问题。 完成修改后,你需要将修改后的代码重新编译成class文件,并将其替换原来的class文件。然后,你可以使用Idea或其他工具将这些class文件重新打包成一个新的jar文件。 在进行jar包修改时需要注意以下几点: 1. 反编译和修改jar包可能涉及法律问题,请确保你有权对jar进行修改。 2. 修改jar包可能会违反软件许可协议,确保你已经理解并遵守相应的协议。 3. 修改jar包可能会引入潜在的风险和漏洞,需要进行充分的测试和验证。 总结来说,可以使用Idea反编译jar包,通过修改Java源代码文件实现功能的添加和修复。但在进行这一过程时,请确保合法性、遵守许可协议,并进行充分的测试和验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@David Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值