本帖最后由 MistHill 于 2014-1-10 09:31 编辑
发个“注册机”!
就象xjun说的:“LZ好人啊 在CM故意留了漏洞。”。楼主已经提供了Keygen!
其实,什么RSA,字符串"!@#$%^&*())))_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?",输入框“系统自动扫描您D盘里的AV数量为:”等等全都是忽悠人的!
“请您输入密码防止被CM格式化硬盘:”输入框的密码内容为:
- 第一段为明文字符串"By Danbo"的加密密文。验证时解密后有个比较,不匹配就被楼主土鳖或小米了。
- 第二段的明文由两部分组成:“阿楞哥哥最帅”+“点[验证]按钮后需要显示的信息”。前六个中文字符是必须的,解密后也有个比较;后面的提示信息是自定义的。同样加密。
- 将两段明文加密后密文的十六进制字符值转换为十进制字符串,以西文字符"?"分隔;然后以西文字符"~"连接两段密文字符串。所以,密码看起来怪怪的。
说下Keygen的步骤。
第一步
OD载入目标,F9。当然先要过第一关了,大家都知道了:输入“阿楞哥哥最帅”,点“确定”,来到第二关。
第二步
在地址00401290处下F2(OD载入目标基址为00400000时),密码随便输入一个,无所谓的。点“验证”按钮。
OD里停在断点处:
[AppleScript] 纯文本查看 复制代码 00401290 |. E8 D5030000 CALL 0040166A
请注意栈上现在大概是这样:
[AppleScript] 纯文本查看 复制代码 0012F6C8 0012F700 ; 指向第二段明文字符串的指针
0012F6CC 0012F6FC ; 指向第一段明文字符串的指针
0012F6D0 00000001 ; 1: 加密,0: 解密
...
0012F6FC 00472080 ASCII "!@#$%^&*())))_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?"
0012F700 001669D8 UNICODE "0"
调用0040166A就是关键CALL,可表示为:
[C] 纯文本查看 复制代码 char * Sub_0040166A(char** pStr2, char** pStr1, int bEncryptDecrypt);
00472080处的字符串用于误导。001669D8处的值就是AV数量了,我这里是0,你的应该不同,没关系。
算法上没仔细看,大概是用字符串"goklong soft"作为SALT,生成一个8字节的密钥,再配合几组内置数据进行加密或解密。因为块的大小为8字节,所以有PADDING。总之,老复杂!
现在我们在目标数据段靠近末尾的地方找块空地,比如:004AFF00,写入我们需要加密的两段字符串:
[AppleScript] 纯文本查看 复制代码 004AFF00 42 79 20 44 61 6E 62 6F 00 00 00 00 00 00 00 00 By Danbo........
004AFF10 B0 A2 C0 E3 B8 E7 B8 E7 D7 EE CB A7 B1 C8 C6 F0 阿楞哥哥最帅比起
004AFF20 C0 B4 BB B9 CA C7 CE D2 B8 FC CB A7 A3 A1 BF B4 来还是我更帅!看
004AFF30 B6 AE D5 E2 CC FB A3 AC C4 E3 BE CD CB A7 B4 F4 懂这帖,你就帅呆
004AFF40 C1 CB A3 A1 00 00 00 00 00 00 00 00 00 00 00 00 了!............
然后,修改栈上0012F700处的值001669D8为004AFF10;栈上0012F6FC处的值00472080为004AFF00。改好后栈上应该是这个样子:
[AppleScript] 纯文本查看 复制代码 0012F6C8 0012F700
0012F6CC 0012F6FC
0012F6D0 00000001
...
0012F6FC 004AFF00 ASCII "By Danbo"
0012F700 004AFF10 ASCII "阿楞哥哥最帅比起来还是我更帅!看懂这帖,你就帅呆了!"
F8,加密后的字符串作为密码返回在EAX,比如EAX=00165A28,在数据窗口跟随,应复制完整,直到字符串的结尾'\0':
[AppleScript] 纯文本查看 复制代码 00165A28 32 30 36 3F 38 39 3F 38 37 3F 31 33 30 3F 31 31 206?89?87?130?11
00165A38 31 3F 31 35 38 3F 32 33 31 3F 31 31 35 3F 35 38 1?158?231?115?58
00165A48 3F 35 31 3F 32 32 33 3F 31 33 30 3F 31 33 38 3F ?51?223?130?138?
00165A58 32 34 38 3F 31 30 3F 32 34 36 3F 7E 32 36 3F 32 248?10?246?~26?2
00165A68 33 3F 31 30 35 3F 38 3F 31 38 34 3F 32 34 3F 32 3?105?8?184?24?2
00165A78 30 3F 38 37 3F 31 36 36 3F 32 30 36 3F 32 3F 31 0?87?166?206?2?1
00165A88 39 37 3F 31 37 37 3F 32 31 35 3F 35 35 3F 32 34 97?177?215?55?24
00165A98 32 3F 31 37 33 3F 31 30 32 3F 32 39 3F 31 35 35 2?173?102?29?155
00165AA8 3F 31 39 34 3F 34 38 3F 38 37 3F 36 32 3F 35 33 ?194?48?87?62?53
00165AB8 3F 36 30 3F 31 30 33 3F 31 36 36 3F 37 34 3F 33 ?60?103?166?74?3
00165AC8 39 3F 35 34 3F 31 33 35 3F 38 34 3F 35 33 3F 36 9?54?135?84?53?6
00165AD8 32 3F 32 33 32 3F 35 32 3F 31 37 3F 35 39 3F 32 2?232?52?17?59?2
00165AE8 30 32 3F 33 32 3F 39 35 3F 36 35 3F 31 31 39 3F 02?32?95?65?119?
00165AF8 32 33 39 3F 37 34 3F 31 34 38 3F 31 30 31 3F 31 239?74?148?101?1
00165B08 38 36 3F 31 3F 33 3F 32 33 36 3F 39 3F 35 32 3F 86?1?3?236?9?52?
00165B18 32 34 39 3F 36 37 3F 00 249?67?.
最后的密码为:
206?89?87?130?111?158?231?115?58?51?223?130?138?248?10?246?~26?23?105?8?184?24?20?87?166?206?2?197?177?215?55?242?173?102?29?155?194?48?87?62?53?60?103?166?74?39?54?135?84?53?62?232?52?17?59?202?32?95?65?119?239?74?148?101?186?1?3?236?9?52?249?67?
PS:昨天弄昏头了,笔记抄错了地儿,再加胡言乱语。一觉醒来,清醒多了,予以改正。造成的不便,深表歉意! |