ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[01sec] 二进制安全路线分析

2022-07-12 06:31:08  阅读:248  来源: 互联网

标签:学习 二进制 编程 C++ C语言 路线 Windows https 01sec


必读目录

1、Visual C++ 2013 入门经典(第七版)
2、汇编语言 基于x86处理器
3、Windows API -函数、接口、编程实例
4、Windows 核心编程(第五版)
5、Windows NT/2000 本机API 参考手册
1、Windows内核编程
2、Windows内核情景分析
3、Windows内核原理与实现
4、Windows内核安全编程
5、IDA Pro权威指南(第2版)
6、C++反汇编与逆向分析技术揭秘
7、软件调试(第二版)
8、数据结构与算法分析 -C语言描述
9、算法:C语言实现(第1~4部分)
10、Windows PE 权威指南
11、TCP/IP网络编程
12、Windows网络编程

学习经验

x86汇编我推荐看李忠的那本《x86汇编语言:从实模式到保护模式》(看完王爽那本之后再看),然后windows api部分可以换成《windows程序设计》(一定要第五版的),有空闲的话可以配合罗云彬的《win32环境下32位汇编程序设计》,然后要学习pe,这本强烈推荐《程序员的自我修养》(几本必看),然后看csapp(也就是深入理解计算机系统,必看),然后可以开始正式逆向和pwn的学习了,这里我推荐看雪的《加密与解密》,以及韩国人写的《逆向工程核心原理》,想要再拓展就看安天翻译的《逆向工程权威指南》(原大名鼎鼎的RE4B)。之后要想再深入的话在接触windows内核,这个阶段我建议去打ctf,re和pwn的领域,多刷题,坚持下来基本就成为大牛了

以上作为一个还算是搞二进制安全的人的建议(虽然现在主要研究病毒分析),当然如果还要深入就去搞操作系统,编译原理这些了,上面的算是基本功,而这个算是内功。不过最重要的不是看书看多少,必须要实践

顺便如果有钱,可以去考一个OSED,那个配套课程完整的讲解了windows下的漏洞利用以及开发,非常有体系,最后考一个证,找工作也方便(特别是国外找工作)

顺便我想说,看了这一大堆,要学的东西非常多,的确,花这些精力如果去搞开发,拿的待遇比这个不知道高多少。安全特别是二进制安全要达到能够养活自己的门槛就是非常高,而且默认就是全栈,你什么都得会,不仅限于二进制或者Web,这个是一个长期的过程,如果不是真的热爱,建议趁早转行

报名没有限制条件,你有护照就能报名,报名费大概1499刀,3个月的实验室访问,一次考试机会,以及配套的学习资料和视频,官方给出的前提是熟悉x86汇编以及windows常用api,熟练使用各种调试器,反汇编器,会python,C/C++也得会,其它的没啥要求,但是根据我学习的经验来看,最好还是把我最开始的那条回复的东西学完,不然钱容易打水漂。顺便考试资料、视频和考试本身全英文,因此你英语也得有一定水平

顺便推荐几个做练习的网站,等有一定水平再去接触:
PWN:
https://ropemporium.com
https://exploit.education
https://pwn.tn/home
https://pwn.college
https://pwnable.tw
https://pwnable.kr/

RE:
https://www.root-me.org
https://flare-on.com
https://challenges.re
https://crackmes.one/lasts/1
http://reversing.kr

C语言与单片机

关于C语言入门没有反馈的问题,其实可以考虑从单片机入门,不用学的多深入就能做一点东西了,新手学习用的小项目也很多。而且在没有了操作系统的干扰后,程序直接指挥CPU做每一步操作,更容易看到程序执行每一步后的反馈,也更方便理解程序是怎么控制物理世界的实物。单片机的RAM比较小也没有操作系统捣乱可以很方便的手动管理,更方便理解指针、结构体等容易容易把新手劝退的点。我上学时候 很多同学都是大一学校开了C语言的课,学了个狗屁不通期末考试30分都够呛,倒是大二在单片机课上把C语言学明白了。
不过从单片机入门也是有一些缺点和局限性的,比如需要有一点基础的电路知识(至少是高中水平),因为和硬件有关所以需要一定的动手能力。
那是你还没用到复杂功能,举个例子,把STM32如何操作GPIO等外设的底层代码搞清楚了,C语言的指针和结构体就算是学明白了。

C/C++

C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:

第一层次,C++基础:挑选一本入门书籍,如《C++ Primer》、《C++大学教程》、或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参考;

第二层次,正确高效地使用C++:此层次开始必须自修,阅读过《(More)Effective C++》、《(More)Exceptional C++》、《Effective STL》及《C++编程规范》等,才适宜踏入专业C++开发之路;

第三层次,深入了解C++:关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、《STL源码剖析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、《C++模版元编程》;

第四层次,研究C++:阅读《C++语言的设计和演化》、《编程的本质》(含STL设计背后的数学根基)、C++标准文件《ISO/IEC 14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献。

由于我主要是应用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而已,单凭语言并不能应付业务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知识”,到达第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。虽然学习C++有难度,但也是相当有趣且有满足感的。

如果题主认为的「精通」是指上述所指的第二层次,那么我估计一年全职时间也未足够「精通」。首先,阅读这些书籍本身

也需要不少时间,而且对于一般人来说(指除了一些学习记忆能力超强的人),很可能需要阅读几遍才能记住一些细节。另外,阅读后必须要练习。除了入门的习题

外,还需要做一些工程向的项目,才能了解各种语法、编程范式的使用方法及时机,理想地建议参与一些开源项目。然而,学习是需要不断思考并把结果沉淀,方法

包括与朋友讨论、写博客、写知乎答案等,这些都需要时间。

如引文末段所指出,我建议不要把「精通C++」作为一个一年目标,应该要把学习语言作为一个持续的过程,同时要把语言运用在具体的应用场合中。

reference

c++做游戏开发,很好的启示

标签:学习,二进制,编程,C++,C语言,路线,Windows,https,01sec
来源: https://www.cnblogs.com/p136f/p/16287080.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有