当前位置: 移动技术网 > 网络运营>安全>加解密 > 易语言写的硬件挷定程序爆破(破解一个简单外挂)

易语言写的硬件挷定程序爆破(破解一个简单外挂)

2018年04月01日  | 移动技术网网络运营  | 我要评论

【文章标题】: 易语言写的硬件挷定程序爆破
【文章作者】: v仔
【作者邮箱】: vxf155@sina.com
【软件名称】: 魔力宝贝外挂
【软件大小】: 1.49MB
【加壳方式】: 无
【保护方式】: 机器挷定
【编写语言】: 易语言
【使用工具】: OD
【操作平台】: Windows2003
【软件介绍】: 一个游戏的简单外挂,作者写得比较简单。
【作者声明】: 只是感兴趣,没有其他目的。本人菜鸟一个,请各位多多指教!
--------------------------------------------------------------------------------
【详细过程】
  算起来在看雪也是一菜鸟。这是本人的第一篇破文,爆破的大家就不要见笑。
  先向朋友了解一下外挂的行为:
  1、程序就得一个文件,未注册机器不能运行,启动时窗口一闪而过。
  2、运行前要向作者发送机器码,然后作者把能在该机运行的程序发过来。
  3、程序是易语言写的。
  根据这些情况,估计程序是把机器码硬编码到程序里的。
  虽然知道是用易语言写的,但还是要用PEID看看是否有壳。显示Microsoft Visual C++ 6.0,无壳。(第一次非常走运)
  再看看区段,没有发现.ecode,是用新版易语言写的(这个上网查了才知道,OUT了!)。
  在网上搜索了一会,知道大概的处理方法。
  硬件挷定的就找字符串\.PhysicalDrive0
  OD载入,CPU窗口任意位置右键 -> 超级字符串参考 -> 查找ASCII -> \.PhysicalDrive0
  双击后定位到
 
  0046F6AA  |.  53            PUSH    EBX                              ; /hTemplateFile => NULL
  0046F6AB  |.  53            PUSH    EBX                              ; |Attributes => 0
  0046F6AC  |.  6A 03         PUSH    3                                ; |Mode = OPEN_EXISTING
  0046F6AE  |.  53            PUSH    EBX                              ; |pSecurity => NULL
  0046F6AF  |.  6A 03         PUSH    3                                ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
  0046F6B1  |.  68 000000C0   PUSH    C0000000                         ; |Access = GENERIC_READ|GENERIC_WRITE
  0046F6B6  |.  68 28C45500   PUSH    复件_热?0055C428                 ; |\.PhysicalDrive0
  0046F6BB  |.  FF15 E0B25100 CALL    NEAR DWORD PTR DS:[<&KERNEL32.Cr>; CreateFileA
 
  返回、返回、返回,返回到调用这个函数的地方,发现和网上找到的方法差不多。
  但没能找到看雪上有一个贴子说的哪个通用切入点。
  不管了,返回得了。到了动态库的领空,那么就Ctrl+F9一直执行。回到当前程序后发现EAX已经得到了机器码。
  那就返回调用的地方。
  一般取完机器码后都要对比的,那么下面的函数就有可能是对比的了。一个一个看看。
 
  004182BF  |.  50            |PUSH    EAX
  004182C0  |.  E8 A5D10000   |CALL    复件_热?0042546A                   ;  这个函数取得机器码
  004182C5  |.  8945 E8       |MOV     [LOCAL.6],EAX                      ;  保存返回值
  004182C8  |.  8B5D EC       |MOV     EBX,[LOCAL.5]
  004182CB  |.  85DB          |TEST    EBX,EBX
  004182CD  |.  74 09         |JE      SHORT 复件_热?004182D8
  004182CF  |.  53            |PUSH    EBX
  004182D0  |.  E8 BC780200   |CALL    复件_热?0043FB91                   ;  可疑函数
  004182D5  |.  83C4 04       |ADD     ESP,4
  004182D8  |>  8B5D F0       |MOV     EBX,[LOCAL.4]
  004182DB  |.  E8 759AFEFF   |CALL    复件_热?00401D55                   ;  可疑函数
  004182E0  |.  53            |PUSH    EBX
  004182E1  |.  51            |PUSH    ECX
  004182E2  |.  8B45 F8       |MOV     EAX,[LOCAL.2]
  004182E5  |.  48            |DEC     EAX
  004182E6  |.  79 0D         |JNS     SHORT 复件_热?004182F5
  004182E8  |.  68 04000000   |PUSH    4
  004182ED  |.  E8 AB780200   |CALL    复件_热?0043FB9D
  004182F2  |.  83C4 04       |ADD     ESP,4
  004182F5  |>  59            |POP     ECX
  004182F6  |.  5B            |POP     EBX
  004182F7  |.  3BC1          |CMP     EAX,ECX
  004182F9  |.  7C 0D         |JL      SHORT 复件_热?00418308
  004182FB  |.  68 01000000   |PUSH    1
  00418300  |.  E8 98780200   |CALL    复件_热?0043FB9D
 
  此处略去几行
  最后找到这个,后来才知道如果自己仔细耐心点就不用一个个地找的。
 
  00418319  |.  E8 ED8CFEFF   |CALL    复件_热?0040100B                   ;  比较函数
  0041831E  |.  83C4 08 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网