• 标 题:次数限制?169字节轻松搞定 (4千字)
  • 作 者:bluearc
  • 时 间:2002-10-14 12:19:18
  • 链 接:http://bbs.pediy.com

次数限制?169字节轻松搞定
            为了一个很狡猾的学习软件(驾驶员相关),浪费了不少时间,我和我的老机都很累了。。。今天想轻松一下,顺便找回一点自信,故从网上拖了一个《斗地主4.8  build 462》下来。。。
软件名称:斗地主4.8  build 462
          保护主式:30次使用限制和每次只能玩7局的限制
          得力工具:Regmon v4.12
          DIY目的:解除30次使用限制(至于只能玩7局的限制,一方面我还有其它事得做,另一方面,我想每个象我一样的Cracker都很忙。。。好象玩这种游戏永远也不玩不到7局的。。。呵呵。。。为自己找了个好理由^Q^)
          郑重声明:写这篇文章的目的只是为了和所有爱好crack的朋友交流,希望能取到抛砖引玉的效果。如果周军先生也看到的话,我要说的是,假使此文侵犯了你的利益,说明你的软件这方面很弱,确需改进!
        哪哪哪哪哪哪哪哪哪哪哪哪哪哪Begin!哪哪哪哪哪哪哪哪哪哪哪哪哪哪
        一、首先用winice跟踪,得知该软件的注册码验证是:输入注册码时在注册表里写入一个格式化的regcode,当下次启动该软件时调用RegQueryvalueexA来读出并对比注册码。。。不过我们今次的目的只是为了解除30次使用限制,别的就不多说,考虑到作者会骂我。
        二、用peid0.8分析主程序文件ddz.exe,显视UPX 0.89.6 - 1.02 / 1.05 - 1.22 -> Markus & Lazlo。。。用trw2000脱壳后能正常运行,但是点击其菜单按钮时就导致自动关机,又用winice及trw2000试拦了很久。。。终不得要领,不知其关机动作是调用了什么鬼东东,希望哪位高手能指点一二。。。
        三、既然脱壳后找不到其关机的代码,也不想让老机再受折磨,只好放弃,另想别的办法。
        四、打开regmon,准备好后运行斗地主。。。在捕获的事件列表上看到了关于斗地主4.8的内容:
783    Ddz    OpenKey    HKLM\SOFTWARE\Microsoft\VBA\Monitors    NOTFOUND        
784    Ddz    OpenKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS    hKey: 0xCAA307F0    
785    Ddz    QueryValueEx    HKLM\SoftWare\DDZ\Infomation\ProductId    SUCCESS    "DDZ040020020378"    
786    Ddz    CloseKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS        
787    Ddz    OpenKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS    hKey: 0xCAA307F0    
788    Ddz    QueryValueEx    HKLM\SoftWare\DDZ\Infomation\LicenseNumber    SUCCESS    "4"------------------------>注意这里!指明程序已经运行了4次。。。
789    Ddz    CloseKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS        
790    Ddz    OpenKey    HKCU\Control Panel\International    SUCCESS    hKey: 0xCAA20060    
791    Ddz    OpenKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS    hKey: 0xCAA307F0    
792    Ddz    QueryValueEx    HKLM\SoftWare\DDZ\Infomation\SetupDir    SUCCESS    "G:\DDZ"    
793    Ddz    CloseKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS        
794    Ddz    OpenKey    HKLM\Software\Microsoft\Windows\CurrentVersion    SUCCESS    hKey: 0xCAA307F0    
795    Ddz    QueryValueEx    HKLM\Software\Microsoft\Windows\CurrentVersion\ProductName    SUCCESS    "Microsoft Windows 98"    
796    Ddz    CloseKey    HKLM\Software\Microsoft\Windows\CurrentVersion    SUCCESS        
797    Ddz    OpenKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS    hKey: 0xCAA307F0    
798    Ddz    QueryValueEx    HKLM\SoftWare\DDZ\Infomation\Version    SUCCESS    "4.8 Build 462"    
799    Ddz    CloseKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS        
800    Ddz    OpenKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS    hKey: 0xCAA307F0    
801    Ddz    QueryValueEx    HKLM\SoftWare\DDZ\Infomation\CPUCode    SUCCESS    "4622870839"    
802    Ddz    CloseKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS        
803    Ddz    OpenKey    HKLM\Software\Microsoft\Windows\CurrentVersion    SUCCESS    hKey: 0xCAA307F0    
804    Ddz    QueryValueEx    HKLM\Software\Microsoft\Windows\CurrentVersion\ProgrameID    SUCCESS    "4"    ------------------------>注意这里!这里好指明了程序已经运行了4次。。。
805    Ddz    CloseKey    HKLM\Software\Microsoft\Windows\CurrentVersion    SUCCESS        
806    Ddz    OpenKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS    hKey: 0xCAA307F0    
807    Ddz    QueryValueEx    HKLM\SoftWare\DDZ\Infomation\regcode    SUCCESS    " "    
808    Ddz    CloseKey    HKLM\SoftWare\DDZ\Infomation    SUCCESS        
809    Ddz    QueryValueEx    0xC1903230\ASYCFILT    NOTFOUND        

          五、大家看到regmon的强大之处了吧,一下子让我们得到了这么多珍贵的信息,不过,对于此次的目的,只要注意“788    Ddz    QueryValueEx    HKLM\SoftWare\DDZ\Infomation\LicenseNumber    SUCCESS    "4"”和“804    Ddz    QueryValueEx    HKLM\Software\Microsoft\Windows\CurrentVersion\ProgrameID    SUCCESS    "4"”这么两条就足够了,程序在每次启动时都要检查这两条注册表信息,如果>=30,就弹出注册对话框,点击取消或输入错误的注册码都会让你无福消受。。。。
        六、现在,我们可以修改注册表了,将以上两项的值改为0(一定要两项哦!只改一项的话是没用的,不信你试试^Q^),再次运行程序,点击“关于”,你看到了什么?---------已用次数:1次。。。。呵呵,就这么简单!
        七、用记事本写出“延时器”如下:
REGEDIT4

[HKEY_LOCAL_MACHINE\Software\DDZ\Infomation]

"LicenseNumber"="0"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion]

"programeID"="0"
另存为*。reg后,我们的目的达到了!因为保存后的reg文件只有169字节,故引出了文章的题目。。。。
        八、总结,虽然采用了很“绿色”的方法解决了程序的次数限制,但美中不足的是当程序运行次数达到30次时都要运行一次我们写出的reg文件,怪只怪在下学艺不精。。。摄写此文的原因,一是希望启发象我这样的初学者,在pj时不要在一棵树上吊死,多一点灵感你就成功了一半!二是希望能得到高手们的赐教,象前面说的一样取到抛砖引玉的效果。
        九、再见!

作者:飞龙狗狗                    2002.10.8                  希望保持文章的完整性