美文网首页
逆向工程——自行分析2

逆向工程——自行分析2

作者: 柳清檀 | 来源:发表于2019-05-20 14:11 被阅读0次

    题目说明

    说明:该题目由CrackMee.exe一个文件组成。该文件是一个简单的小程序,请大家逆向该程序,找到正确的字符串,输入到程序后即为成功。

    解题步骤

    image.png

    首先看到这一部分的分支跳转

    cmp eax,14
    jbe short CrackMee.00401428

    说明输入的字符串长度大于14,也就是十进制的20时会导致Wrong Length :(

    我们注意到左下dump数据窗口的信息,发现00402000开始的数据正在被改变写入


    image.png

    推测这个是需要输入的key:thi5_1s_K3y


    image.png
    然后我们继续分析,验证这个想法:注意到程序中的“hey! You did it…”部分
    image.png

    可以看到,第一遍顺序执行这个部分的时候因为执行了jmp short CrackMee.004013A2,并没有执行“hey!you did it…”相关的内容,后面出现一个循环:


    image.png
    这里设置两个断点让程序的内容更加显然,程序先给ss:[esp+3c]赋值5,每次循环加一,一直到ss:[esp+3c]大于8的时候跳出循环。
    image.png
    逐步执行的时候发现,这里是在给密码处赋值。

    下面关注一下是怎么判别输入密码是否正确的:


    image.png

    我们关注这一小部分:

    首先逆推分析,为了不执行0040148c 处的语句,避免输出“NO No No…”,我们看到上面跳转的部分:

    cmp dword ptr ss:[esp+38],0
    jnz short CrackMee.0040148c

    只有在ss:[esp+38]等于0的时候才会输出“Key Right!”。向上回溯,发现00401461处对ss:[esp+38]进行赋值1。我们应该跳过这一句,那么就需要执行0040145F处的跳转语句,也就需要0040145d处edx与eax等值。

    再正着分析:


    image.png

    发现这个部分利用循环在判断输入是否与设置的密码相同,如果本次循环比较时相同则跳转到0040146B进行下一次循环,如果不同则说明输入的密码错误,执行00401461将ss:[esp+38]赋值1,后续导致输出NO No No…

    结论:

    需要的key是thi5_1s_K3y


    image.png

    相关文章

      网友评论

          本文标题:逆向工程——自行分析2

          本文链接:https://www.haomeiwen.com/subject/sylkzqtx.html