一、前言:

    相信很多学习计算机的同学,都有一个黑客梦,这次就给大家稍微展示一些“拙劣”的黑客技巧,仅限于linux环境。因为工作以后,90%的人都是在linux系统从事开发工作的。

二、测试环境:
微信图片_20210922225910.png

三、strcmp函数简介

    以大家最熟悉的strcmp函数为例,玩一把劫持。人狠话不多,直接上代码。

    1、strcmp函数原型:

    int strcmp(const char *s1, const char *s2);

    2、strcmp函数所属头文件

    #include <string.h>

    3、strcmp函数介绍

    strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1

    4、strcmp基本用法 

         test.c文件内容如下:

    #include <stdio.h>    
    #include <string.h>
    
    int main()
    {
        char passwd[] = "654321";
        int ret;
    
        ret = strcmp(passwd, "123456");
    
        if (ret == 0)
        {
            puts("密码正确");
        }
        else
        {
            puts("密码错误");
        }
        return 0;
    }

     5、编译运行

        微信图片_20210922232215.png

四、strcmp函数劫持

    以下代码会涉及到linux环境高级编程的知识,有兴趣的朋友可以留言,根据大家感兴趣程度,我可以再写一篇博客单独介绍这些技巧。

    第一步、编写劫持模块   mystrcmp.c

    微信图片_20210922233528.png

   第二步、编译劫持模块

   gcc -fPIC -shared -o mystrcmp.so mystrcmp.c

   第三步、加载劫持模块

   export LD_PRELOAD=./mystrcmp.so

   第四步、运行test程序

  大家可以看到,即使passwd的值为654321,也会打印密码正确,神奇不。

   微信图片_20210922233849.png

  第五步、恢复环境

  export LD_PRELOAD=

五、小结

 以上就是劫持(Hook)库函数的完成流程了,大家觉得好玩不,有兴趣留言,后续还会更新更多好玩的。

点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论