【吾爱破解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:
最终得分:136
评委评价:有效 先怎么解决掉反调试?帮忙解决一下 学习了,看看 初学者前来涉猎知识 看不懂呀。。 来这里学习了 多谢楼主在关键点做的注译,这样很方便我们这些新手学习!另外怎有二个【第十四组】? 活到老,学到老
页:
[1]
2