如果大家玩过传奇,那么肯定知道外挂巴,尤其是脱机外挂比较好使。
近日,本人研究了利用传神私服代理,风雪验证器和热血传神脱机外挂得使用,如果用户需要挂机得话,必须自己一步一步来,很是麻烦。
因此,我编写了这个自动登陆的外挂。
主要用倒的是FindwindowEx和SendMessage,很简单的。
说一下功能:
1。自动运行,自动登陆
2。自动添加私服
3。自动执行脚本,解决小退招宝宝问题
4。解决异常窗口弹出
目前对云龙传奇有效。
不说了,贴代码。
/.h
class CMirDlg : public CDialog
{
// Construction
public:
CMirDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{
{AFX_DATA(CMirDlg)
enum { IDD = IDD_MIR_DIALOG };
CString m_PSW;
CString m_User;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{
{AFX_VIRTUAL(CMirDlg)
public:
virtual BOOL DestroyWindow();
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{
{AFX_MSG(CMirDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButtonBegin();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnButtonSet();
afx_msg void OnButton1();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
BOOL CheckAllProgram();
void RegisterProgram();
void ActionScript();
BOOL SearchStr(LPCSTR lpBuf,int count,LPCSTR lpstr);
BOOL GetScriptState();
void ReadInfoFromRegister();
void WriteInfoToRegister();
BOOL FindHotPanel();
BOOL IsLoginOK();
BOOL FindRichEdit();
BOOL FindHotCSpnLogin();
BOOL FindHotCSDlg();
BOOL Find51pywgButton();
BOOL Find51pywgDlg();
BOOL FindWgButton();
BOOL FindWgComBox();
BOOL FindWgDlg();
BOOL CreateWgDlg(LPCSTR lpAppPath,PROCESS_INFORMATION *pi);
HWND hWgDlg; //˽·þ¾ä±ú
HWND hWgComBox; //˽·þÏÂÀÁбí
HWND hWgButton; //˽·þ¿ªÊ¼°´Å¥
HWND h51pywg; //51pywg¾ä±ú
HWND h51pywgButton; //51pywg°´Å¥¾ä±ú
HWND hHotWnd; //ÈÈѪ¾ä±ú
HWND hHotLoadButton; //ÈÈѪµÇ½¾ä±ú
HWND hHotEdit; //ÈÈѪ±à¼¾ä±ú
HWND hHotUserEdit;
HWND hHotPSWEdit;
HWND hHotPanel;
PROCESS_INFORMATION mypi[3];
int nState;
int iReLoadTimeOut;
DWORD ulTimeOut;
char apppath[256];
BOOL bLoadState;
CString strwgPath;
CString str51PywgPath;
CString strHotcsPath;
CString strwgName;
UINT uPort;
BOOL bAutoRun;
BOOL bAutoLoad;
BOOL bAutoSave;
BYTE byteIPAddress[4];
int iWinState;
};
*********************cpp*********************************
// mirDlg.cpp : implementation file
//
#include "stdafx.h"
#include "mir.h"
#include "mirDlg.h"
#include "DialogSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/
// CAboutDlg dialog used for App About
static BOOL CALLBACK enumProc(HWND hwnd, LPARAM lParam);
char szSection[]="ÍÑ»úÍâ¹ÒÖ®×Ô¶¯°æ";
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{
{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{
{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{
{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{
{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{
{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{
{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/
// CMirDlg dialog
CMirDlg::CMirDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMirDlg::IDD, pParent)
{
//{
{AFX_DATA_INIT(CMirDlg)
m_PSW = _T("");
m_User = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMirDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{
{AFX_DATA_MAP(CMirDlg)
DDX_Text(pDX, IDC_EDIT_PSW, m_PSW);
DDV_MaxChars(pDX, m_PSW, 20);
DDX_Text(pDX, IDC_EDIT_USER, m_User);
DDV_MaxChars(pDX, m_User, 20);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMirDlg, CDialog)
//{
{AFX_MSG_MAP(CMirDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_BEGIN, OnButtonBegin)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/
// CMirDlg message handlers
BOOL CMirDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu