• N年前的LiveForSpeed破解历程(1)


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

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

    得到noword在pediy上发表的文章的指点,终于搞明白lfs用户限制原理以及突破方法(注意,这是0.5P版的
    体系)
    首先解析下lfs如何限制用户,lfs通过3个文件对用户验证,3个文件为f1.xxx,f2.xxx,f3.xxx
    其中f1.xxx是通过用户pc机上的有关数据,以及用户注册时的用户名和密码,通过lfs官网没有公开的算法
    生成
    f2.xxx是一堆key的密文,f3.xxx也是
    lfs运行时,通过pc机上的有关数据,以及f1.xxx内的相关数据,算出对应f2.xxx内某一段数据的解密密钥(简单
    的异或运算),用这个密钥解f2.xxx内这段数据(用TEA算法),得到另外一个key,记为datakey
    lfs再用datakey解自己需要的数据,例如赛车模型数据及地图数据(这个解密算法,我们不必要知道,因为只要datakey正确,就能解出正确的数据),如果成
    功,就通过验证了
    f3.xxx也类似
    好了,如何突破限制
    要突破限制,我们需要正确的datakey,datakey是可以得到的,到官网买个license,然后回来OllyIce跟跟程序,
    还有一种方法,就是使用现有的Keygen破解后再跟跟程序
    得到datakey,我们还要把他还原成密文的形式(TEA是对称加密算法),才能形成f2.xxx文件
    如何生成f2.xxx,这个就是关键了^_^
    如果继续按上述反向推导的方法,我们是不能得出有效的手段去突破lfs的限制的,如果不信,好我们试试
    要生成f2.xxx,必须要得到加密datakey的TEA密钥
    TEA密钥是从pc机上的有关数据,以及f1.xxx内的相关数据算出,也就是说,TEA密钥根f1.xxx有关,但
    f1.xxx的生成算法我们是不知道的-_-!!!
    没有f1.xxx就没有TEA密钥,怎么办??
    反向推导是解决问题的一种方法,但如果解决问题所使用的步骤涉及到一些不可逆算法或者一些步骤被有意
    隐藏了,就会使得反向推导方法变得无能为力-_-!!!
    那么,这时,我们先总结一下我们现在拿到了什么,还需要什么
    我们拿到了
    f2.xxx的明文datakey
    加解密f2.xxx的算法TEA算法
    我们需要
    加解密f2.xxx的TEA密钥,这样才能真正还原f2.xxx
    好,到此为止,先想想:
    1.加密f2.xxx的TEA密钥是从pc机上的有关数据,以及f1.xxx内的相关数据算出
    2.而且TEA算法是称算法,用同一个密钥加解密
    3.f1.xxx的内容会影响f2.xxx的TEA密钥,但是TEA密钥无论是什么,都不影响f2.xxx的加解密。任意一个TEA密钥来加
    密f2.xxx,我们总能够用这个密钥解出f2.xxx。于是,f1.xxx的内容是什么已经变得不重要了,例如
    f1.xxx的内容是abc,我们就用这个f1.xxx算出的TEA密钥加密f2.xxx(f2.xxx我们已经拿到了,见前文),
    把这个f1.xxx和f2.xxx放到程序相应目录就可以突破限制了。
    你看看,凡是用noword的keygen破解的lfs,f1.xxx的内容都是Crack by noword,这说明了f1.xxx的内容可
    以是任意内容
    最后,用任意的f1.xxx虽然可以突破lfs的限制,但仍然无法通过lfs官网的联机验证(Online racing),这
    是为什么,因为我们并没有在官网注册。
    还有,在官网注册了license,但还是登陆不了srfc的私服,这是因为官网的f1.xxx并不是srfc生成f1.xxx
    ,也就是说,我们加密f2.xxx的TEA密钥与srfc加密f2.xxx的TEA密钥不同。联机验证,lfs程序会读出f3.xxx的内容上送到服务器
    ,上送报文我抓来看了一下,只有用户名,密码应该就是用TEA密钥加密的一堆乱码。既然加密是用lfs官网
    的TEA密钥,用srfc的TEA密钥自然就解不出来,所以登陆失败。

    本文完全围绕P版展开,现在lfs已经是Y版了,加密体系至少改过一次-_-!!!
    20071226 lyker

  • 相关阅读:
    C#根据当前时间获取,本周,本月,本季度等时间段
    C#List Dictionary 的初始化方式
    C#List Dictionary 的初始化方式
    DevExpress PivotControl关联ChartControl
    DevExpress PivotControl关联ChartControl
    c#中怎样判断一个程序是否正在运行?
    c#中怎样判断一个程序是否正在运行?
    多线程(五)实战使用并发工具类CyclicBarrier实现并发测试
    多线程(五)实战使用并发工具类CyclicBarrier实现并发测试
    MongoDB查询大于某个时间,小于某个时间,在某一段时间范围
  • 原文地址:https://www.cnblogs.com/rickerliang/p/2175303.html
Copyright © 2020-2023  润新知