• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

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]:
 
Junior Spellweaver
Joined
Apr 21, 2023
Messages
160
Reaction score
22
you can rewrite odbc for mysql....use this new cpp file ,share for me ,,you are good man

dont use old mysql odbc,,no source code ,no pw for connect
 
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
Custom Title Activated
Loyal Member
Joined
Dec 19, 2014
Messages
1,111
Reaction score
350
I understand we got a password that's 100% correct?

Any new link to download

To avoid crashing from the game you need to set the date!

Code:
date -s "2022-05-12 18:39:40"
 
Last edited:
Back
Top