N年前的LiveForSpeed破解历程(3)

本文完成于2007年,现在把它搬到这里,留作纪念。

另外,现在的LiveForSpeed用户注册体系已有很大改变,本文可能已经失去参考价值。

1.程序本身包含一串 注册表键名称的密文0x00567eb8:Software\Microsoft\Windows\CurrentVersion
2.用程序本身保存的一个TEA key 0x00592f60解注册表名称密文,得到明文Software\Microsoft\Windows\CurrentVersion
3.程序首先对明文进行处理,尝试读取Software\Microsoft\Windows NT\CurrentVersion下的ProductId,如果失败就读取 Software\Microsoft\Windows\CurrentVersion下的ProductId
4.得到ProductId存放在0x0070b260,用TEA key 0x00592f60加密ProductId所在的512位数据,把它存放在原处0x0070b260
本机ProductId明文:
0070B260  35 35 36 36 31 2D 30 30 35 2D 30 38 30 39 33 36  55661-005-080936
0070B270  32 2D 32 32 38 38 37 00 30 00 39 00 33 00 36 00  2-22887.0.9.3.6.
0070B280  32 00 2D 00 32 00 32 00 38 00 38 00 37 00 00 00  2.-.2.2.8.8.7...
0070B290  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
本机ProductId密文:
0070B260  57 17 01 AF 4C 0F A4 CB C9 63 0E 37 19 8D 26 77  W  疞 に蒫 7 ?w
0070B270  6C A1 B3 CD FB 81 72 CD B7 88 A3 AC DA E8 BF C3  l〕望乺头垼�杩
0070B280  F0 6D 2C 77 A9 1D 7E 4C 27 60 C3 C6 7F 7C 9B 72  餸,w?~L'`闷�|況
0070B290  4B 2D E4 2A BE E8 A1 E5 4B 2D E4 2A BE E8 A1 E5  K-?捐″K-?捐″
5.读取f3.xxx内512位数据,存放在0x0012fd28
6.把ProductId的密文重新解密到0x0012fcc8
0012FCC8  35 35 36 36 31 2D 30 30 35 2D 30 38 30 39 33 36  55661-005-080936
0012FCD8  32 2D 32 32 38 38 37 00 30 00 39 00 33 00 36 00  2-22887.0.9.3.6.
0012FCE8  32 00 2D 00 32 00 32 00 38 00 38 00 37 00 00 00  2.-.2.2.8.8.7...
0012FCF8  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
7.把0x0012fcc8的内容的前6字节内容复制到0x0012fcb0
0012FCA8                          35 35 36 36 31 2D 30 30          55661-00
0012FCB8  35 2D 30 38 30 39 33 36 32 2D 32 32 38 38 37 00  5-0809362-22887.
0012FCC8  35 35 36 36 31 2D 30 30 35 2D 30 38 30 39 33 36  55661-005-080936
0012FCD8  32 2D 32 32 38 38 37 00 30 00 39 00 33 00 36 00  2-22887.0.9.3.6.
0012FCE8  32 00 2D 00 32 00 32 00 38 00 38 00 37 00 00 00  2.-.2.2.8.8.7...
0012FCF8  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
8.调用cpuid获取cpu数据,填充0x0012fca0
0012FC98                          01 00 00 00 65 6E 74 69          ...enti
0012FCA8  C0 0F 01 00 FF FB 8B 07                          ? .鮂F麐 55
9.第3个字 or 20h,第4个字的第2个字节 and 0FDh
0012FC98                          01 00 00 00 65 6E 74 69          ...enti
0012FCA8  E0 0F 01 00 FF F9 8B 07                          ? .鮂F鶍 55
10.获取productid,把productid的前半部分(6个字的内容)前移6个字
获取cpuid,作些少变换(即第9步)
cpuid第4个字(最后一个字)异或productid(被前移部分,下同)第3个字(TEA key字1)
cpuid第3个字异或productid第4个字
cpuid第2个字异或productid第5个字再异或productid第1个字
cpuid第1个字异或productid第6个字再异或productid第2个字
从上到下把结果组合成一个TEA key,存到0x0012fd18
11.用步骤10得到的key解0x0012fd28的512位数据,每64位数据解一次,共解8次,每次把key最前字*5+1,再解密
把解密后的数据放回原处0x0012fd28
12.用明0x0012fd28字异或0x0012fd2c以及后面的数据,得出最终f3.xxx明文
0012FD28  75 00 BF D9 4C 46 53 00 84 95 16 00 00 00 00 00  u.抠LFS.剷 .....
0012FD38  72 72 72 72 00 00 00 00 00 00 00 00 00 00 00 00  rrrr............
0012FD48  00 00 00 00 00 00 00 00 31 31 31 31 31 31 00 00  ........111111..
0012FD58  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
其中rrrr就是用户名,111111就是密码

一些疑惑,f3.xxx除用户名密码外,其他的数据有什么作用????如何生成????

其他细节
在本人机器上的f3.xxx key是
0012FD18  CA D4 BB 3F D0 36 32 36 62 76 70 6D 08 15 07 30  试??26bvpm   0
8次解密后,最后一次的key
0012FD18  02 D5 AE EE D0 36 32 36 62 76 70 6D 08 15 07 30   债钚626bvpm   0

至此,f3.xxx的明文已得到,f2.xxx的明文用类似方法也能获得,于是。。。。。。

posted on 2011-09-13 23:58  rickerliang  阅读(1081)  评论(0编辑  收藏  举报

导航