Linux环境下OpenSSL的调试debug方法

最近,由于项目需求。需要使用OpenSSL提供的接口完成一些工作。而debug程序过程中,编译器无法进入其函数内部,而会直接跳过该函数。这给学习和深入了解其接口带来不便。通过本文,读者可以实现进入OpenSSL接口内部的需求。

参考:
https://www.cnblogs.com/405845829qq/p/8717571.html
https://cloud.tencent.com/developer/article/1468839
https://github.com/jzysheep/Youtube

1.下载OpenSSL

首先,我们需要在Github上面下载OpenSSL。使用clone和下载zip均可。我这里使用下载zip文件的方式。

# 方法1 直接clone
cd ~/
git clone https://github.com/openssl/openssl.git
cd openssl/
# 方法2 download zip文件
unzip openssl-master.zip 
cd openssl-master/
OpenSSL

2. 安装静态库

在下载后的目录中执行如下操作,安装静态库版本。

./config --prefix=/usr/local --openssldir=/usr/local/ssl    
make && sudo make install 

3. 安装动态库

安装目录为/usr/local下。安装动态库时增加-d选项,调试时使用动态库,达到跟踪代码的需求。

./config -d shared --prefix=/usr/local --openssldir=/usr/local/ssl    
make clean    
make && sudo make install

4. 加入动态链接库的路径

注:执行此操作需要root身份

su - root 
echo "/usr/local/lib" >> /etc/ld.so.conf 
ldconfig -v

5. 调试程序

至此,全部安装工作结束。下面我们来看一下是否达成进入OpenSSL函数内部的效果。
以下程序是调用OpenSSL的相关函数,实现MD5哈希散列算法的程序。

#include<stdio.h>
#include<openssl/md5.h>
#include<string.h>

int main( int argc, char **argv )
{
MD5_CTX ctx;
unsigned char *data="123";
unsigned char md[16];
char buf[33]={'\0'};
char tmp[3]={'\0'};
int i;

MD5_Init(&ctx);
MD5_Update(&ctx,data,strlen(data));
MD5_Final(md,&ctx);

for( i=0; i<16; i++ ){
sprintf(tmp,"%02X",md[i]);
strcat(buf,tmp);
}
printf("%s\n",buf);
return 0;
}

我们在终端输入如下命令将程序编译,然后使用gdb调试程序

gcc md5.c -o md5 -ggdb -lcrypto -lssl
gdb md5

调试

进入gdb后,输入start开启debug,之后输入layout src查看代码窗口,输入n单步运行到OpenSSL函数处,输入s发现可以进入OpenSSL函数内部,说明已经成功给OpenSSL配置debug功能。
单步运行至接口处

进入OpenSSL内部

总结:本文提供了安装具有调试debug功能的OpenSSL的方法,希望对读者能有帮助。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过...
    小5筒阅读 10,866评论 0 3
  • 这里说的毛发,不是头发,是像毛发的其他东西,比如,植物上的细小绒毛也可以像毛发一样去画。 一、在素描纸上直接画的线...
    一夏飘雪阅读 11,913评论 16 167
  • 6/51 反思自己 昨天停更一天,今天本来也很累,但决定写几个字,不能停更,得坚持写。 这两天反思自己,最近做的不...
    涂涂2019自律学习阅读 663评论 0 0
  • 小镇上突然吹来一阵冷风,小雅不禁打了个寒战。小镇四季如春的天气多少年来没有这么冷过了。小雅加紧脚步,匆匆往店里的方...
    欧啦欧啦啦阅读 3,465评论 0 2
  • “只要做好刑事风险防控,并不是所有的职业放贷人都会构成犯罪。” 昨晚,朋友圈中充斥着以“职业放贷人的噩梦”、“职业...
    姜成慧阅读 2,885评论 2 1