bash -x打印日志中断 用BASH_XTRACEFD=3输出完整的bash -x日志

TL;DR

exec 3> bashx运行日志.log; BASH_XTRACEFD=3 bash -x 需要解密的脚本.sh


比较久以前, TG群里在讨论YGKKK对脚本混淆的事情.
有个群友发了一个 encoded.sh 说谁能解开 就 给一个 德鸡账户.
我上传到 github 了, 读者有兴趣可以自己玩玩.

当时我就用 bash -x 试了一下, 日志打印出来很多, 然后过一会儿就中断打印了.

打开文件看了一下, 第一层加密不难, 在解密tuic-yg脚本时遇到过.

把这一层解开, 只要把 eval ... 改为 echo ... > unpack1.sh 就行
也可以 在脚本的开头写一个"假"的 eval 
eval () {
  echo "$@" >> unpack1.sh
}

解开第1层的内容也上传Github了

到这一层的混淆/加密 我就解不开了. 卡了很久.
我把这个脚本保存了下来.

========
随着时间的流逝, 我时不时地会冒出一些想法.

比如, 修改bash.
甚至我都找到了一篇类似的操作记录 <Patch Bash5.0,让 -x 只打印而不执行,静态解混淆 Shell 脚本>
https://jiayu0x.com/2019/04/27/patch-bash5.0-for-deobfuscation/
但是我的需求和TA并不一样, 所以不能照抄修改, 我需要找到自己的修改方案. 实际动手难度很大.

比如, 设置一个虚拟机, 监控这个机器底层执行什么命令, 操作什么文件, 发出什么网络操作.
结果没有找到好方案.

======
这两天突然想起来, 再玩玩这个脚本.
是可以劫持网络访问的wget调用的

就又燃起了兴致. 
再加上现在GPT能力很强了. 我和各个GPT交流了很多. 

有一些灵感是,
用 strace 跟踪实际上做了什么操作, 比如运行了什么, 读写了什么, ...
strace -f -s 65535 -o debug.log bash encoded.sh
从日志中能看到一些中间状态, 但是看不到最终的"原始"脚本内容.

========
聊着聊着, 偶然从某个GPT得到一个灵感 (具体是哪个GPT告诉我的, 我已经记不得了)
把 FD3 定义到文件, 再把 bash -x 的xtrace输出定义到 FD3.
  * FD = File Descriptors = 文件描述符 
具体做法是这样
exec 3> bashx.log; BASH_XTRACEFD=3 bash -x encoded.sh
这样得到的日志文件 bashx.log 就是完整的 bash -x 记录了.
可以在末尾看到清晰的"原始"脚本内容

我也放到了Github


评论

The Hot3 in Last 7 Days

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks

Woiden IPv6 VPS 搭 V2ray 梯子 VLESS+Websocket+TLS 模式 免费 白嫖 全程手机操作 2022-4-19