AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 468109
Accepted
Sergiy Kolodyazhnyy
Sergiy Kolodyazhnyy
Asked: 2018-09-11 12:45:53 +0800 CST2018-09-11 12:45:53 +0800 CST 2018-09-11 12:45:53 +0800 CST

如何拦截程序创建的临时文件?[复制]

  • 772
这个问题在这里已经有了答案:
创建后如何直接访问临时文件? (4 个回答)
4年前关闭。

TL;DR:我知道一个程序创建然后删除/tmp. 我怎样才能拦截他们进行检查?

上下文:

.jar有一个我不信任的特定文件;出于某种原因,它的源代码包含一个 ftm 方法并具有建立连接的能力,这从输出中与网络相关的系统调用中可以明显看出strace(当我指的是连接时,我不是指 unix 域套接字,它是AF_INET6)。我使用 Wireshark 进行了检查,发现在使用过程中没有传出 TCP 或 UDP 连接。

但是,我仍然不太相信它。从我的输出中strace我看到它正在创建临时文件,/tmp然后将它们删除。有没有办法拦截这些文件来检查它们的内容?

security files
  • 2 2 个回答
  • 1129 Views

2 个回答

  • Voted
  1. Best Answer
    Rui F Ribeiro
    2018-09-11T13:15:26+08:002018-09-11T13:15:26+08:00

    更好的是,如果您想对恶意 Java 二进制文件进行逆向工程,而不是尝试拦截文件,请反编译可疑.jar文件。

    为此,您可以使用CFR - 另一个 java 反编译器

    CFR 将反编译现代 Java 功能 - 包括 Java 9 的大部分内容,但完全用 Java 6 编写,因此可以在任何地方工作

    要使用,只需运行特定版本的 jar,使用要反编译的类名(作为类文件的路径,或作为类路径上的完全限定类名)。(--help 列出参数)。

    或者,要反编译整个 jar,只需提供 jar 路径,如果你想发出文件(你可能会这样做!)添加 --outputdir /tmp/putithere

    不乏替代品,但 CFR 项目似乎维护得很好,有 2018 年的更新。

    免责声明:自 2005 年以来,我没有对 Java/JAR 二进制文件进行逆向工程

    • 6
  2. Sergiy Kolodyazhnyy
    2018-09-11T14:01:02+08:002018-09-11T14:01:02+08:00

    注意:在重复问题上发布了改进的解决方案

    从阅读如何在创建后直接访问临时文件?我有了使用inotify和创建硬链接到文件本身的想法。这当然是一种竞争条件,因为在创建硬链接之前可以取消链接文件,但是我确实设法恢复了应用程序正在创建的临时文件中的数据。这是一个短管道放在终端选项卡 A 中,终端选项卡 B 运行实际命令:

    inotifywait -m -r /tmp/hsperfdata_xie/ 2>&1 | 
    while IFS= read -r line; do 
    
        awk '$2 == "CREATE"{system("ln /tmp/hsperfdata_xie/"$3" /tmp/BACKUP")}' <<< "$line"
        echo "$line" # unnecessary, only if you want to know what's inotify is writing
    done
    

    3个缺点是:

    • 比赛条件(上面解释过)
    • awk我很快就为一个特定的文件拼凑起来;但是解析输出并将路径名与文件名连接起来的更通用和灵活的awk命令将不得不花费一些时间来解析行,将所有内容传递给变量,然后传递给,这可能会回到上一个要点 - 到时间解析完成,没有要链接的文件。inotifywatch$1$3sprintf()system()
    • 需要两个终端选项卡,尽管可以将整个管道置于后台。更聪明的方法是拥有一个带有分叉子进程的完整 Python 脚本并实际使用inotifyPython 模块(这可能是我将来会做的事情)。

    至于有问题的文件,它显示为某种形式的二进制数据,带有循环 0...sun.rt._sync_Inflations和0...sun.rt._sync_Deflations字符串(可能与Java 多线程有关)。但就这个问题而言,这是无关紧要的——我们已经有了。我唯一想要的是获取文件本身。

    • 1

相关问题

  • 如何提前知道 .zip 内部是否有父目录

  • 如果某人被授予 root 访问权限,是否可以劫持服务器作为人质?[关闭]

  • 如何找到特定的文件类型并将它们 tar?

  • du/df 和 ls 报告不同的磁盘使用情况

  • 是否有实现 RFC 5848“签名系统日志消息”的系统日志守护程序?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve