返回列表 发帖

[历史] 圣域服自动补丁

圣域服务器双开无限视野补丁,每次更新运行下即可.

1.将ROAutoPatch.zip用zip解压复制至RO安装目录
2.运行RO客户端更新
3.关闭RO客户端
4.运行ROAutoPatch.exe,点对话框相应按钮修改.

软件MD5校验和: 248b942517ff7abcced7d1d6adbc95fb
下载地址:http://xploit.vicp.net/RoAutoPatch.zip

// ROAutoPatch.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "ROAutoPatch.h"
#include "ROAutoPatchDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CROAutoPatchApp

BEGIN_MESSAGE_MAP(CROAutoPatchApp, CWinApp)
        //{{AFX_MSG_MAP(CROAutoPatchApp)
                // NOTE - the ClassWizard will add and remove mapping macros here.
                //    DO NOT EDIT what you see in these blocks of generated code!
        //}}AFX_MSG
        ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CROAutoPatchApp construction

CROAutoPatchApp::CROAutoPatchApp()
{
        // TODO: add construction code here,
        // Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CROAutoPatchApp object

CROAutoPatchApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CROAutoPatchApp initialization

BOOL CROAutoPatchApp::InitInstance()
{
        AfxEnableControlContainer();

        // Standard initialization
        // If you are not using these features and wish to reduce the size
        //  of your final executable, you should remove from the following
        //  the specific initialization routines you do not need.

#ifdef _AFXDLL
        Enable3dControls();                        // Call this when using MFC in a shared DLL
#else
        Enable3dControlsStatic();        // Call this when linking to MFC statically
#endif

        CROAutoPatchDlg dlg;
        m_pMainWnd = &dlg;
        int nResponse = dlg.DoModal();
        if (nResponse == IDOK)
        {
                // TODO: Place code here to handle when the dialog is
                //  dismissed with OK
        }
        else if (nResponse == IDCANCEL)
        {
                // TODO: Place code here to handle when the dialog is
                //  dismissed with Cancel
        }

        // Since the dialog has been closed, return FALSE so that we exit the
        //  application, rather than start the application's message pump.
        return FALSE;
}

DWORD Patch(const void * olddata, const void * newdata, DWORD size)
{
        DWORD flags=0xFFFFFFFF;
        HANDLE hFile=CreateFile("Ragexe.sp2",
                GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING,
                FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, 0);
        if(!hFile || hFile==INVALID_HANDLE_VALUE)
        {
//                MessageBox("CreateFile()",NULL,MB_OK);
                return 0L;
        }

        HANDLE hFileMap=CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, 0);
        if(!hFileMap || hFileMap==INVALID_HANDLE_VALUE)
        {
//                MessageBox("CreateFileMapping()",NULL,MB_OK);
                CloseHandle (hFile);
                return 0L;
        }

        PBYTE lpMem=(PBYTE)MapViewOfFile(hFileMap, FILE_MAP_READ|FILE_MAP_WRITE, 0, 0, 0);
        if(!hFileMap)
        {
//                MessageBox("CreateFileMapping()",NULL,MB_OK);
                CloseHandle (hFileMap);
                CloseHandle (hFile);
                return 0L;
        }

        DWORD filesize2;
        DWORD filesize1=GetFileSize(hFile,&filesize2);

        PBYTE p=lpMem;

        for(;(DWORD)p-(DWORD)lpMem+size<=filesize1;p++)
        {
                if(!memcmp(p,olddata,size))
                {
                        memcpy(p,newdata,size);
                        flags=(DWORD)p-(DWORD)lpMem;
                        break;
                }
        }

        UnmapViewOfFile (lpMem);
        CloseHandle (hFileMap);
        CloseHandle (hFile);
        return flags;
}

[ 本帖最后由 keith 于 2007-2-19 17:49 编辑 ]

小心是好事情,自己开卡巴查.
源代码放上去了,怕木马的自己下代码回去编译吧.呵呵.

TOP

原帖由 梦断金陵 于 2007-2-19 17:05 发表
既然觉得不放心,且没有判断真伪的信心,可以不去下的。争吵毫无意义。
我相信楼主的东西是好的,只是缺少斑竹等有说服力的代表来验证而已。


我也是这么看的,不相信或者自己没有能力检验就别去下嘛,他们凭什么骂人是吧.
终于有人能说点公道话

TOP

原帖由 Dona 于 2007-2-19 17:23 发表
LZ我支持你.注册的晚又怎样.这个应该不是小站应该有的宽容心与素质吧.
注册得晚也未必代表RO龄就比你少,就算少又怎样了呢.某人拿这个判断别人的价值也未免太让人寒心了.
我相信小站刻薄的人还是少的,因为长久 ...


感谢感谢.
交个朋友,以后互相帮助哈.
可以M我ID,就是Anonymous,呵呵.

TOP

返回列表