Jump to content

Koray

Active Member
  • Posts

    384
  • Joined

  • Last visited

  • Days Won

    58
  • Feedback

    0%

Posts posted by Koray

  1. 20 hours ago, Galet said:

    It's interesting to take a look in the client, like we know that the fact of seing people on the big map (M / ,) is used with a define "WJ_SHOW_PARTY_ON_MINIMAP" while another one is not used, maybe a future update "WJ_SHOW_NPC_QUEST_NAME".

    By the way, is anyone know what is the meaning of "WJ" it's before the name of a lot of new systems as for now

    It's probably used meaning of developer's name/nickname, just like "GAIDEN" in leaked sources.

    • Love 2
    • Initialization;
    #include "LauncherCheck.h"
    #pragma comment(lib, "LauncherCheck.lib")
    using namespace LauncherCheck;

     

    • Encryption example (You should use from your launcher process);
    	if (false == CLauncherCheck::ProcessEncryption("YOUR_SUPER_SECRET_KEY")) {
    		printf("Encryption fail! Error code: %d", CLauncherCheck::GetErrorCode());
    		return; /* Error, exit or what do you want. */
    	}

     

    • Decryption example (You should use from game client process);
    	if (false == CLauncherCheck::ProcessDecryption("YOUR_SUPER_SECRET_KEY")) {
    		printf("Decryption fail! Error code: %d", CLauncherCheck::GetErrorCode());
    		return; /* Error, exit or what do you want. */
    	}

     

    The lib file is compatible with Visual studio 2015.

     

    This is the hidden content, please

    • Metin2 Dev 2
    • Good 1
    • muscle 1
    • Love 7
  2. 16 minutes ago, MetinGuard said:

    Yeah I actually posted an old version which had been quickly mashed together, got my Git branches mucked up, updated the OP.

     

    You don't need create new define macro (#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))) Because there is already have a another one (_countof).

    LoadLibrary API don't return as HANDLE so you should convert to HMODULE or similar memory pointer.

    LoadLibrary API don't give INVALID_HANDLE_VALUE aka. -1 value if is failed you will get null pointer.

    You should free ntdll module not export's pointer.

    • Love 1
  3. M2 Download Center

    This is the hidden content, please
    ( Internal )

    Hello,

     

    I have created a little security addition for a while ago. It's creating random/dynamic module names in every client session(maybe better than chrmgrm2g, playerm2g2 or etc. lol).

    Here is 6 API as default("net", "chr", "chrmgr", "app", "pack", "player") and HowTo tutorial exist in rar archive.

    This is the hidden content, please

     

    Enjoy it.;)

    • Metin2 Dev 106
    • Eyes 1
    • Angry 1
    • Sad 1
    • Cry 1
    • Think 1
    • Confused 2
    • Scream 1
    • Good 26
    • Love 5
    • Love 54
  4. Good job but have a little problem about "SetCurrentProcessExplicitAppUserModelID" usage API works on Win7 or later, You already do requirement with GetVersionEx but it is not enough because you are already used "SetCurrentProcessExplicitAppUserModelID" in your client and builded IAT with this API so when XP or Vista users try run your client he will get this error.

    Spoiler

    sdds.png

    You need call as dynamic, like this;

        OSVERSIONINFO v;
        v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
        GetVersionEx(&v);
        
        if (v.dwMajorVersion >= 6 && v.dwMinorVersion >= 1)
        {
            WCHAR myAppID[128];
            swprintf(myAppID, sizeof(myAppID) / sizeof(myAppID[0]), L"MyMetin2AppID%u", GetCurrentProcessId());
            
            typedef HRESULT(WINAPI* SetCurrentProcessExplicitAppUserModelIDptr)(_In_ PCWSTR AppID);
            SetCurrentProcessExplicitAppUserModelIDptr SetCurrentProcessExplicitAppUserModelIDo = (SetCurrentProcessExplicitAppUserModelIDptr)GetProcAddress(LoadLibraryA("shell32.dll"), "SetCurrentProcessExplicitAppUserModelID");
            if (SetCurrentProcessExplicitAppUserModelIDo)

            {
                HRESULT hr = SetCurrentProcessExplicitAppUserModelIDo(myAppID);
                if (!SUCCEEDED(hr))
                    return false;
            }
        }

     

    • Love 3
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.