【绿城杯2021】babyvxworks wp
【绿城杯2021】babyvxworks wp
前述:
其实记录这个题主要是要提醒自己三分逆向七分猜的道理,不要死扣……
打开通过字符串查找去找到main函数
发现无法生成伪代码,查看发现是花指令的原因,然后还有函数的尾部地址识别不正确的问题
其实一般来说这个地方的0XE8是作为call指令的机械码不会呗显示出来的,但是这个地方被IDA识别了就减轻了一定程序的工作量了
选择将E8填充为90或者直接nop掉,下面的也是一样的,然后再按c选择转换为指令形式
然后发现还是无法生成伪代码
原因:下图中可以看到push后还有call的调用,很明显函数没有结束但是这个地方IDA却显示为函数sub_3D9 的末尾,所以我们需要选择将这个错误的识别给去掉,在IDA菜单栏Edit里面找到functions,选择delete functions,然后其他的也是一样的
最后再再函数第一个retn处创建函数末尾,Edit-functions-set function end
然后再回到未正确识别的函数开头p创建函数开头或者直接对着代码块F5即可正确创建伪代码
如下:
看着挺头痛的其实直接追踪input即可
中间那一坨我们猜测是在对文件进行读取或其他操作
sub_34C0函数其实是在对Input进行长度的获取,即可以重命名为strlen
然后我们观察do循环中v1和v38的赋值只有loc_330不同,后面为比较
所以猜测loc_330为加密函数
进入后发现只有一个异或操作和加法操作,循环次数为长度
exp:
1 |
|
flag{helo_w0rld_W3lcome_70_R3}
【绿城杯2021】babyvxworks wp
http://example.com/2024/07/11/【绿城杯2021】babyvxworks/