首先看下题目
ELF文件
直接载入64位IDA
进入main函数
F5查看C代码
分析main函数代码:
__int64 __fastcall main(__int64 a1,char**a2,char**a3)//main函数有三个参数
{
char v4;// [rsp+Bh] [rbp-5h] //定义一个char型变量v4
signedint i;// [rsp+Ch] [rbp-4h] //int i;
puts("[WxyVM 0.0.1]");//输出字符串"[WxyVM 0.0.1]"
puts("input your flag:");//输出字符串"input your flag:"
scanf("%s",&byte_604B80);//获取用户输入一个字符串保存在地址604B80的位置
v4 =1;//v4 = 1;
sub_4005B6();//调用sub_4005B6这个函数
if( strlen(&byte_604B80)!=24)//如果获取的字符串长度不等于24
v4 =0;//令v4 = 0;
for( i =0; i <=23;++i )//开始for

这篇博客介绍了南邮CTF中一道逆向题目的解题过程,主要涉及WxyVM。作者首先分析了main函数的C代码,通过对比字符串与预设值来判断是否正确。然后详细解释了sub_4005B6函数的逻辑,并提出了两种解题思路:一是通过对运算进行逆运算恢复原始字符串;二是直接对所有情况进行逆运算。给出了部分解题脚本和参考资料链接。
最低0.47元/天 解锁文章
536

被折叠的 条评论
为什么被折叠?



