项目一、黑客攻击系统-功能菜单
第1节:项目介绍
第2节:项目需求
黑客打开这个攻击系统后,首先看到的就是一个“功能菜单”。
以便让黑客选择所需要的功能。
假设需求如下:
1.网站404攻击
2.网站篡改攻击
3.网站攻击记录
4.DNS攻击
5.服务器重启攻击
第3节:项目实现
创建一个空项目CP1
添加文件admin.c
main.c
#include <iostream>
#include <Windows.h>
/*
1.网站404攻击
2.网站篡改攻击
3.网站攻击记录
4.DNS攻击
5.服务器重启攻击
*/
int main(void) {
std::cout << "1.网站404攻击" << std::endl;
std::cout << "2.网站篡改攻击" << std::endl;
std::cout << "3.网站攻击记录" << std::endl;
std::cout << "4.DNS攻击" << std::endl;
std::cout << "5.服务器重启攻击" << std::endl;
system("pause");
return 0;
}
选择Debug 模式(默认), 再单击按钮
执行方式2
直接双击运行调试模式下的可执行文件:
执行方式4
直接运行发布模式下编译后的可执行文件:
发布模式和调试模式的区别
调试模式中会生成很多调试信息,便于排查错误,但是对执行效率有影响。
确认程序正确后,使用发布模式生成可执行文件。
第4节:项目精讲
1.1编程的本质
电影:骇客帝国
完全由程序控制的虚拟世界
已投入使用的家庭服务机器人
编程的本质
“程序员”预先编写一系列命令,控制程序执行特定的任务。
“程序员”就是“上帝”。
体验编程的本质
https:///students?_cc=SickTurnSouth
免费注册账号:
填写班级代码, 再点击”升级为学生账号”
不要点击”升级为老师账号”, 老师账号没有可玩性.
班级代码:
私信我获得
体验编程本质:
控制! 控制! 本质就是控制!
失去控制?除非程序有Bug…
计算机时钟BUG导致美军海湾战争中,唯一过百的伤亡(死28人,伤100余人)
BUG事件:1991年2月,美军的爱国者反导弹系统失效,未能拦截伊拉克的飞毛腿导弹,宰赫兰基地被炸毁,场炸死28个美国士兵,炸伤100多人,造成美军海湾战争中唯一一次伤亡超过百人的重大损失。
BUG分析:爱国者反导弹系统,每工作1小时,系统时钟延时3ms左右,当时已经连续工作了100小时,延时达到三分之一秒!飞毛腿导弹足以击中目标了!
需要关机重启,战事太急,没时间关机 😦
重要的事情再说一遍:
编程,就是使用程序员的思维,来控制计算机做事情。
编程思维修炼中的“编程闯关”,就是让玩家自己写代码,来控制游戏中的Hero打怪、捡宝、闯关。
1.2极简的C/C++ 语言语法规则
不做孔乙己,要做说干就干的平头哥
仅记原始规则,把握编程的本质
原始的规则:
1.各“语法单位”(组成部分)使用任意个(至少1个)分隔符隔开。
分隔符有:空格,或tab键,或换行符。
int main(void)
int
main(void)
都是合法的。
intmain(void)
是非法的。
2.必须使用英文输入法输入(仅双引号括起来的“字符串”中可使用中文)
3.每条代码的后面使用 ;表示这个指令代码结束。
4.#include等预处理指令,必须一条指令占一行
其他规则不需记忆,在后面的项目实践中掌握。
以下代码也能编译运行.
以上风格的代码, 常见于报价低但是由要求给源码的外包软件中.(目的:让人看不懂)
高逼格的代码: (推荐)
无论如何,只要遵循最基本的原则, 代码就是合法的, 就能编译执行.
懂得最基本的规则之后, 再追求优雅风格的代码(高逼格风格)
再次强调:
不要刻意记忆C++的语法规则(记也没有意义)
初学时,仅掌握最基本的语法规则即可!
1.3头文件的使用
为什么要使用头文件
事件回顾: <吐槽大会> 第一季
嘉宾”王建国”吐槽另一名嘉宾”常远”.
小咖见小咖, 互不认识. 不聊显得没礼貌, 强聊又太尴尬…
粉丝见蒙面偶像…
拜年走亲戚,分不清七大姑、八大姨…
原因: 各种因素导致的互不认识!
程序如戏
程序中有很多元素(std::cout, system), 都是一个个演员
但是他们之间都互不认识, 但是却要一起合作, 强行编译, 就会导致错误!
得预先介绍他们, 知道他们各自的名号和用法
解决方案:
包含相应的头文件! (头文件中, 含有相关元素的介绍说明)
std::cout 头文件: iostream
system 头文件: Windows.h
#include <Windows.h> 表示把文件Windows.h中的所有内容拷贝(复制)到“这里”。
头文件的查找路径
#include <Windows.h>
<>表示,从编译器默认的路径中去找文件stdio.h
这个默认路径,取决于编译器。不同平台下不同编译器的路径都不相同。
这个默认路径下,已经包含了c标准库所需要的所有头文件。
使用C++标准库的头文件使用该方式。
#include “mytest.h”
“”表示从当前目录下寻找文件mytest.h
如果在当前目录下找不到,再从编译器默认的路径中查找。
使用用户自定义的头文件使用该方式。
头文件的位置
要求放在文件的最前面。
#include 的作用是,把相关的声明拷贝到这个文件内,
所以都习惯把#include 放到文件的最前面。
如果放到后面,当include之前出现了相关的函数,就会有问题,例如
1.4程序从哪里开始执行-main函数
人生,就是一个程序。在不同的阶段,做不同的事。