nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
有朋友在群里问黑客编程如何学习?这个题目也是一个可大可小的问题,因为黑客编程没有一个死的界限。不是说到什么级别就算或者不算,同样是属于黑客技术,也有简单和复杂之分。nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
总体来说,要成为较为资深的黑客编程者,你需要掌握以下一些必不可少的编程技术知识:
1,C、C++编程
作为一个比较底层和功能强大的编程语言,黑客基本上是必备的。虽然也有一些玩黑的人删除用Delphi甚至是易语言等这种,单纯编写木马还可以,但不是主流,这类编程很多依赖于系统接口,而系统函数几乎都是用C/C++编写而成,很多数据结构,函数等与之自然结合,水到渠成。要想成为黑客编程高手,C/C++是不二选择,没有这块,后面说的东西就大打折扣了。
2,深入的系统知识
黑客编程需要用到非常多的系统功能,你对所使用的系统必须有较深入的了解,比如权限,程序运行级别,文本格式自动关联,线程进程相关知识,跨进程操作,内存管理。这些东西要是不调用系统API,基本不可能完成。另外像鼠标、键盘、文件读写等事件监控等等都少不了对系统的了解。对计算机本地的各种窃听、记录、自动启动、限制用户都意味着熟悉这些知识,这部分是木马作者必须要学习的。早期的黑客编程由于网络不发达,攻击很多来自于系统内部的缓冲区溢出攻击,这中攻击方式成了黑客的经典攻击,如果说你不了解和使用这种,就不要说自己玩黑客。但是要完全理解和正确应用是需要了解函数调用过程以及内存相关知识的系统知识。
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
3,熟悉可执行文件格式如果要完成函数调用的截获,增加、减少第三方应用程序的功能,或者传播你自己的xx东西到其他进程,你需要对可执行文件比较了解,对执行文件的加载过程,动态库函数是如何注册到执行文件的流程有清楚认识。要完成典型感染其他程序,这个也是必不可少的,这部分和汇编知识是文件型病毒作者必不可少的学习内容。
4,熟悉常见的汇编指令
要完成一些高级功能,作为一个正牌的黑客编程者,汇编的知识也是必不可少。比如提取传说中的shellcode,从用户模式进入内核模式常常会用到。一些特殊功能不用汇编基本不可能完成,比如在你退出你自己的代码之后需要自己把代码所在的所有物理内存释放掉这样的特定需求。所以黑客程序,实际上有相当一部分是不按常规出牌的程序,这些特别的地方就是使用了汇编(机器码)直接完成一些高级语言所不能完成的功能,很多典型的计算机病毒都是直接用汇编写出来的。可见作为资深的黑客编码者,汇编确实非常重要。
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
5,网络编程技术说到黑客编程,估计大家都知道,要远程通信和控制,网络技术是必备的,你不只是需要了解和学习基本的TCP/IP协议,还有上层的各种应用层协议。比如你听到过ICMP木马吧、你发送邮件需要知道SMTP和POP3协议吧,你要下载和上次文件,需要知道FPT/TFTP、HTTP协议吧。在特定情况下,甚至还需要构造网络包,这些都要求你对网络相关知识和编程有了解。否则要写一个扫描器,漏洞检测工具是不可能完成的,尤其是现在网络这么发达,不像早期很多黑客程序通过直接接触媒介进行活动,基本都是网络连接。
6,网页相关技术
作为一个经典的黑客,修改网页貌似成了黑客的标记,这样装起逼来更十足^_^。所以你还的了解HTML、JSP、ASP、PHP等这些网站前端编程语言以及用的很多的SQL等数据库,要不然怎么玩注入漏洞攻击呢?比起早期的栈溢出攻击,现在使用的更广泛,毕竟缓冲区溢出这个漏洞太经典,系统编写者首要就是防止这个漏洞出现,所以现在要发现和使用它已经太难了。
7,会使用常见的相关工具
上面说的貌似不多,其实要每一项都真正学习并掌握,是需要花很多时间,有相当难度的。所以更好的方式是需要掌握一些常用的工具来帮助你,而不是所以的都去学习,当然学习了更好。比如网络抓包、扫描联网主机、寻找代理服务器等等,就有很多常用的工具而不需要你自己去编写。对于大多数黑客程序编写者来说,往往重点在其中一项或者几项中熟悉,那么其他部分就使用现有的工具,比如系统漏洞扫描、网站注入漏洞扫描、弱口令检查等等,发现之后再编写对应的工具完成你的任务。
以上主要列出黑客编写需要的一些技术,其实每一项都有很多要学习,要完全搞得很熟悉估计绝大多数都完不成,就看感兴趣的你想学哪些了。
如果内心还有编程的梦想,或者学习过程中遇到的困惑,问问编程到底是咋回事,想深入学习编程,获取编程里面那点事,可以关注老码农的微信公众号:程序员互动联盟(coder_online),里面集结了众多的自学编程以及编程高手,问下如何自学。
本文属原创,禁止转载,谢谢