黑客为什么可以做到无需知道源码的情况下找出系统漏洞？
题目可能不能表达完整我的意思，大体来说是：

我作为一个比较普通的程序员，要读懂一个别人的源码已经很不易了，还要从中找出漏洞。比如你把windows的源码放我面前，我肯定看晕了，别说找漏洞了，何况windows还不开源。linux开源，我看的也很晕，只能一点点扣。还有web方面，不知道别人服务器的源码，怎么找出别人服务器的程序上的漏洞的呢。


所以我觉得黑客或者说安全人员一定有和软件开发者不同的视角 ，来看待这个问题。

希望得到指教。谢谢！
其实二进制安全这块，在2008-2016年这段时间比较好玩一点，因为那段时间智能手机刚刚起步，性能不算太强，大部分人娱乐仍然还是在PC端，而当时的PC端安全还是群魔乱舞，鱼龙混杂，因为某神奇的“中文编程”软件，一大群小学生疯狂涌入，通过调库编写各式各样的钓鱼，勒索，盗号程序，写起来没什么技术含量，逆向分析起来也没什么技术含量。当时比较好玩的就是“调戏大黑客”，当时很多的钓鱼程序截获到session或者账户密码之后，是通过SMTP协议传输到这些“大黑客”邮箱中的，而大部分SMTP走的是明文传输，需要邮箱的账户和密码，所以只要监控网络流量或者inlinehook 网络等函数，就可以把这些流量数据剥离出来，从而反盗走黑客的邮箱账户密码，实现反杀。原始流程 我们可以通过inlinehook的方式监控网络api截获流量，这个过程不需要逆向分析手段也不需要知道源代码，因为API的内存地址是可以知道的。黑盒分析流程比如下面这个钓鱼软件，执行后会杀掉qq的进程，然后弹出一个窗口诱导用户输入账户密码后发送到指定邮箱，使用Pedoll截获流量后，就可以直接剥离钓鱼软件制作者的邮箱账户及密码因为某神奇的“中文编程”软件的字符串比对也被包装成了一个固定地址的函数，我们甚至可以充分发挥这个特性，截获这个函数，把勒索软件一起破解了。例如下面的勒索软件以上手段，都完全不需要知道源码，定位特征后，以后一个脚本完成破解，甚至都不用逆向。附上以前写的分析用的一个小玩具pedoll及github代码：DBinary：恶意程序行为分析工具PeDoll