当前位置: 首页 > news >正文

openssl3.2 - 在VS2019下源码调试openssl.exe

文章目录

    • openssl3.2 - 在VS2019下源码调试openssl.exe
    • 概述
    • 笔记
    • 先看一个用.bat调用openssl干活的实例
    • VS2019调试参数设置
    • 设置 - 命令参数
    • 设置 - 工作目录
    • 设置 - 环境变量
    • 将命令行中需要的文件拷贝到exe目录
    • 单步调试
    • 备注
    • END

openssl3.2 - 在VS2019下源码调试openssl.exe

概述

openssl.exe运行时, 是带环境变量的.
用VS2019调试时, 只带命令行参数是不行的.

笔记

进行这个实验, 前提是自己已经编译了能在vs2019下运行的openssl3.2的命令行工程.
前面已经做了笔记(openssl3.2 - 自己构建openssl.exe的VS工程(在编译完的源码版本上))

先看一个用.bat调用openssl干活的实例

在这里插入图片描述

@echo off
rem \file a1_create_certificate_directly.cmdset OPENSSL=.\openssl
set OPENSSL_CONF=.\openssl.cnf
rem echo OPENSSL_CONF = %OPENSSL_CONF%rem Root CA: create certificate directly
set CN="Test Root CA"rem root根证书的私钥和证书要放在一个.pem中
%OPENSSL% req -config ca.cnf -x509 -nodes -keyout root_ca.pem -out root_ca.pem -newkey rsa:2048 -days 3650 > opt_log_A1.txt 2>&1

这个批处理调用openssl.exe来生成一个测试用的根证书
可以看到, 有2个环境变量必须设置 OPENSSL_CONF, CN.
如果没有这2个环境变量, 操作就会失败.

下面用VS2019调试自己编译的my_openssl_cmd.exe工程, 来做同样的事情.
不同的地方, 我们要单步调试, 找出实现这个功能的函数调用序列.

VS2019调试参数设置

设置 - 命令参数

在命令参数输入框最右边选择下拉箭头/编辑, 会弹出编辑框, 输入方便一些.
在这里插入图片描述

在这里插入图片描述

设置 - 工作目录

工作目录必须是编译出来的exe的目录, 不能是源码的工程目录, 否则会导致exe找不到命令行参数中的指定配置文件, 导致打开配置文件失败

在这里插入图片描述

设置 - 环境变量

必须在环境输入框的最右边选择下拉箭头/编辑, 来输入, 否则无法正确输入(因为环境变量之间使用\r\n分隔的).

在这里插入图片描述
在这里插入图片描述
需要勾选环境变量合并.
在这里插入图片描述

将命令行中需要的文件拷贝到exe目录

在本例中, 要拷贝的文件如下:
ca.cnf
openssl.cnf
下面这个截图是程序编译跑完了, 删掉*.obj后的样子
在这里插入图片描述

单步调试

这步和普通的VS2019调试没有区别.
主要是看一下, 是否命令行参数给的不对, 导致进入报错处理.
单步了一下, 程序运行正常, 正常退出.
然后去exe目录看到, 已经正常生成了root_ca.pem.

备注

从来没调试过需要环境变量的工程, 这是头一次, 汗颜.

END

相关文章:

  • 如何通过Burp Suite专业版构建CSRF PoC
  • 【纯CSS特效源码】(二)精美的立体字
  • JavaScript基础05
  • css 怎么绘制一个带圆角的渐变色的边框
  • UGUI Image图像控件替换图片
  • Java 8 中的 Stream 轻松遍历树形结构
  • 视频转为序列图的软件,让视频批量转为序列图
  • Object.keys()
  • Go语言学习记录——用正则表达式(regexp包)来校验参数
  • mysql进阶-索引基础
  • 高效构建Java应用:Maven入门和进阶(五)
  • 【JavaScript】es6开发常用技巧
  • Page 251~254 Win32 GUI项目
  • 使用MATLAB连接USRP
  • 6、C语言:输入与输出
  • [笔记] php常见简单功能及函数
  • 2018一半小结一波
  • css属性的继承、初识值、计算值、当前值、应用值
  • echarts花样作死的坑
  • MySQL QA
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • storm drpc实例
  • Vue UI框架库开发介绍
  • 阿里云应用高可用服务公测发布
  • 大整数乘法-表格法
  • 记录一下第一次使用npm
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 力扣(LeetCode)21
  • 深度学习入门:10门免费线上课程推荐
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 由插件封装引出的一丢丢思考
  • 正则表达式
  • ${factoryList }后面有空格不影响
  • (编译到47%失败)to be deleted
  • (二)斐波那契Fabonacci函数
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)一些感悟
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .net Application的目录
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .Net Winform开发笔记(一)
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET序列化 serializable,反序列化
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @column注解_MyBatis注解开发 -MyBatis(15)