wangzhe311 发表于 2012-7-29 15:28

皇室取名软件的算法分析及注册机——纪念贴

本帖最后由 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************************************************************

wfzx002 发表于 2012-7-29 15:51

占个位置

969990916 发表于 2012-7-29 15:50

很详细   不错

Chief 发表于 2012-7-29 15:46

本帖最后由 Chief 于 2012-7-29 16:12 编辑

不错,分析的蛮详细的。
期待下个作品,吾爱破解有你更精彩。

liuqiuhao 发表于 2012-7-29 15:54

shenmedongxi

wangnet 发表于 2012-7-29 16:15

感谢分享经验

wkxq 发表于 2012-7-29 16:16

如果用E语言写这个注册机怎么写?教教我

online 发表于 2012-7-29 16:40

真的感觉比较好
谢谢!

dj0390 发表于 2012-7-29 16:54

恩,不错啊 支持

feihe 发表于 2012-7-29 16:58

好文章。。留个几号先
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 皇室取名软件的算法分析及注册机——纪念贴