好友
阅读权限20
听众
最后登录1970-1-1
|
1. 从od的"窗口"中可以看到编辑框跟一些静态控件的ID
利用一些窗口查找工具,发现编辑框的正上方有个空白标签(ID: 0x3EA).
2. 查找所有命令.push 编辑框/标签ID, 并下断
013823D3 |. 68 EA030000 push 0x3EA
3. 从段首开始分析.该段进行一个简单的运算:(因笔记太乱,贴出算法源码,看得更清楚)
1. 注册码长度大于等于19
2. 必须有一个"-"作为分割符
3.分割后的最后一个数组长度必须为17位
BYTE a = (code[len-1] << 4) + code[len -1] ;
a += a;
//1
BYTE c1 = 0xBD - (a + 0x1A + 0x0D + 'a'); // 最后+的是数组[0],这里只用"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:[ebp-0x1C],0xBD ; 结果与BD比较
01382515 75 13 jnz short CrackMe.0138252A
01382517 . 807D E6 CB cmp byte ptr ss:[ebp-0x1A],0xCB ; 结果[i+2]与BD比较
0138251B 75 0D jnz short CrackMe.0138252A
0138251D . 807D E9 C9 cmp byte ptr ss:[ebp-0x17],0xC9 ; 结果[i+6]与C9比较
01382551 > \803D D5643801>cmp byte ptr ds:[0x13864D5],0xE2
01382558 75 13 jnz short CrackMe.0138256D
0138255A . 803D D8643801>cmp byte ptr ds:[0x13864D8],0xB3
01382561 75 0A jnz short CrackMe.0138256D
01382563 . 803D D9643801>cmp byte ptr ds:[0x13864D9],0xC9
这里只有6个位置的比较,照着拟出来,是可以让标题显示"已解锁",但标签显示的是知码
从上面猜测出成功字符串是"解锁成功".
keygen:
keygen.rar
(1.31 MB, 下载次数: 40)
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|