【分享】网络游戏加速的实现

最近玩新奇迹世界,发现里面加速挂满天飞(满天飞好啊,说明大家都在用,也就说明很公平,呵呵)。
从朋友那里拿来一个加速挂,发现里面有很多的木马病毒 无语了。

我主要逆向了加速挂的部分,其他的没仔细看,

然后自己照着写了一个加速挂,用着相当的放心啊,哈哈,

步骤:

1、通过窗口名和类名找到游戏窗口句柄,然后得到窗口的线程id,最后用SetWindowsHookEx设置键盘钩子。

HOOK_API BOOL SetHookWindowEx( IN LPCTSTR lpClassName, IN LPCTSTR lpWindowName )
{
    if( NULL == lpClassName && NULL == lpWindowName )
    return FALSE;

  HWND hWnd = ::FindWindow( lpClassName, lpWindowName );
  if( NULL != hWnd )
    return SetHookWindow( GetWindowThreadProcessId( hWnd, NULL ) );

  return FALSE;
}

HOOK_API BOOL SetHookWindow( IN DWORD dwThreadID )
{
  HHOOK hHook = SetWindowsHookEx( WH_KEYBOARD, KeyboardProc, AfxGetInstanceHandle(), dwThreadID );
  if( NULL != hHook )
  {
    g_hHook = hHook;
    return TRUE;
  }

  return FALSE;
}


2、在钩子响应函数里调用SetTimer来替换定时器。

LRESULT CALLBACK KeyboardProc( int nCode,
  WPARAM wParam,
  LPARAM lParam
  )
{
  CallNextHookEx( NULL, nCode, wParam, lParam );

  if( g_bIsHook )
  {
    if( g_bIsSetTimer ) 
    {
      if( wParam == VK_F5 ) // F5加移动速度
        g_dwCurMoveSpeed += STEP_OF_MOVESPEED;
      if( wParam == VK_F6 && g_dwCurMoveSpeed > 0 ) // F6减移动速度
        g_dwCurMoveSpeed -= STEP_OF_MOVESPEED;

      if( wParam == VK_F9 ) // F9加攻击速度
        g_dwCurAttackSpeed += STEP_OF_ATTACKSPEED;
      if( wParam == VK_F10 && g_dwCurAttackSpeed > 0 ) // F10减攻击速度
        g_dwCurAttackSpeed -= STEP_OF_ATTACKSPEED;     
    }
  }
  else
  {
    g_bIsHook = TRUE;
    g_dwCurMoveSpeed = DEFAULT_OF_MOVESPEED;
    g_dwCurAttackSpeed = DEFAULT_OF_ATTACKSPEED;
    SetTimer( 0, 0, 1000, (TIMERPROC)TimerProc );
    g_bIsSetTimer = TRUE;
  }

  return 0;
}

3、在定时器回调函数里设置加速
VOID CALLBACK TimerProc(          HWND hwnd,
  UINT uMsg,
  UINT_PTR idEvent,
  DWORD dwTime
  )
{
  // 修改游戏中移动速度和攻击速度的变量,这里需要根据具体的游戏来设置。

  PDWORD pTemp = (PDWORD)0x86A204;
  pTemp = (PDWORD)( *pTemp + 0x0f34 );

  DWORD dwTemp = *pTemp;

  pTemp = (PDWORD)( dwTemp + 0x428 );
  *pTemp = g_dwCurMoveSpeed;

  pTemp = (PDWORD)( dwTemp + 0x444 );
  *pTemp = g_dwCurAttackSpeed;
}


效果图:
点击图片以查看大图名称:	1.png查看次数:	57文件大小:	164.3 KBID:	67002
点击图片以查看大图名称:	Screen(20120504-1827)-000[1线].jpg查看次数:	5文件大小:	283.1 KBID:	67057

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值