zoukankan      html  css  js  c++  java
  • 逆向破解之160个CrackMe —— 029

    CrackMe —— 029

    160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序

    CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。

    CrackMe简称CM。
    程序下载地址:点击我

    来源 <-点击查看

    编号 作者 保护方式
    029 Cosh Name/Serial

    工具 

    x32dbg

    开始破解之旅

    ON.1

    爆破方式

    首先使用x32dbg打开029号程序,搜索字符串

    这里我们看到了正确信息提示符和错误信息提示符

    进入正确信息提示符地址004015E0

    0040159A | 8B45 F0                  | mov eax,dword ptr ss:[ebp-10]           |
    0040159D | 8A18                     | mov bl,byte ptr ds:[eax]                |
    0040159F | 32D9                     | xor bl,cl                               |
    004015A1 | 8818                     | mov byte ptr ds:[eax],bl                |
    004015A3 | 41                       | inc ecx                                 |
    004015A4 | 40                       | inc eax                                 |
    004015A5 | 8038 00                  | cmp byte ptr ds:[eax],0                 |
    004015A8 | 75 F3                    | jne cosh.3.40159D                       |
    004015AA | 8B45 E4                  | mov eax,dword ptr ss:[ebp-1C]           |
    004015AD | 8B55 F0                  | mov edx,dword ptr ss:[ebp-10]           | edx:EntryPoint
    004015B0 | 33C9                     | xor ecx,ecx                             |
    004015B2 | 8A18                     | mov bl,byte ptr ds:[eax]                |
    004015B4 | 8A0A                     | mov cl,byte ptr ds:[edx]                | edx:EntryPoint
    004015B6 | 3AD9                     | cmp bl,cl                               |
    004015B8 | 75 09                    | jne cosh.3.4015C3                       | 此处验证跳转
    004015BA | 40                       | inc eax                                 |
    004015BB | 42                       | inc edx                                 | edx:EntryPoint
    004015BC | 8038 00                  | cmp byte ptr ds:[eax],0                 |
    004015BF | 75 EF                    | jne cosh.3.4015B0                       | 此处验证跳转
    004015C1 | EB 16                    | jmp cosh.3.4015D9                       |
    004015C3 | 6A 00                    | push 0                                  |
    004015C5 | 68 6C304000              | push cosh.3.40306C                      | 40306C:"ERROR"
    004015CA | 68 40304000              | push cosh.3.403040                      | 403040:"One of the Details you entered was wrong"
    004015CF | 8B4D E0                  | mov ecx,dword ptr ss:[ebp-20]           |
    004015D2 | E8 BB020000              | call <JMP.&Ordinal#4224>                |
    004015D7 | EB 14                    | jmp cosh.3.4015ED                       |
    004015D9 | 6A 00                    | push 0                                  |
    004015DB | 68 34304000              | push cosh.3.403034                      | 403034:"YOU DID IT"
    004015E0 | 68 20304000              | push cosh.3.403020                      | 403020:"Well done,Cracker"
    004015E5 | 8B4D E0                  | mov ecx,dword ptr ss:[ebp-20]           |
    004015E8 | E8 A5020000              | call <JMP.&Ordinal#4224>                |
    004015ED | 6A 64                    | push 64                                 |
    004015EF | FF15 00204000            | call dword ptr ds:[<&Sleep>]            |

    我们看到在地址004015BF处经过JMP来到了正确提示符处,这里就是验证注册码正确性的地方,在继续向上翻看,也有验证地址为004015B8,此处验证失败也会跳转到错误的地方

    我们将这两个地址修改为NOP,F9运行输入任意字符点击check按钮

    bingo ~ 破解成功

    在上方还会有多处验证判断,判断输入格式是否正确

    ON.2

    追码方式

    我们看到00401580地址到00401587地址为Name计算的方法

    使用Python代码为

    name = 'lonenysky'
    value = []
    for i, key in enumerate(name):
        value.append(chr(ord(key) ^ (i + 1)))
    print('name is %s' % ''.join(value))
    value = []
    for i, key in enumerate(name):
        value.append(chr(ord(key) ^ (i + 0x0a)))
    print('serial is %s' % ''.join(value))

     bingo ~ 破解成功

    在追码的过程中当我们不知道cl的值时可以观看下方的窗口推测出来

  • 相关阅读:
    luogu 5311 [Ynoi2011]D1T3 动态点分治+树状数组
    LOJ #6145. 「2017 山东三轮集训 Day7」Easy 点分树+线段树
    BZOJ 2117: [2010国家集训队]Crash的旅游计划 动态点分治+二分
    BZOJ 1095: [ZJOI2007]Hide 捉迷藏 动态点分治+堆
    BZOJ 3924: [Zjoi2015]幻想乡战略游戏 动态点分治
    luogu 3241 [HNOI2015]开店 动态点分治+二分+vector
    luogu 2993 [FJOI2014]最短路径树问题 Dijkstra+点分治
    BZOJ 3697: 采药人的路径 点分治
    启动elasticsearch报错的几种原因及解决方法
    SpringBoot与MybatisPlus3.X整合示例(十六)
  • 原文地址:https://www.cnblogs.com/lonenysky/p/11489282.html
Copyright © 2011-2022 走看看