是否有任何希望的闪客,将转换成一个可执行程序的C / C + +代码?
这种常见问题的答案是摘录片段由Bob斯图特。
不要屏住呼吸。 想想看, ... 对于闪客正常工作,无论是1 )每个编译器会产生大量相同的代码,即使有充分的优化打开,或2 )它必须承认个别输出的每个编译器的代码生成器。
如果第一个案件是正确的,就不会有更多的需要编译的基准,因为每个人都将相同。 对于第二个案例是真实的,需要极为复杂的程序,不得不改变与每一个新的编译器释放。
因此,如何具体decompilers为具体的编译器-说,闪客旨在只有工作所产生的代码,也就是说,公元前+ + 4.5 ?这让我们回到正确的优化问题。 编写的代码的清晰度和理解往往是效率低下。 编写的代码实现了最佳的性能(速度或大小)往往是隐蔽(最好! )添加到这一个事实,即所有现代编译器有多种优化开关控制优化技术,使这避免。 底线是,对于一个合理的大型,复杂的源模块,你可以编译器产生了一些不同的对象模块只需更改您的优化开关,使您的闪客也将是一个deoptimizer可以自动承认这优化战略,在编译时启用。
让我们进一步简化和明确规定,您只需要支持一个具体的编译器和你要破解的最合乎逻辑的源代码没有试图解释优化。 然后呢? 一个很好的优化工具可以将大大改写内部的代码,所以你离开你的闪客将,不仅隐蔽,但在许多情况下,充满了转到报表和其他没有任何的良好的编码实践。 在这一点上,你有反编译源代码,但有什么好处呢?
我还注意到仔细参考源模块。 一个特点C是,它在很大程度上成为不可读除非分为易于维护的源代码模块( 。 C文件) 。 如何闪客处理呢? 它可以尝试破解整个计划的一些庞大的Main ( )函数,失去所有的模块,也可以尝试将每个称为功能纳入自己的档案。 第一种方法会产生混乱和无法使用的第二个会遇到问题的原始来源哈德档案多种功能使用静态数据和/或一个或多个职能要求的一个或多个静态的职能。 阿闪客可以使静态数据和/或职能全球只有牺牲或可读性(这已经是不能接受的) 。
最后,请记住,商业应用的代码往往是最困难或时间紧迫的职能汇编可以证明几乎是不可能的反编译成一个C同等学历。
就像我说的,不要屏住呼吸。 随着科技不断发展下decompilers可能变得更为可行,优化和语言( C + +的,例如,将是一个显着更严厉的语言来解译比c )又阴谋使他们不太可能。
多年Unix应用程序中已经分发笼罩来源形式(机器可读的,但不是人-所有的意见和空格去掉,所有的变量名字的形式OOIIOIOI等) ,一直是一个非常适当的手段来保护作者的权利。 这是非常不可能的闪客输出甚至是为可读的笼罩来源。
更新:闪客技术仍然非常困难,但已取得重大进展,因为这是书面。
阅读什么是闪客?的最新资料,闪客项目。
|
时间是否有任何希望的闪客 , 将转换成一个可执行程序的C / C + +代码?

