Metin2 Ether Protect

Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Vanilla

Elite
Elite
Joined
Jan 28, 2019
Messages
839
Credits
1,190
EterWizard; EterMgr, EterHook (basic) protection.

EterWizard:
Step 1-download this pack

unpack:
Code:
Expand Collapse Copy
MakePack.exe --extract Valami
(Spectra 2.1 attached as an example [modified in 1 file folder])
Code:
Expand Collapse Copy
MakePack.exe Valami.mbcrypt
(Spectra 2.1 attached below as an example [Modified in 1 file folder])
Step 2 Starter in source & packmaker EterBase -> tea.cpp -> find
Code:
Expand Collapse Copy
#define TEA_ROUND        32
you will translate it to 16, for example. then you can disassemble all 2. (You can also make mandatory circles lzo; extension [Eterpack.cpp])

Step 3 repack the expanded pack folders, and then use these and the new launcher to measure.

EterMgr:

Step 1
Find EterPack.h
Code:
Expand Collapse Copy
        bool                Get(CMappedFile & mappedFile, const char * filename, LPCVOID * data);
        //THEMIDA
        bool                Get2(CMappedFile & mappedFile, const char * filename, TEterPackIndex* index, LPCVOID * data);
rewrite
Code:
Expand Collapse Copy
        bool                Get(CMappedFile & mappedFile, const char * filename, LPCVOID * data, LPCVOID * Protect);
        //THEMIDA
        bool                Get2(CMappedFile & mappedFile, const char * filename, TEterPackIndex* index, LPCVOID * data, LPCVOID * Protect);
Step 2
You are
looking for EterPack.cpp
Code:
Expand Collapse Copy
bool CEterPack::Get(CMappedFile& out_file, const char * filename, LPCVOID * data)
rewrite:
Code:
Expand Collapse Copy
bool CEterPack::Get(CMappedFile& out_file, const char * filename, LPCVOID * data, LPCVOID * Protect)
will seek
Code:
Expand Collapse Copy
bool CEterPack::Get2(CMappedFile& out_file, const char * filename, TEterPackIndex * index, LPCVOID * data)
rewrite
Code:
Expand Collapse Copy
bool CEterPack::Get2(CMappedFile& out_file, const char * filename, TEterPackIndex * index, LPCVOID * data, LPCVOID * Protect)
all 2 functions return true
Code:
Expand Collapse Copy
*Protect = *data;
Step 3
You are
looking for EterPackCursor.cpp
Code:
Expand Collapse Copy
bool CEterPackCursor::Open(const char* filename)
in it:
Code:
Expand Collapse Copy
inlineConvertPackFilename(tmpFilename);
below
Code:
Expand Collapse Copy
LPCVOID Protect;
you will then replace it
Code:
Expand Collapse Copy
if (!m_pPack->Get(m_file, tmpFilename, &m_pData))
to:
Code:
Expand Collapse Copy
if (!m_pPack->Get(m_file, tmpFilename, &m_pData, &Protect))
Step 4
You are
looking for EterPackManager.cpp
Code:
Expand Collapse Copy
bool CEterPackManager::GetFromPack(CMappedFile & rMappedFile, const char * c_szFileName, LPCVOID * pData)
Within that
Code:
Expand Collapse Copy
if (0 == ConvertFileName(c_szFileName, strFileName))
    {
        return m_RootPack.Get(rMappedFile, strFileName.c_str(), pData);
    }
rewrite
Code:
Expand Collapse Copy
if (0 == ConvertFileName(c_szFileName, strFileName))
    {
        LPCVOID Protect;
        return m_RootPack.Get(rMappedFile, strFileName.c_str(), pData, &Protect);
    }
will seek
Code:
Expand Collapse Copy
bool r = pkFileItem->pkPack->Get2(rMappedFile, strFileName.c_str(), pkFileItem->pkInfo, pData);
rewrite
Code:
Expand Collapse Copy
bool r = pkFileItem->pkPack->Get2(rMappedFile, strFileName.c_str(), pkFileItem->pkInfo, pData, &Protect);
Above that
Code:
Expand Collapse Copy
LPCVOID Protect;
[This is the merit of this protection]

EterHook (This is a very basic protection)
launches Local.cpp in the source source.
You type
Code:
Expand Collapse Copy
HANDLE hnd2;
after
Code:
Expand Collapse Copy
void BlockEterHook()
{
B:
    WIN32_FIND_DATAA Block1, Block2;
    HANDLE block1 = FindFirstFileA("eterHookIn*", &Block1);
    HANDLE block2 = FindFirstFileA("eterHookOut*", &Block2);
    if (block1 != INVALID_HANDLE_VALUE) {
        FindClose(block1);
        CreateThread(NULL, NULL, LPTHREAD_START_ROUTINE(CloseProcess), NULL, NULL, NULL);
        MessageBoxA(NULL, "Töröld az eterHookIn&eterHookOut mappát!", "Hack észlelve!", NULL);
        exit(0);
    }
    if (block2 != INVALID_HANDLE_VALUE) {
        FindClose(block2);
        CreateThread(NULL, NULL, LPTHREAD_START_ROUTINE(CloseProcess), NULL, NULL, NULL);
        MessageBoxA(NULL, "Töröld az eterHookIn&eterHookOut mappát!", "Hack észlelve!", NULL);
        exit(0);
    }
    Sleep(100);
    goto B;
}
After that
Code:
Expand Collapse Copy
inline void vedelem01()
{
    hnd2 = CreateThread(NULL, NULL, LPTHREAD_START_ROUTINE(BlockEterHook), NULL, 0, 0);
}
look up
Code:
Expand Collapse Copy
NANOBEGIN
You're writing this
Code:
Expand Collapse Copy
vedelem01();
// an important thing missed at Dump_proto is to overwrite tea.cpp and dump server server client pages.//
 
Back
Top