首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >区分Linux系统调用序列中execve()的解释器

区分Linux系统调用序列中execve()的解释器
EN

Stack Overflow用户
提问于 2018-08-28 15:29:28
回答 1查看 69关注 0票数 0

如何从strace syscall日志中知道execve()在Debian Linux上执行文件时使用的是哪个解释器?

例如,如何知道一个文件是作为bash脚本(#!/bin/bash)执行的,还是作为python脚本(#!/usr/bin/env python)执行的,或者是一个纯ELF文件?

假设我们没有正确的文件后缀,所以我们不能简单地从execve()的参数中判断出来。

如果无法从strace syscall日志中获取,还可以使用哪些其他方法?

EN

回答 1

Stack Overflow用户

发布于 2018-08-28 17:18:23

使用file实现这一点:

代码语言:javascript
运行
复制
$ echo '#!/bin/python' > 1
$ file 1
1: a /bin/python script, ASCII text executable

$ echo '#!/bin/sh' > 2
$ file 2
2: POSIX shell script, ASCII text executable

$ echo '#!/usr/bin/env python' > 3
$ file 3
3: Python script, ASCII text executable

$ echo 'int main() { return 0; } ' | gcc -xc -o4 -
$ file 4
4: ELF 64-bit LSB pie executable x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d2f65ad2fe7b73bd5f4acc9fc9da25f748fe9915, not stripped
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52052357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档