主要观点总结
本文记录了一道逆向题目的解题过程,涉及加壳脱壳、代码分析、算法识别以及使用Z3求解器破解运算逻辑的过程。
关键观点总结
关键观点1: 文章介绍
文章主要描述了一道逆向题目的解题过程,作者通过重新整理思路并使用Z3求解器解决了该问题。
关键观点2: 题目分析
题目中存在一个使用UPX加壳的程序,作者通过更新UPX工具成功脱壳。分析代码发现程序使用MD5算法对比输入的四个部分。
关键观点3: 解题过程
作者在分析四部分运算逻辑时发现第二、三、四部分可通过Z3求解器进行爆破得到正确输入。第一部分经过调整函数起始地址和堆栈平衡后,发现只是简单的减法运算。
关键观点4: 结果应用
作者使用Z3求解器解决脚本,并指出在定义约束变量时需要注意的问题。最后分别输入四个部分得到flag输出。
文章预览
点击蓝字 关注我们 日期: 2024-07-15 作者: Mr-hello 介绍: 迷失在知识的海洋里。 0x00 前言 实在不知道文章写什么内容了,刚好之前的某天,有人在群里发了一道逆向题目,当时就做了出来,然后简单整理了一下思路,刚好趁着这次写公众号文章,再重新整理一下当时的做题思路吧。 0x01 题目分析 拿到题目之后,使用反编译工具打开,发现只能看到部分 LOAD 段代码,怀疑是使用了加壳技术,后面使用 winhex 打开后确认是使用 UPX 进行了加壳。 后面还由于自己电脑上的 upx 版本过于老旧,脱壳失败了,刚好更新了一下自己的工具,使用最新版成功脱壳。 然后再次使用反编译工具,打开分析。 可以从关键代码处发现,该程序会对 flag 分为四个部分进行校验,最后进行了一次比较,先对比较算法进行分析,可得出结论是 MD5 算法。 梳理一下该题目逻
………………………………