逆向工程 Easy_CrackMe wp

附上题目下载链接Easy_CrackMe

题目提示:字符串!字符串!字符串!字符串!

我们先运行一下程序看看会怎样
这里写图片描述

用PEiD查壳工具看一下先(ρ_・).。
这里写图片描述

发现无壳 VC++6.0的语言 win32

想到提示信息是字符串 emm 那还是拖到IDA32位里面看看吧

一般有窗口的题目都是找Dialog的函数位置(划重点

这里写图片描述

于是我们找到这里

点击F5进入伪代码区域
这里写图片描述

进入箭头部分的区域

这里写图片描述

这里是比较关键的地方了( *⊙~⊙)

我们可以看到String v3 v4四个地址是相连的

int __cdecl sub_401080(HWND hDlg)
{
CHAR String; // [esp+4h] [ebp-64h]
char v3; // [esp+5h] [ebp-63h]
char v4; // [esp+6h] [ebp-62h]
char v5; // [esp+8h] [ebp-60h]
__int16 v6; // [esp+65h] [ebp-3h]
char v7; // [esp+67h] [ebp-1h]
String = 0;
memset(&v3, 0, 0x60u);
v6 = 0;
v7 = 0;
GetDlgItemTextA(hDlg, 1000, &String, 100); #此处是检查输入的
if ( v3 != 97 || strncmp(&v4, a5y, 2u) || strcmp(&v5, aR3versing) || String != 69 )
 return MessageBoxA(hDlg, aIncorrectPassw, Caption, 0x10u); #若符条件则进入 alncorrectPassw
MessageBoxA(hDlg, Text, Caption, 0x40u);  #若不符合条件则进入Text
return EndDialog(hDlg, 0);
}

我们可以进入if中的alncorrectPassw看一下

这里写图片描述

发现得出的是‘Incorrect Password’的字符串
说明错误

我们再进入if语句后的Text看一下
这里写图片描述

发现得出的是‘Congratulation !!’
说明不能进入if函数 也就是说明if中所有条件都要相反

我们回到伪代码区域 再次观察if中的条件 取相反就是
第一个条件是v3=97 我们点到97的位置 按键盘r键【将它转换成字符型】得到’a’
第二个条件是比较 我们点进去查看 得到第个是5y
这里写图片描述
第三个条件也是比较 我们同样进去 得到第三个是R3versing
这里写图片描述
第四个条件与第一条件做法相同 得到是‘E’

最后一步
我们观察它的顺序
这里写图片描述
可以知道顺序是 String->v3->v4->v5【v4是62 v5是60 说明v4(5y)占用了两个
把它再连起来
就得到了答案Ea5yR3versing
这里写图片描述
另一种简便方法就是用IDA打开程序后 先Shift+F12找到所有字符串
然后直接发现Congratulation 再点进去分析
这里写图片描述

吼的 今天也是元气满满的一天 ´・∀・)乂(・∀・`

猜你喜欢

转载自blog.csdn.net/Retrovich/article/details/82560404