Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Mobile General Invincible MMO, complete source code set + program development documents + technical documentation

Newbie Spellweaver
Joined
Apr 23, 2023
Messages
33
Reaction score
0
Do somebody know, what type of encryption it is, for the database password?
Example: NTbWM+m5EV3L0biNcrQlSQ==
 
Experienced Elementalist
Joined
Sep 12, 2013
Messages
279
Reaction score
76

The encryption algorithm is defined in LibSrc(Which is not released in this thread, only pre-built lib shared). It delared in ODBCInterface class. There are 3 functions there: DecryptPassword() and EncryptPassword() to and PwdEncryptKey().

1697205789292 - General Invincible MMO, complete source code set + program development documents + technical documentation - RaGEZONE Forums

And it is not base64 dude.
 

Attachments

You must be registered for see attachments list
Last edited:
Newbie Spellweaver
Joined
Apr 23, 2023
Messages
33
Reaction score
0
The encryption algorithm is defined in LibSrc(Which is not released in this thread, only pre-built lib shared). It delared in ODBCInterface class. There are 3 functions there: DecryptPassword() and EncryptPassword() to and PwdEncryptKey().

View attachment 243249
And it is not base64 dude.
True. The generated Passwd dosnt work with Base64 and the Encrypted one, which is already in the Config is not known.

I need to read the documentation, but I got the server up and running

Did someone run the game ? If yes, please tell me in which file to change the ip of the client
So you know whats the Password for the Database?

I managed to connect for a short time, but the disconnections continue.
I don't know what this problem is, but I'm sure it's server-related problems.


View attachment 243150
How did you connect to the database?
 
Last edited:
Junior Spellweaver
Joined
Jun 10, 2006
Messages
136
Reaction score
100
The encryption algorithm is defined in LibSrc(Which is not released in this thread, only pre-built lib shared). It delared in ODBCInterface class. There are 3 functions there: DecryptPassword() and EncryptPassword() to and PwdEncryptKey().

View attachment 243249
And it is not base64 dude.

The password uses AES and Base 64. A simple look at the library would reveal it. Next time, do better research before posting.

C-like:
char *__fastcall DecryptPassword(char *a1, int a2, const unsigned __int8 *a3, const unsigned __int8 *a4)

{

  char *v4; // rdi

  __int64 i; // rcx

  const void *v6; // rax

  char v8; // [rsp+0h] [rbp-20h] BYREF

  char v9[516]; // [rsp+30h] [rbp+10h] BYREF

  int v10; // [rsp+234h] [rbp+214h]

  void *Block; // [rsp+258h] [rbp+238h]

  char *Source; // [rsp+278h] [rbp+258h]

  int v13; // [rsp+294h] [rbp+274h]

  char v14[256]; // [rsp+2B8h] [rbp+298h] BYREF

  char v15[64]; // [rsp+3B8h] [rbp+398h] BYREF

  char *v16; // [rsp+3F8h] [rbp+3D8h]

  __int64 v17; // [rsp+418h] [rbp+3F8h]

  size_t Size; // [rsp+428h] [rbp+408h]

  size_t v19; // [rsp+430h] [rbp+410h]

  __int64 v21; // [rsp+468h] [rbp+448h]



  LODWORD(v21) = a2;

  v4 = &v8;

  for ( i = 274i64; i; --i )

  {

    *(_DWORD *)v4 = -858993460;

    v4 += 4;

  }

  v17 = -2i64;

  if ( !boInited )

  {

    boInited = 1;

    gen_tabs(v21);

  }

  aes_set_key(v9, a4, 16i64);

  v10 = strlen((const char *)a3);

  Block = malloc(8 * v10 + 1028);

  Source = (char *)Block + 2 * v10;

  Size = std::string::string(v15, a3);

  v19 = Size;

  base64_decode(v14, Size);

  std::string::~string(v15);

  v13 = std::string::length(v14);

  Size = std::string::length(v14) + 1;

  v6 = (const void *)std::string::c_str(v14);

  memcpy(Block, v6, Size);

  AESDecrypt(v9, Source, Block, v13);

  Source[v13] = 0;

  strncpy(a1, Source, (int)v21 - 1);

  a1[(int)v21 - 1] = 0;

  free(Block);

  v16 = a1;

  std::string::~string(v14);

  return v16;

}
 
Last edited:
Experienced Elementalist
Joined
Sep 12, 2013
Messages
279
Reaction score
76
True. The generated Passwd dosnt work with Base64 and the Encrypted one, which is already in the Config is not known.

The password uses AES and Base 64. A simple look at the library would reveal it. Next time, do better research before posting.

C-like:
char *__fastcall DecryptPassword(char *a1, int a2, const unsigned __int8 *a3, const unsigned __int8 *a4)

{

  char *v4; // rdi

  __int64 i; // rcx

  const void *v6; // rax

  char v8; // [rsp+0h] [rbp-20h] BYREF

  char v9[516]; // [rsp+30h] [rbp+10h] BYREF

  int v10; // [rsp+234h] [rbp+214h]

  void *Block; // [rsp+258h] [rbp+238h]

  char *Source; // [rsp+278h] [rbp+258h]

  int v13; // [rsp+294h] [rbp+274h]

  char v14[256]; // [rsp+2B8h] [rbp+298h] BYREF

  char v15[64]; // [rsp+3B8h] [rbp+398h] BYREF

  char *v16; // [rsp+3F8h] [rbp+3D8h]

  __int64 v17; // [rsp+418h] [rbp+3F8h]

  size_t Size; // [rsp+428h] [rbp+408h]

  size_t v19; // [rsp+430h] [rbp+410h]

  __int64 v21; // [rsp+468h] [rbp+448h]



  LODWORD(v21) = a2;

  v4 = &v8;

  for ( i = 274i64; i; --i )

  {

    *(_DWORD *)v4 = -858993460;

    v4 += 4;

  }

  v17 = -2i64;

  if ( !boInited )

  {

    boInited = 1;

    gen_tabs(v21);

  }

  aes_set_key(v9, a4, 16i64);

  v10 = strlen((const char *)a3);

  Block = malloc(8 * v10 + 1028);

  Source = (char *)Block + 2 * v10;

  Size = std::string::string(v15, a3);

  v19 = Size;

  base64_decode(v14, Size);

  std::string::~string(v15);

  v13 = std::string::length(v14);

  Size = std::string::length(v14) + 1;

  v6 = (const void *)std::string::c_str(v14);

  memcpy(Block, v6, Size);

  AESDecrypt(v9, Source, Block, v13);

  Source[v13] = 0;

  strncpy(a1, Source, (int)v21 - 1);

  a1[(int)v21 - 1] = 0;

  free(Block);

  v16 = a1;

  std::string::~string(v14);

  return v16;

}

lol, did you just say it was base64? So can you decode it with base64?
I deleted this game the first day I downloaded it because it had an incomplete source code library.
If you disassemble the library's source code, don't other people know? What is the need for showboating like that?

So what is the AES decrypt key? If you don't have it, let someone else do it, you don't have to pretend you're better than anyone else. Because you are almost better than others in this area, in other areas you will be much worse than them. Friend. I don't mean anything. Please do not take this as a challenge. If you know, please help others. If you don't want to help, then don't, thank you.
 
Junior Spellweaver
Joined
Jun 10, 2006
Messages
136
Reaction score
100
lol, did you just say it was base64? So can you decode it with base64?
I deleted this game the first day I downloaded it because it had an incomplete source code library.
If you disassemble the library's source code, don't other people know? What is the need for showboating like that?

So what is the AES decrypt key? If you don't have it, let someone else do it, you don't have to pretend you're better than anyone else. Because you are almost better than others in this area, in other areas you will be much worse than them. Friend. I don't mean anything. Please do not take this as a challenge. If you know, please help others. If you don't want to help, then don't, thank you.
Maybe you don't know how to read.
Kalle's post has a base64 string, hence my answer.

Regarding the encryption, anyone can download IDAPro and use it to help decompile the encryption/decryption routine. I just posted the pseudocode as proof of their use of base64 obfuscation...

About the AES decrypt key, if you or anyone else is interested in running the game, you should look in the binaries or configurations. It will probably be there.
I'll not help since I'm not working on that game. Don't you make it a challenge, and don't play smart if you don't know things...


I said I wouldn't help, but I'll leave the key here since you need it.

1697320866470 - General Invincible MMO, complete source code set + program development documents + technical documentation - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Last edited:
Newbie Spellweaver
Joined
Sep 7, 2023
Messages
16
Reaction score
10
Hey all,

anyone able to fix those 2 issues server side?

Code:
[21:42:54]__show__ Assert:[d:\workspace\jjbb_new\server\srvlib\src\odbcinterface.cpp][454][ODBCInterface::GetFieldEx][false]: ColIndex 1, fc 1 !!
(21668)(T=1794169469)

[21:42:54]__show__ Assert:[d:\workspace\jjbb_new\server\srvlib\src\odbcinterface.cpp][454][ODBCInterface::GetFieldEx][false]: ColIndex 2, fc 1 !!
(21668)(T=1794169469)

[21:42:54]__show__ Assert:[d:\workspace\jjbb_new\server\srvlib\src\odbcinterface.cpp][303][ODBCInterface::GetIntEx][false]: ColIndex 3, fc 1 !!
(21668)(T=1794169469)

Code:
[21:42:54]__show__ Assert:[d:\workspace\jjbb_new\server\srvlib\src\odbcinterface.cpp][240][ODBCInterface::Execute][false]: sql len 17 failed error code 1046, error No database selected, sql call loadguid(1);!
(21668)(T=1794169485)

[21:42:54]__show__ Assert:[Base\GuidLoader.cpp][69][LoadGUIDFromDB][pFace->Execute()]: [GuidLoader]Execute Fail!
(21668)(T=1794169485)

[21:42:54]__show__ Assert:[Base\GuidLoader.cpp][74][LoadGUIDFromDB][nResultCount == nLen]: [GuidLoader]ArrayCount != AffectCount
(21668)(T=1794169485)

[21:42:54]__show__ Assert:[Base\GuidDefine.cpp][32][InitGuidModule][guidinfo[i].m_Carry != 0xff]:
(21668)(T=1794169485)

[21:42:54]__show__ Assert:[Base\GuidDefine.cpp][33][InitGuidModule][guidinfo[i].m_Serial != 0xffffffff]:
 
Initiate Mage
Joined
Mar 1, 2024
Messages
2
Reaction score
0
Its default code is: password is variable szPwd with default password :

Code:
default db pass: 123456

EncryptPassword : qAY1TlT8Sucfq1UuXqK1sg==

C++:
  ODBCInterface::Initial(this, rHost, dataBaseName, port, rUser, szPwd);



C++:
//----- (0000000003138412) ----------------------------------------------------

bool __cdecl ODBCInterface::Connect(ODBCInterface_0 *const this, const tchar *rHost, const tchar *dataBaseName, tint32 port, const tchar *rUser, const tchar *rPasswd)

{

  tchar *v6; // rax

  char szPwd[128]; // [rsp+30h] [rbp-90h] BYREF



  memset(szPwd, 0, sizeof(szPwd));

  DecryptPassword(szPwd, 128, rPasswd, PwdEncryptKey);

  ODBCInterface::Initial(this, rHost, dataBaseName, port, rUser, szPwd);

  if ( ODBCInterface::Connect(this) )

    return 1;

  v6 = SQLInterface::GetErrorMsg(this);

  __assertex__(

    "/root/mmo/lib/CoreCode/SrvLib/Src/ODBCInterface.cpp",

    0xD7u,

    "bool ODBCInterface::Connect(const tchar*, const tchar*, tint32, const tchar*, const tchar*)",

    "false",

    "host %s, db %s, port %d, user %s, pw %s, resean: %s!",

    rHost,

    dataBaseName,

    port,

    rUser,

    rPasswd,

    v6);

  return 0;

}

1709303984928 - General Invincible MMO, complete source code set + program development documents + technical documentation - RaGEZONE Forums


After using ida pro to analyze, I edited the asm code to pass the value directly here. The logic seems correct but, when I put the file on the server, it says the connection is wrong
Withe default password my db is: "cHTA8ymSkTb8FPEW"
C++:
assert: [2022-5-12 20:18:22]
[/root/mmo/lib/CoreCode/SrvLib/Src/ODBCInterface.cpp][215][bool ODBCInterface::Connect(const tchar*, const tchar*, tint32, const tchar*, const tchar*)][false]: host 127.0.0.1, db global_data, port 3306, user root, pw cHTA8ymSkTb8FPEW, resean: can not connect to mysql: Can't connect to MySQL server on '127.0.0.1' (111)!
assert: [2022-5-12 20:18:22]
[/root/Server/Server/Server/Base/Config.cpp][2548][void InitServerMerge()][pFace->IsConnected()]: [InitServerMerge] Connect to DB Fail ! [127.0.0.1][global_data][3306][root][cHTA8ymSkTb8FPEW]
assert: [2022-5-12 20:18:22]
[/root/Server/Server/Server/Base/Config.cpp][2557][void InitServerMerge()][pFace->IsPrepare()]: [InitServerMerge] Query Fail!

also i have detailed information about the functions, but i can't use it
with
C++:
PwdEncryptKey = "zhangyou123_pwd_key"
1709304175228 - General Invincible MMO, complete source code set + program development documents + technical documentation - RaGEZONE Forums


1709304186840 - General Invincible MMO, complete source code set + program development documents + technical documentation - RaGEZONE Forums

Or you can use the GM function in the game to print out the encryption password

1709304270919 - General Invincible MMO, complete source code set + program development documents + technical documentation - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Back
Top