一日Angr日志清除

极客

本文目录导读:

一日Angr日志清除

  1. 早晨的灾难现场:日志文件怎么比代码还肥?
  2. 中午动手:三招定乾坤,给Angr“清清肠”
  3. 午后反思:日志虽烦,但别全扔!
  4. 傍晚总结:今日“轻装”,明日“远行”

一日Angr日志清除实战:我的二进制分析环境“瘦身”全记录

哎呦,说起Angr这个神器,真的是让人又爱又恨啊!爱的是它能帮我自动化解题,恨的是——这家伙跑起来,日志文件简直像青春期小伙子的饭量一样,疯长!今天早上我一开终端,好家伙,磁盘空间告急,差点没把我刚分析到一半的Crypto题目给弄丢了,得嘞,啥也别说了,一日Angr日志清除行动,立刻安排!

早晨的灾难现场:日志文件怎么比代码还肥?

各位看官,你们是不知道啊,我昨天那个符号执行脚本就跑了不到两小时,结果呢?~/.angr/log 目录下堆了整整 3GB 的日志!我当时就懵了,心里那个火啊,“这Angr是把我的SSD当记事本用呢?” 那些 .log 文件里,啥都有——每一步的路径探索啦,内存状态变化啦,甚至连求解器的每一次叹气(好吧,是SAT/UNSAT结果)都记下来了,说实话,对于日常CTF解题或者漏洞分析,90%的日志都是冗余的噪音,咱要的是结果,不是过程流水账啊!

中午动手:三招定乾坤,给Angr“清清肠”

光抱怨没用,咱得撸起袖子干!我琢磨了一下,清理Angr日志得从“源头治理”和“存量清理”两手抓。第一招,修改日志级别,我直接在脚本最顶端加了句:

import logging
logging.getLogger('angr').setLevel(logging.ERROR)

嚯!这一下子世界清净了,只显示报错信息,那些INFO级别的碎碎念统统闭嘴第二招,清理旧文件,对于已经生成的庞然大物,直接删掉3天前的日志:

find ~/.angr -name "*.log" -mtime +3 -delete

看着那些旧文件被“咔嚓”掉,心里那叫一个舒坦!第三招,也是最关键的——重定向输出,有些日志是Angr内部clemory或者SimulationManager自己打印的,管不住嘴,我干脆把标准输出也一并清了:

import os, sys
sys.stderr = open(os.devnull, 'w')  # 让报错也安静点

哈哈,这招虽然有点“掩耳盗铃”,但对于临时任务来说,效果立竿见影,磁盘IO都少了,执行速度感觉都快了0.5秒呢!说实话,Angr日志清除一日实践,重点不在“删”,在于“防”。

午后反思:日志虽烦,但别全扔!

等等,先别急着把日志全干掉啊兄弟!我下午分析一个UAF漏洞时,因为把日志级别调成了ERROR,结果忘了看具体状态解算过程,差点漏掉关键的内存约束条件,哎呀,这事儿闹得!所以我建议,如果是做正规的学术研究或者写论文用,日志级别设在INFO就够了,并且配上logging.FileHandler把日志写到特定文件里,别跟stdout掺和。

我理想的方案是这样滴:生产环境跑批量任务时,每日定时任务+日志清除调试单个样本时,开启DEBUG但输出到独立文件,利用Angr的context变量或者自定义插件,你甚至可以给日志加上时间戳标签,这样查找问题就像按图索骥,方便极了。

傍晚总结:轻装”,明日“远行”

经过这一整天的折腾,我算是悟了。Angr日志清除不是让你一刀切,而是要学会“精细化管理”,就像咱电脑里的C盘,你要是啥都不装,那还怎么干活?但你要是不定期清一清垃圾,迟早得卡死。

好啦,同志们,趁着夜色,我最后又跑了一遍日志轮转脚本,现在看一眼磁盘占用,舒服!如果你也正被Angr日志搞得头大,不妨试试我上面的几招工具是死的,人是活的,咱要的是分析出最终答案,而不是给硬盘添堵对吧?哈哈!

最后啰嗦一句:清理完日志,记得重启一下分析环境啊,要不然那些旧的文件句柄可能还会偷偷写内容呢!好啦,收工!明天又是跟二进制搏斗的一天,冲鸭!

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]