009、安全开发篇(一):控制台指令
返回:安全开发篇(一)目录 · 上一篇:008、函数调用过程 · 下一篇:010、语法规范风格
对应视频:1.8 基础-控制台指令.mp4
1、学习目标
这一节学习控制台基础。安全开发和安全工具经常需要在命令行运行程序、传入参数、查看输出、批处理文件,所以控制台能力必须补上。
需要掌握:
- 常用控制台指令;
- 如何从命令行运行
.exe; - 相对路径和当前目录;
- 命令行参数的基本形式;
- 控制台程序和安全工具的关系。
2、常用指令
| 指令 | 说明 |
|---|---|
cls |
清屏 |
cd |
切换目录 |
dir |
查看当前目录文件 |
cd /d D:\demo |
切换到指定盘符目录 |
.\demo.exe |
运行当前目录下的程序 |
echo %cd% |
查看当前目录 |
初学阶段最重要的是能进入程序所在目录,并从命令行运行生成的 .exe。
3、运行程序
假设程序生成在:
1 | D:\code\hello_c\x64\Debug\hello_c.exe |
可以先进入目录:
1 | cd /d D:\code\hello_c\x64\Debug |
再运行:
1 | .\hello_c.exe |
这样运行时,控制台不会一闪而过,输出也更容易观察。
4、命令行参数预告
1 |
|
运行:
1 | .\args_demo.exe test.txt 127.0.0.1 8080 |
可能输出:
1 | argc = 4 |
5、路径意识
控制台程序经常和文件路径打交道:
| 路径类型 | 示例 | 说明 |
|---|---|---|
| 相对路径 | .\data.txt |
相对于当前目录 |
| 上级目录 | ..\data.txt |
当前目录的上一级 |
| 绝对路径 | D:\logs\app.log |
从盘符或根目录开始 |
如果程序提示找不到文件,第一反应应该检查当前工作目录,而不是只看源代码。
6、安全开发观察
控制台是安全工具最常见的交互方式之一:
| 场景 | 参数示例 |
|---|---|
| 文件分析 | tool.exe sample.bin |
| 端口扫描 | scanner.exe 127.0.0.1 80 |
| 日志处理 | parser.exe access.log |
| 批量检测 | checker.exe targets.txt |
| 导出结果 | tool.exe input.txt output.csv |
命令行参数属于外部输入,后续写程序时必须检查参数数量、参数格式和路径合法性。
7、代码实验
1 |
|
这段代码体现了一个基本安全习惯:使用 argv[1] 前先检查 argc,避免访问不存在的参数。
8、复盘题
8.1 为什么从命令行运行程序比双击 .exe 更适合调试输出?
命令行窗口不会因为程序结束立刻关闭,输出内容可以保留下来,方便观察和复盘。
8.2 argv[0] 通常是什么?
通常是程序名或程序路径。真正由用户传入的第一个参数一般是 argv[1]。
8.3 使用 argv[1] 前为什么要检查 argc?
因为用户可能没有传入参数。如果不检查 argc 就访问 argv[1],可能访问无效位置,导致程序异常。
这一节的重点是:控制台不仅是运行程序的地方,也是后续安全工具输入、输出和自动化调用的基础。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruiqy~!


