• 首页
  • 安全新闻
  • 技术文档
  • 安全工具
  • 自由论坛
  • 原创天空
  • 关于我们
  • 标题:星际争霸1.08版免CD分析
  • 作者:龍之冰点
  • 来自:本站原创
  • 更新:2006年10月18日
  •  
  •   一个执著的星际迷玩不了星际的心情谁能了解?
  •  星际CD验证
  •   光盘验证。
  •   祭出宝刀OD!
  •   载入StarCraft.exe,停在004CFA90。
  •   Alt+E打开可执行模块,主程序StarCraf上Crtl+N打开名称,看一下,都有些什么?
  •   名称位于 StarCraf|地址=004ED000|类型=输入|名称=ADVAPI32.RegOpenKeyExA
  •   读注册表干什么?嘿嘿,对头,先跟了再说。
  •   来到77DA761B > 8BFF mov edi, edi
  •   恩,就F2断在这里好了。
  •   F9运行,哈,断下来了。
  •   看一下EDX:0012FC8C,到这个堆栈地址看一下:SOFTWARE\Blizzard Entertainment\Starcraft
  •   继续不断F9,看看都读了哪些值,注意寄存器变化EDI:004FBD58(StarCD)!
  •   CD?这个值有什么用呢?如果没用为什么要读入?联想一下,该不会是光盘路径吧?
  •   执行到返回,返回,返回。。。。
  •   00468C05 |. 68 58BD4F00 push 004FBD58 ; ASCII "StarCD"   //看到了吧
      00468C0A |. 68 A4564F00 push 004F56A4 ; ASCII "Starcraft"
      00468C0F |. E8 32500600 call <jmp.&Storm.#422>
      00468C14 |. 85C0 test eax, eax                //到了这里
      00468C16 74 62 je short 00468C7A
      //省略若干代码
  •   00468C86 |. 52 push edx ; /Buffer
      00468C87 |. 68 04010000 push 104 ; |BufSize = 104 (260.)
      00468C8C |. FF15 ECD14E00 call dword ptr [<&KERNEL32.Get>; \GetLogicalDriveStringsA
  •   // 判断系统中存在哪些逻辑驱动器字母,要光驱验证了嘛!
  •   //省略若干代码
      00468CDC |> 56 |push esi ; /RootPathName
      00468CDD |. FF15 08D24E00 |call dword ptr [<&KERNEL32.Ge>; \GetDriveTypeA    
  •   // 判断一个磁盘驱动器的类型
      00468CE3 |. 83F8 05 |cmp eax, 5     
      00468CE6 |. 75 76 |jnz short 00468D5E 
  •   //省略若干代码
      00468D69 |> 85C0 test eax, eax
      00468D6B |. A3 CC5E6500 mov dword ptr [655ECC], eax
      00468D70 75 21 jnz short 00468D93                 //关键跳在这里啦!

  •   中间一些不重要的代码删除了以后,整个过程就清楚了,程序首先读入注册表值HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\Starcraft[StarCD],然后遍历所有磁盘,最后读取光盘的内容,默认为光盘路径为StarCD的值(我的为E:\Hhacker Team\download\starcraft),哈,只要把StarCD的值改为星际安装目录就可以了。
  •   那直接修改00468D70这里可不可以呢?可以运行,但程序在读取光盘文件(压根就没光盘)时会出错,所以不可以哦!
  •   又可以玩星际了,闪人先!
湘ICP备05004920号 Copyright 2005 Hhacker Team. All Rights Reserved