Free Game Research Forum | Official QuickBMS support | twitter @zenhax | SSL HTTPS://zenhax.com
It is currently Thu Dec 13, 2018 7:41 pm

All times are UTC

Post new topic  Reply to topic  [ 3 posts ] 
Author Message
PostPosted: Tue Nov 13, 2018 3:13 pm 

Joined: Wed Oct 01, 2014 4:14 pm
Posts: 4
My previous post: https://zenhax.com/viewtopic.php?f=9&t=8865

I'm looking for someone to unpack and decrypt Ragnarok Eternal Love game data for my small project.

As for now, I have been able to decompile some of the game resources using AssetStudio.
However, TextAsset such as NPC(for instance - npc HP, ID, type and so on), item, quest, skill and few other databases are encrypted.
I strongly believe that those data are in resources/script2 folder.


Anyway, please PM me if you're interested. I'll pay you via Paypal once its done.


Game: Ragnarok Online: Eternal Love
Platform: Android
Official site: https://www.ragnaroketernallove.com
script2 folder (untouched): https://www.mediafire.com/file/twdpvwm9 ... s.rar/file
script2 TextAsset (decompiled using AssetStudio): http://www.mediafire.com/file/luy6l899h ... t.rar/file

Game client APK: https://www.ragnaroketernallove.com/apkdl or https://rescdn.imtxwy.com/apk/ro-sea/RO ... 798060.apk

PostPosted: Sat Nov 17, 2018 7:52 pm 
User avatar

Joined: Sat Dec 27, 2014 8:49 pm
Posts: 104
From the look of it, the files are encrypted with DES. The libslua.so file has the key and functions in it to encode buffers using the same setup and key.

void __cdecl desECode(void *a1, size_t a2, void *a3)
  int v3; // esi
  size_t n; // edi
  char *v5; // esi
  size_t v6; // ebp
  _BYTE *src; // ST04_4
  unsigned int *dest; // ST00_4

  v3 = dword_42024;
  memcpy(a3, "czjzgqde", dword_42024);
  *(_DWORD *)((char *)a3 + v3) = a2;
  n = desECodeLenth(a2);
  v5 = (char *)malloc(n);
  memset(v5, 1, n);
  v6 = 0;
  memcpy(v5, a1, a2);
  deskey(byte_42018, 0);
  if ( n )
      src = (char *)a3 + v6 + dword_42020;
      dest = (unsigned int *)&v5[v6];
      v6 += 8;
      des(dest, src);
    while ( n > v6 );

I don't have the time to reverse and test the rest of the process to decrypt the data but it looks like everything you'd need is there.

My personal site: http://atom0s.com
Donations can be made via Paypal: Click Here

PostPosted: Tue Nov 20, 2018 9:25 pm 

Joined: Wed Oct 01, 2014 4:14 pm
Posts: 4
Thanks for your time. This is what I found in libslua.so. But I honestly don't know what to do with it. My reverse engineering skill is little to none.

void __fastcall desECode(const void *a1, size_t a2, char *a3)
  char *v3; // r7
  const void *v4; // r9
  size_t n; // ST04_4
  int v6; // r5
  unsigned int v7; // r4
  unsigned int v8; // r6
  char *v9; // r5
  int v10; // r0
  int v11; // r1

  v3 = a3;
  v4 = a1;
  n = a2;
  v6 = dword_260AC;
  memcpy(v3, "czjzgqde", dword_260AC);
  v7 = 0;
  *(_DWORD *)&v3[v6] = n;
  v8 = desECodeLenth(n);
  v9 = (char *)malloc(v8);
  memset(v9, 1, v8);
  memcpy(v9, v4, n);
  deskey((int)byte_26020, 0);
  if ( v8 )
      v10 = (int)&v9[v7];
      v11 = dword_260B0 + v7;
      v7 += 8;
      des(v10, &v3[v11]);
    while ( v8 > v7 );

Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 3 posts ] 

All times are UTC

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Limited