皇室取名软件的算法分析及注册机——纪念贴
本帖最后由 wangzhe311 于 2012-7-29 19:24 编辑皇室取名软件2.28 算法分析:
通过查找字符串,找到关键call,进入进行算法分析。如下所示:**********************************************************************************004A3F31|.E8 FE05F6FF call 皇室取名.00404534 004A3F36|.83F8 20 cmp eax,20 ; 对位数进行比较,20是十六进制表示法,转换成十进制应该是32,所以密码应该是32位的,输入32位的假码。 004A3F39|.74 07 je short 皇室取名.004A3F42;是32位就跳向验证。。。004A3F3B|.33DB xor ebx,ebx004A3F3D|.E9 E0000000 jmp 皇室取名.004A4022004A3F42|>8D45 F0 lea eax, 跳向这里。004A3F45 E8 9EFEFFFF call 皇室取名.004A3DE8004A3F4A|.8B55 F0 mov edx,004A3F4D|.A1 B48D5D00 mov eax,dword ptr ds:004A3F52|.E8 2907F6FF call 皇室取名.00404680004A3F57|.74 07 je short 皇室取名.004A3F60004A3F59|.33DB xor ebx,ebx004A3F5B|.E9 C2000000 jmp 皇室取名.004A4022004A3F60|>FF35 548B5B00 push dword ptr ds: 004A3F66|.FF35 B48D5D00 push dword ptr ds:004A3F6C|.FF35 508B5B00 push dword ptr ds: 004A3F72|.8D45 EC lea eax,004A3F75|.BA 03000000 mov edx,3004A3F7A|.E8 7506F6FF call 皇室取名.004045F4004A3F7F|.8B45 EC mov eax,004A3F82|.8D55 F8 lea edx,004A3F85|.E8 0AF0FFFF call 皇室取名.004A2F94 ;ASCII "Qingling72ea94c3047065d8CQL"初始码装入,计算出第一个码004A3F8A|.B8 01000000 mov eax,1004A3F8F|>8BD0 /mov edx,eax004A3F91|.03D2 |add edx,edx004A3F93|.8B4D FC |mov ecx,004A3F96|.8A5411 FE |mov dl,byte ptr ds:004A3F9A|.8B4D F8 |mov ecx, ;把“Qingling72ea94c3047065d8CQL”进行md5加密,得到“6ea7ccd8d0180f0977d13c8da01a1cd1”004A3F9D|.3A5401 FF |cmp dl,byte ptr ds: ;对注册码进行比较较验,拿6ea7ccd8d0180f0977d13c8da01a1cd1的前15位与注册码的奇数位进行校验。004A3FA1 74 04 je short 皇室取名.004A3FA7 ;要跳004A3FA3|.33DB |xor ebx,ebx004A3FA5|.EB 7B |jmp short 皇室取名.004A4022004A3FA7|>40 |inc eax004A3FA8|.83F8 10 |cmp eax,10 ;控制循环取数。10是十六进制数,转换成十进制数是16,从1开始,在16处跳,说明取了15位。004A3FAB|.^ 75 E2 \jnz short 皇室取名.004A3F8F004A3FAD|.8D45 E4 lea eax,004A3FB0|.50 push eax004A3FB1|.B9 10000000 mov ecx,10004A3FB6|.BA 11000000 mov edx,11004A3FBB|.8B45 F8 mov eax,004A3FBE|.E8 D107F6FF call 皇室取名.00404794 ;取“6ea7ccd8d0180f0977d13c8da01a1cd1”的后十六位“77d13c8da01a1cd1”004A3FC3|.8B45 E4 mov eax,004A3FC6|.8D55 E8 lea edx,004A3FC9|.E8 C6EFFFFF call 皇室取名.004A2F94 :对“77d13c8da01a1cd1”进行md5加密操作,得到“3015f57808ba01ce6cabd45a839b65f5”004A3FCE|.8B55 E8 mov edx,004A3FD1|.8D45 F8 lea eax,004A3FD4|.E8 3303F6FF call 皇室取名.0040430C004A3FD9|.B8 01000000 mov eax,1004A3FDE|>8BD0 /mov edx,eax004A3FE0|.03D2 |add edx,edx004A3FE2|.8B4D FC |mov ecx,004A3FE5|.8A5411 FF |mov dl,byte ptr ds:004A3FE9|.8B4D F8 |mov ecx,004A3FEC|.3A5401 0F |cmp dl,byte ptr ds:004A3FF0 74 04 je short 皇室取名.004A3FF6004A3FF2|.33DB |xor ebx,ebx004A3FF4|.EB 2C |jmp short 皇室取名.004A4022004A3FF6|>40 |inc eax004A3FF7|.83F8 10 |cmp eax,10004A3FFA|.^ 75 E2 \jnz short 皇室取名.004A3FDE ;取“3015f57808ba01ce6cabd45a839b65f5”的“6cabd45a839b65f5”(前15位)与注册码的偶数位(15位)进行比较。**********************************************************************************至此,注册码的前30位的奇数位为:6ea7ccd8d0180f0 前30位的偶数位为:6cabd45a839b65f所以注册码的前30位为:66ecaa7bcdc4d58ad803198b06f50f**********************************************************************************004A3FFC|.A1 B48D5D00 mov eax,dword ptr ds:004A4001|.8A40 03 mov al,byte ptr ds: :取eax(机器码)的第4位(因为是空3位,所以是第4位)给al004A4004|.8B55 FC mov edx,004A4007|.3A42 1E cmp al,byte ptr ds: ;取edx(假注册码)的第31位,与al直比较。。1e是十六进制,转换十进制是30。004A400A 74 04 je short 皇室取名.004A4010 004A4015|.8A40 0A mov al,byte ptr ds: ;取eax(机器码)的第11位(因为是空10位,所以是第11位)给al004A4018|.8B55 FC mov edx, 004A401B|.3A42 1F cmp al,byte ptr ds: ;取edx(假注册码)的第32位,与al直比较。。1f是十六进制,转换十进制是31。 第31位和32位为:a7软件机器码为“72ea94c3047065d8”时的注册码为“66ecaa7bcdc4d58ad803198b06f50fa7”****************************************************************************注册码的计算过程为:机器码 ;机器码Qingling+72ea94c3047065d8+CQL;把机器码前后都加上一个固定字符串。6ea7ccd8d0180f0977d13c8da01a1cd1;把得到的字符串md5加密。6ea7ccd8d0180f0 ;取前15位作为软件的注册码前30位的奇数位77d13c8da01a1cd1 ;取md5加密后数据的后16位3015f57808ba01ce6cabd45a839b65f5:对字符串进行md5加密6cabd45a839b65f ;取加密后数据的后16位的前15位作为软件注册码前30位的偶数位a ;取机器码的第4位作为注册码的第31位7 ;取机器码的第11位作为注册码的第32位得到软件的注册码:66ecaa7bcdc4d58ad803198b06f50fa7
我电脑的机器码是:f1abac3298505f48加上固定的字符串:Qinglingf1abac3298505f48CQLMd5加密后是:73a1dd43d1ecb5814c45774217bceb5b取前15位作为软件的注册码前30位的奇数位:73a1dd43d1ecb58取md5加密后数据的后16位,对字符串进行md5加密:985be925bef02ad7de44f549df4a3f2a取加密后数据的后16位的前15位作为软件注册码前30位的偶数位:de44f549df4a3f2取机器码的第4位作为注册码的第31位:b取机器码的第11位作为注册码的第32位:5得到软件的注册码:7d3ea414dfd54439dd1fe4cab35f82b5************************************************************ 占个位置 很详细 不错 本帖最后由 Chief 于 2012-7-29 16:12 编辑
不错,分析的蛮详细的。
期待下个作品,吾爱破解有你更精彩。 shenmedongxi 感谢分享经验 如果用E语言写这个注册机怎么写?教教我 真的感觉比较好
谢谢! 恩,不错啊 支持 好文章。。留个几号先