reversing.kr replace 之write up

好似reversing除了前几个容易些,后面的都很难的。看wp都很困难。首先wp提示crtl+n查看程序所有函数,并且找到了测试函数:

补充:

GetDlgItemInt函数通过发送控件WM_GETTEXT消息来检索指定控件的文本。 该函数通过剥离文本开头的任何额外的空格,然后转换十进制数字来翻译检索到的文本。 该功能在到达文本末尾或遇到非数字字符时停止转换

而我们去运行程序发现如果我们输入数字,则出现如图的情况,而如果输入的是字母,文本框没有任何反应,因为我们要找到测试文本框的函数:

 

然而宝宝我换了n多个od都没有得到和作者同样的结果:

后来运行程序后再用ctrl+n神奇的出现了:

那我们就按照wp一步一步来:跟进目标函数,我们发现了如下目标函数:

f8一直向下执行:

我们发现程序走到这里就执行不下去了,这次我们输入0,观察此时对应的EAX=0x611605cb,于是我们分析得到由于我们输入错误所以eax到了错误的地址,所以eax=输入+0x611605cb,我们再回过头来看下最初的程序:

由再上面一张图eax为0x90查找资料0x90表示为nop指令。如果我们把eax覆盖到ascii前面两条jmp指令,那么我们的程序就可以执行到下面的指令了,所以我们输入的值为0x100401071-0x611605cb=2687109798:

这题真的很不简单!

 

posted @ 2017-08-07 11:22  S_s_s  阅读(235)  评论(0编辑  收藏  举报