type
status
date
slug
summary
tags
category
icon
password
📝思路(一)手撸
首先是先要找到main函数,在start函数里面我们可以找到main函数
之后我们先简单识别一些函数
很显然v7是我们输入的数
我们在v7这里下个硬件断点,跟踪它的变化
第一个我们发现这里是一些SSE指令和ymm寄存器,应该是对中间32个字节进行了处理
然后就是这里比对,由此我们可以确定对中间32个字节进行了加密
然后我们看见这里有个条件跳转,但是我们动调了以后发现,根本没有对r12寄存器的操作,由此我们可以判断r12被隐藏了
这里也有个异常处理,怀疑是被Dwarf 隐藏代码了
我们把调试信息dump下来
然后通过Dwarf expression恢复寄存器
脚本:
📝思路(二)分析器
如果DW_CFA_val_expression恢复寄存器所运行的表达式非常长,手工恢复显然是不太可能
因此这里借鉴一下riChar师傅出DSCTF2022-nothing题的思路
riChar师傅的原文:ISC-Nothing出题思路及WriteUp
将代码复制下来为analysis.rs
准备好Cargo.toml文件
之后在终端
📝思路(三)终极手撸
当将我们输入的数压入栈的时候,在前面我们知道r12是我们存储前8个字节,然后我们在栈上直接下内存断点
然后我们就直接到了虚拟机的地方
之后根据我们的分析,可以得出四个寄存器的操作
之后就是写个脚本解决
有关复现上的问题,欢迎您在底部评论区留言,一起交流~
- Author:5m10v3
- URL:https://5m10v3.top/article/ba09e6ae-558d-43dd-bf2a-3e563859eff2
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts