reversing.kr Easy_CrackMe的逆向解题报告

本文的Easy_CrackMe.exe的下载链接为http://reversing.kr/challenge.php,本文使用的工具为OD
#分析过程
1.运行该程序,并输入一行字符串点击check,出现对话框提示Incorrect Password
在这里插入图片描述
2.在OD中搜索所有的引用字符串,并在窗口搜索"Incorrect Password
",找到之后点击进入反汇编窗口,往上翻看我们还能发现显示提示正确的消息窗口函数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.用鼠标点击数据窗口,并摁home键,我们看到IAT表,在这个表格中可以看到该程序运行时,用到的函数。该程序运行时,出现了需要输入信息的消息窗口,那么必然会存在读取输入信息的函数,经过查找我们发现了函数GetDigItemTextA,随后在显示提示正确信息的窗口函数处,往上查找,找到了该函数。
在这里插入图片描述4.在GetDigItemTextA函数处设置断点,并运行,我在消息窗口中输入的是465165,在堆栈窗口中可以看出esp+4为465164,那么byte ptr ss:[esp+5]为‘6’,我们在看下一行代码,是一个比较语句,显然[esp+5]不为61,即‘a’的话,则会弹出提示错误窗口。推出输入字符串第二个字符为a
在这里插入图片描述
在这里插入图片描述
5.假设[esp+5]为‘a’,程序压入2,“5y”,ecx之后,进入到另一个函数,在该函数中先是把某些函数参数赋值给寄存器,然后计算[edi]中字符串的长度。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
随后字符串“5y”和[edi]中前两个字符进行比较,发现不同的则停止比较(包括5y的结尾符)。如果存在不同,则会弹出错误信息。那么输入的字符串中的第三个字符和第四个字符一定要是5和y。
6.接着进入一个循环比较的函数体中,首先把字符串R3versing的地址存入到esi中,把输入的字符串中从第五个字符开始的子串的地址放入到eax中,然后依次比较这两个字符串中的字符,每次循环都比较两次,若发现不同字符,则跳出循环弹出错误提示信息。推出输入的字符串应为*a5yR3versing(第一字符还未确定)。
在这里插入图片描述
7.接下来确定第一个字符,循环介绍后有一个比较语句,[esp+4]为输入字符串的第一个字符,45即为E,于是推出第一个字符为E。那么可知,输入的字符串应为Ea5yR3versing。
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值