这里有关于不同类型的封隔器的重大问题,这对我来说很有趣。我想尝试逆向工程。由于我对此还很陌生,所以我也想要源代码。

我希望通过不断地编译和重新编译源代码,我可以学习在IDA Pro中进行匹配并获得一次可以更好地理解这两个主题。

我已经检查了UPX的源代码,但是它非常复杂,因为它可以处理许多不同的平台和类型。

是否有一个开源代码打包程序专门处理Windows可执行文件,并且很容易理解?

评论

加壳程序不是学习将伪C与您面前的反汇编相关联的最佳方法。相反,您应该专注于单独学习这些技能。一旦学会了,这比培训(经验)更重要,因此,一旦您在可以使用它们的程度上分别“掌握”了这些技能,您仍然可以将它们结合起来,并且还将学习很多新知识。东西。

@ 0xC0000022L当然,我希望了解包装工的动机将有助于我保持专注。目光短浅,立志满足的青年等等。不过,我很感谢这个建议。

#1 楼



SimplePack是简单且开源的(尽管在ASM中,而不是在C中)

SimplePack并非微不足道,但足够简单,因此我通常自己首先使用它“动手”进行二进制打包程序培训。

,我的极简主义打包程序(源代码/二进制文件)也使用python(EP修补程序,压缩程序,cryptor,dropper,保护程序,虚拟程序,mutater)。没有实际用途,但仅作为最小的研究示例。
仅供参考,PolyEnE也是开源的(再次在ASM中),但不是很简单-YMMV。


评论


您的Python简约包装工非常棒。只需阅读该代码,其余的工作就更有意义了。不过,我很好奇,我尝试在Windows XP的calc.exe上使用Compressor.py,而aplib无法执行压缩(在_bits的第91行中声明> = 2)。这可能是已知的错误吗?或者(很有可能)我只是做错了什么?

– mikhailzhan
13年4月16日在17:04

谢谢-尽管它们表现不佳也就不足为奇了,他们只需要在我的helloworld.exe程序上工作(virt&mutaters只处理推/调用)-它们是PoC框架,可以为培训提供一个想法,仅此而已。

–天使
13年4月16日在17:11

@mikhailzhan我将lzss算法换成了另一种算法(quibble.googlecode.com/hg/dgreed/tools/lzss.py)。但是现在应用程序无法启动(并排错误。由于缺少导入表,Depends.exe崩溃了)。尽管如此,伟大的工作还是可以建立的。 Ange因编写易读的代码而倍受赞誉。

–mrduclaw
2013年4月16日17:31

@Ange谢谢您的回复!然后,我将尝试仅编译一个可玩的世界。非常感谢你!

– mikhailzhan
13年4月16日在17:33

我刚刚添加了指向二进制文件的链接

–天使
13年4月16日在19:33

#2 楼

看起来像您想要的:sePACK


一个简单的Windows .exe / .dll打包程序。 (压缩代码段和您的
编译后的二进制文件浪费的空间更少)用纯
C编写的几乎整个代码,也非常少,也可以理解(这使得修改非常容易,如调试器陷阱,加密等)。 )


评论


我安装了CodeBlocks(自述文件中建议的IDE),但它无法构建sePack。好像是gcc的较新版本破坏了它。 :/

– mikhailzhan
13年4月15日在23:06

我想您可能会问如何在stackoverflow上修复它,以及它是否与此处的反转有关!特定的错误当然会有所帮助……我会自己构建它,但是本周没有时间。

–cb88
13年4月16日在10:13

#3 楼

我建议您看看Yoda的保护贴。有一个带有源代码的版本。不幸的是,由于某种原因,它在Windows 7上不起作用(但在Win XP上却起作用)。除此之外,我不知道任何其他开源打包程序或保护程序(如您提到的UPX除外)。

评论


对于初学者来说,Yoda的外观看起来有些复杂,因为它还包括加密和优化以及反调试功能。我猜这取决于他是否想专注于一件事打包还是咬一块更大的块并在一处学习所有东西。

–cb88
13年4月15日在22:49

@ cb88是的,请最简单的方法。

– mikhailzhan
2013年4月15日23:00

#4 楼

以下是用Delphi编写的4个开源打包程序(如果需要,可以转换为C ++):


ExeFog 1.1
多态隐身者,吗啡
AHPacker 0.1
GHF Protector 1.0

如果没有Delphi的副本,则可以将开源Lazarus IDE与Free Pascal(FPC)编译器一起使用。

Lazarus + FPC可以打开Delphi项目文件,并且通常可以不经修改即可编译Delphi项目:http://sourceforge.net/projects/lazarus/

#5 楼

您最好先查看通用数据打包器,例如LZ4。这是一个用C编写的非常简单的打包程序。在同一站点上,也有多种语言的各种打包程序。跳入运行时打包器意味着很多文件格式的细节,实际上,在所有情况下,没有人能完全做到这一点。