RedAngel丶 发表于 2014-11-5 19:36

【吾爱破解2014CrackMe大赛】【第十四组】

1. 从od的"窗口"中可以看到编辑框跟一些静态控件的ID
   利用一些窗口查找工具,发现编辑框的正上方有个空白标签(ID: 0x3EA).
2. 查找所有命令.push 编辑框/标签ID, 并下断
    013823D3|.68 EA030000   push 0x3EA

3. 从段首开始分析.该段进行一个简单的运算:(因笔记太乱,贴出算法源码,看得更清楚)
    1. 注册码长度大于等于19
    2. 必须有一个"-"作为分割符
    3.分割后的最后一个数组长度必须为17位

BYTE a = (code << 4) + code ;
      a += a;
      //1
      BYTE c1 = 0xBD - (a + 0x1A + 0x0D + 'a');// 最后+的是数组,这里只用"abcdefghg"
//2
      BYTE c2 = 0xE2 - (a + 0x3A + 0x0C + 'b');
      //3
      BYTE c3 = 0xCB - (a + 0x2D + 0x2D + 'c');
      //4.这位不用写出来
      BYTE c4 = 0xF8 - (a + 0x21 + 0x1C + 'd');
      //5.
      BYTE c5 = 0xB3 - (a + 0x11 + 0x0F + 'e');
      //6
      BYTE c6 = 0xC9 - (a + 0x14 + 0x0D + 'f');
      //7
      BYTE c7 = 0xB9 - (a + 8 + 0x3E + 'g');
      //8
      BYTE c8;
      c8 = 0xA6 - (a + 0x25 +1 +'h');
      CString ret = TEXT("abcdefgh-");

4. 再次运行下,断在:
    01382465   .68 EA030000   push 0x3EA
   与第3步一样,从段首分析
01382511   .807D E4 BD    cmp byte ptr ss:,0xBD          ;结果与BD比较
   01382515      75 13         jnz short CrackMe.0138252A
   01382517   .807D E6 CB    cmp byte ptr ss:,0xCB          ;结果与BD比较
0138251B      75 0D         jnz short CrackMe.0138252A
   0138251D   .807D E9 C9    cmp byte ptr ss:,0xC9          ;结果与C9比较
01382551   > \803D D5643801>cmp byte ptr ds:,0xE2
01382558      75 13         jnz short CrackMe.0138256D
   0138255A   .803D D8643801>cmp byte ptr ds:,0xB3
01382561      75 0A         jnz short CrackMe.0138256D
   01382563   .803D D9643801>cmp byte ptr ds:,0xC9

这里只有6个位置的比较,照着拟出来,是可以让标题显示"已解锁",但标签显示的是知码
从上面猜测出成功字符串是"解锁成功".

   


   keygen:




Kido 发表于 2014-11-6 20:51

最终得分:136
评委评价:有效

bess 发表于 2014-11-12 20:39

先怎么解决掉反调试?帮忙解决一下

aqwly 发表于 2015-3-10 14:48

学习了,看看

339389619 发表于 2015-3-13 18:02

初学者前来涉猎知识

方大爷 发表于 2015-3-14 09:36

看不懂呀。。

hewap 发表于 2016-4-16 19:23

来这里学习了

lhpmain 发表于 2016-4-18 12:56

多谢楼主在关键点做的注译,这样很方便我们这些新手学习!另外怎有二个【第十四组】?

lzkzhongfang 发表于 2016-4-18 18:42

活到老,学到老

84583728 发表于 2016-4-20 22:46

页: [1] 2
查看完整版本: 【吾爱破解2014CrackMe大赛】【第十四组】