为什么要使用缓冲区溢出?

时间:2012-04-24 09:51:08

标签: reverse-engineering buffer-overflow exploit

我理解缓冲区溢出的概念,并且承认它可以让我有机会在外部可执行文件中执行我自己的代码。

我的问题是,这不能简单地以更简单的方式完成吗?

Say注入DLL,并在DLLMain中编写恶意代码?

或者使用反汇编并将汇编代码注入可执行文件?

即使您的恶意代码正常运行,您可以通过自己编辑反汇编获得的损害或利润获得什么?

据我了解,当你掌握可执行文件的那一刻,你就是它的主人,并且可以通过玩反汇编来添加\ change \ remove代码,为什么要为搜索漏洞做出所有努力呢? / p>

谢谢,迈克尔。

2 个答案:

答案 0 :(得分:4)

事情是,你通常不会让受害者运行你的可执行文件。所以你可以把它变成恶意的事实没什么价值。

相反,你可以让潜在的受害者使用你的输入:这就是为什么它如此有趣。

答案 1 :(得分:2)

大多数情况下,这是由于现在用户对可执行文件持怀疑态度,以及他们不认为PDF文档可能包含病毒。在其他情况下,传递代码的唯一方法是通过漏洞利用,例如缓冲区/堆/堆栈溢出。

例如,在Apple iOS设备上,下载可执行代码的唯一方法是通过AppStore。所有这样的可执行文件必须得到Apple的明确批准。另一方面,如果用户只是在MobileSafari中访问指向恶意制作的PDF文档的链接,则可能允许攻击者在设备上任意执行代码。

Comex的JailbreakMe.com网站(v2.0(星光)和v3.0(Saffron))就属于这种情况。该网站的设备加载了一个非常复杂的PDF文件,最终导致设备越狱。世界上没有机会苹果公司会批准一款可以做同样事情的应用程序。