吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 1572|回复: 2

[C/C++] 用C++写一个OD反附加函数LD_PRELOAD劫持示例

[复制链接]
宇郑 发表于 2023-11-29 12:05 | 显示全部楼层 |阅读模式

在Linux中,我们可以使用LD_PRELOAD环境变量来预加载一些动态链接库,这样当程序运行时,就会先加载这些动态链接库。这种方式常被用来进行程序的调试或者功能扩展。

下面是一个简单的C++示例,我们将创建一个动态链接库libtest.so,然后在这个库中定义一个printf函数的替代版本。当我们运行main.cpp时,会先加载libtest.so,并使用其中的printf函数。

首先,我们创建一个名为libtest.c的文件:

```c
#include <stdio.h>

void __attribute__((constructor)) my_init(void) {
    puts("Constructor called");
}

void __attribute__((destructor)) my_fini(void) {
    puts("Destructor called");
}

int printf(const char *format, ...) {
    va_list arg;
    va_start(arg, format);
    vfprintf(stderr, format, arg);  // 打印到stderr而不是stdout
    va_end(arg);

    return 0;  // 返回0表示成功
}
```

这个文件中的my_init和my_fini函数会在动态链接库加载和卸载时自动调用。我们重写了printf函数,使其将输出打印到stderr而不是stdout。

然后,我们需要编译这个文件为动态链接库:

```bash
gcc -shared -o libtest.so libtest.c
```

接下来,我们创建一个main.cpp文件来测试我们的动态链接库:

```cpp
#include <iostream>
#include <cstdio>

int main() {
    std::cout << "Hello, World!" << std::endl;
    printf("This should be printed to stderr\n");
    return 0;
}
```

最后,我们通过设置LD_PRELOAD环境变量来运行main.cpp,使其加载我们的动态链接库:

```bash
LD_PRELOAD=./libtest.so ./a.out
```

运行结果如下:

```shell
Constructor called
Hello, World!
This should be printed to stderr
Destructor called
```

这就是一个简单的OD反附加函数LD_PRELOAD劫持示例。

评分

参与人数 3HB +4 THX +2 收起 理由
可爱的猫猫 + 1 + 1
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
longge188 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
boot 发表于 2023-11-29 17:01 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
fyh505099 发表于 2023-11-30 00:02 | 显示全部楼层

学习学习~宇哥YYDS!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表