美文网首页
Crackme-02

Crackme-02

作者: 2mpossible | 来源:发表于2017-12-04 00:46 被阅读0次

    先运行程序,一个普通的注册码验证程序,直接上od调试

    可以看到有You Get Wrong 和 You Get It 明确显示错误与正确的语句,查看到具体地址

    这里我们可以看到有je语句会跳过输出正确的语句从而打印You Get Wrong,于是猜测会有判断语句,需要对汇编有一点了解即可知道这里的判断语句是test si,si 这个语句,想要验证自己的想法只需在寄存器中改变esi的值就可以看到输出了正确语句

    既然有判断语句,那么前面应该会有语句用输入的Serial与正确的Serial作比较

    同时上面不远处有个vbaStrCmp函数也算是验证了我们的想法,在这个函数下个断点,然后单步步入函数观察

    在这里可以看到我们输入的Serial:123123 与 正确的Serial值:AKA-292642

    至此,我们Crack的任务可以说只完成了一半,虽然我们能得到正确的Serial,但是我们并不知道它是怎么产生的,所以我们继续调试这个程序,观察到这里

    这里对我们输入的字符串首先取了长度,然后用这个长度×0x17cfb,最后加上字符串第一位的ascii码生成一个中间值

    这里的逻辑就是利用上一步生成的中间值不断去模0xa然后进行一系列操作,直到为0终止,最终每次循环中eax的最后一个数字所组成的字符串加上AKA-便是正确的Serial,如某次循环中eax的值为0x39 那么便取9出来

    以下便是针对程序算法逻辑生成Serial的一个python脚本

    name = "123"
    Serial = ""
    a = len(name) * 0x17cfb
    a += ord(name[0:1])
    while True:
        if a / 10.0 == 0:   #循环结束
            break
        edx = a % 10   #取除0xa的余数
        a = a / 10    #取除0xa的商
        edx += 0x30
        Serial += hex(edx)[-1:]
    Serial = "AKA-"+Serial[::-1]
    
    print Serial
    

    大功告成!

    相关文章

      网友评论

          本文标题:Crackme-02

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