[Release] uAries Unpacked (Aries MapleStory)

Discussion in 'Other Games' started by ezee, May 1, 2018.

Discuss [Release] uAries Unpacked (Aries MapleStory) in the Other Games area at GameKiller.net

Thread Status:
Not open for further replies.
  1. ezee

    ezee The New Guy

    Post Count:
    18
    Likes Received:
    159
    Stats

    About
    • ElluelClient = client redirector and login gateway
    • Elluel.dll = decryptDLL export api function for ElluelC.dll
    • ElluelC.dll = encrypted and packed dll
    Known Issues
    • small mistake on raw packed viewing is decimal formated bytes not hexed bytes (Version C)
    • Basic methods not named (Version D)
      • Manually fix it yourself. Easy fix. Personally didn't feel a need to describe.
    • Decompiled to C# provides ghost names (Version D)
      • Manually fix it yourself. Easy fix. Load dnSpy. Some names are not correctly ref'd
    • Decompiled to C# provides ghost classes / objects (Version D)
      • Manually fix it yourself. Easy fix. Remove or fix names.
    • Decompiled to C# provides duplicate methods / variables (errors) (Version D)
      • Manually fix it yourself. Easy fix.
    • Process becomes hidden (Version D)
      • has to do with resources not being linked. (look at next bullet)
    • Resources are not connected to the forms (Version D)
      • a small mistake when I picked one of the version I had left off on
        • Manually fix it yourself. Easy fix.
    • NXLDownloader is not correct (wasn't main focus in fixing plus it is opensource) (Version D)
    ElluelClient
    • entry confuser crypter removed (version A)
    • anti tampering removed (version A)
    • obfuscation switches removed (version B)
    • obfuscated opaque predicates removed (version A, B)
    • obfuscated calls removed (version A, B)
    • generic contents renamed (version A, B)
    • resources fixed (version A, B)
    • cleaned internal memory data (version A, B)
    • provided a rough pseudo translation from generics (version C)
    • provided console monitor for packets and logs (version C)
    • provided fixes for some of their mistakes (version C)
    • provided simple multi launch edit (version C)
    • provided raw packet monitoring (version C)
    • provided common packets monitoring (version C)
    • not *heavily* modified (version D)
    • provided a ~95% full translation of methods, classes, and a few variables (version D)
    • packet headers named (version D)
    • contains both ElluelC.dll and Elluel.dll in resources (version A, B, D)
    Download
    ( ) ( )

    Release Version D(5 / 11 / 2018)
    • Full ~95% translated source code
    • Named every "custom" packet header to watch out for
    Anti-Virus
    • (false-positives. Runs the dll decrypter stub)
    • (false-positives. It is the decrypter stub)
    • false-positives. It is the crypted module)
     

    Mr. Ad Advertisement

     
  2. danielpiro2

    danielpiro2 Israel The New Guy

    Post Count:
    43
    Likes Received:
    5
    Stats
    hi can u explain a little how to use this and what it does?
     
  3. ezee

    ezee The New Guy

    Post Count:
    18
    Likes Received:
    159
    Stats
    Sure. You can use and inspect internal code much easier.

    For example you can create a simple anti-hack bypass for the game. They use the same style as other private servers which is hash checking files. I posted three or so samples from different games since I joined yesterday to pass some time. Look at method_5() if you want to create a bypass for file memory edited hacks / mods. As well as fix their anti-checks for the additional dlls Elluel.dll and ElluelC.dll being deleted in the same folder. The ElluelC.dll decryption is on my todo list. From there you will be able to see more.

    Code:
    // Token: 0x06000183 RID: 387 RVA: 0x0000E3D4 File Offset: 0x0000C5D4
    private void method_5(byte[] byte_0)
    {
        if (this.bool_0 && this.bool_1)
        {
            if (this.bool_3)
            {
                this.mutex_1.WaitOne();
                try
                {
                    short num = BitConverter.ToInt16(byte_0, 0);
                    if (num != 30583)
                    {
                        if (num != GClass13.GClass14.short_0)
                        {
                            if (num != GClass13.GClass14.short_1)
                            {
                                if (num == GClass13.GClass14.short_4)
                                {
                                    GClass4 gclass = new GClass4(byte_0);
                                    gclass.method_8();
                                    Process.Start(gclass.method_12());
                                    return;
                                }
                                if (num == GClass13.GClass14.short_3)
                                {
                                    GClass4 gclass2 = new GClass4(byte_0);
                                    gclass2.method_8();
                                    short num2 = gclass2.method_8();
                                    if (num2 != 3)
                                    {
                                        if (num2 == 2)
                                        {
                                            MessageBox.Show("You have been detected with bad WZ files. Please download clean WZ files to fix it.", Class13.string_0);
                                            Class13.smethod_1();
                                            return;
                                        }
                                        if (Class13.bool_6)
                                        {
                                            if (Class13.string_32.Equals("1"))
                                            {
                                                new Thread(new ThreadStart(Class6.smethod_1)).Start();
                                            }
                                            else
                                            {
                                                new Thread(new ThreadStart(Class6.smethod_0)).Start();
                                            }
                                            return;
                                        }
                                    }
                                    else
                                    {
                                        string text = gclass2.method_12();
                                        short num3 = gclass2.method_8();
                                        MessageBox.Show(text, Class13.string_0);
                                        if (num3 == 1)
                                        {
                                            Class13.smethod_1();
                                            return;
                                        }
                                    }
                                }
                                else if (num != GClass13.GClass14.short_5)
                                {
                                    if (num == GClass13.GClass14.short_6)
                                    {
                                        GClass4 gclass3 = new GClass4(byte_0);
                                        gclass3.method_8();
                                        int int_ = gclass3.method_9();
                                        switch (int_)
                                        {
                                        case 0:
                                            this.method_12(int_, GClass18.smethod_6());
                                            break;
                                        case 1:
                                        {
                                            int num4 = (int)gclass3.method_4();
                                            if (num4 == 1)
                                            {
                                                Class13.bool_11 = false;
                                            }
                                            break;
                                        }
                                        case 2:
                                        {
                                            int num4 = (int)gclass3.method_4();
                                            if (num4 == 1)
                                            {
                                                Class13.bool_6 = false;
                                            }
                                            break;
                                        }
                                        case 3:
                                        {
                                            int num4 = (int)gclass3.method_4();
                                            if (num4 == 1)
                                            {
                                                Class13.bool_12 = false;
                                            }
                                            break;
                                        }
                                        }
                                        gclass3.method_1();
                                        return;
                                    }
                                    if (num == GClass13.GClass14.short_2)
                                    {
                                        if (Class13.bool_2)
                                        {
                                            Class13.bool_31 = false;
                                            Class13.bool_30 = false;
                                        }
                                    }
                                    else if (num != 54)
                                    {
                                    }
                                }
                                else
                                {
                                    GClass4 gclass4 = new GClass4(byte_0);
                                    gclass4.method_8();
                                    short num5 = gclass4.method_8();
                                    if (num5 != Class13.short_0 && !Class13.bool_24 && !Class13.bool_26)
                                    {
                                        MessageBox.Show("Wrong version of the client. Please download the new one.", Class13.string_0);
                                        Process.Start(Class13.string_5);
                                        Class13.smethod_1();
                                        return;
                                    }
                                    string arg = "";
                                    string arg2 = "";
                                    if (gclass4.Int16_0 > 0)
                                    {
                                        arg = gclass4.method_12();
                                    }
                                    int num6 = gclass4.method_5().Length;
                                    if (Class13.bool_21 && num6 > 1)
                                    {
                                        gclass4.method_3(-num6);
                                        arg2 = gclass4.method_12();
                                    }
                                    string string_ = arg2 + num5 + GClass13.GClass14.short_1 + arg;
                                    this.method_11(Class13.short_0, string_);
                                    gclass4.method_1();
                                    return;
                                }
                            }
                            else
                            {
                                this.bool_2 = true;
                                Class13.int_3 = 3;
                            }
                        }
                        this.gclass8_0.method_9(byte_0);
                        return;
                    }
                    GClass4 gclass5 = new GClass4(byte_0);
                    gclass5.method_8();
                    GClass13.GClass14.short_0 = gclass5.method_8();
                    GClass13.GClass14.short_1 = gclass5.method_8();
                    GClass13.GClass14.short_2 = gclass5.method_8();
                    GClass13.GClass14.short_3 = gclass5.method_8();
                    GClass13.GClass14.short_4 = gclass5.method_8();
                    GClass13.GClass14.short_5 = gclass5.method_8();
                    GClass13.GClass14.short_6 = gclass5.method_8();
                    GClass13.GClass15.short_0 = gclass5.method_8();
                    GClass13.GClass15.short_1 = gclass5.method_8();
                    GClass13.GClass15.short_2 = gclass5.method_8();
                    GClass13.GClass15.short_3 = gclass5.method_8();
                    GClass13.GClass15.short_4 = gclass5.method_8();
                    GClass13.GClass15.short_5 = gclass5.method_8();
                    GClass13.GClass15.short_6 = gclass5.method_8();
                    Class8.smethod_2(1);
                    int num7 = (int)gclass5.method_8();
                    ushort num8 = 0;
                    while ((int)num8 < num7)
                    {
                        string string_2 = gclass5.method_12();
                        Class6.string_0[(int)num8] = Class13.smethod_25(string_2);
                        num8 += 1;
                    }
                    return;
                }
                finally
                {
                    this.mutex_1.ReleaseMutex();
                }
            }
            this.gclass8_0.method_9(byte_0);
        }
    }
    
    // Token: 0x060000E3 RID: 227 RVA: 0x00008C50 File Offset: 0x00006E50
    public static void smethod_1()
    {
        bool flag = false;
        int num = 0;
        if (!(Class13.string_31 == ""))
        {
            string[] files = Directory.GetFiles(Environment.CurrentDirectory, "*.wz");
            string[] array = new string[]
            {
                "character",
                "mob",
                "map",
                "skill"
            };
            string[] array2 = files;
            int i = 0;
            IL_168:
            while (i < array2.Length)
            {
                string path = array2;
                string fileName = Path.GetFileName(path);
                bool flag2 = false;
                foreach (string value in array)
                {
                    if (fileName.ToLower().Contains(value))
                    {
                        flag2 = true;
                        IL_9F:
                        if (flag2)
                        {
                            DateTime lastWriteTime = new FileInfo(fileName).LastWriteTime;
                            DateTime d = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
                            long num2 = Convert.ToInt64((lastWriteTime - d).TotalSeconds);
                            long num3 = Class6.smethod_2(num);
                            Class6.dictionary_0[fileName] = num3 + "-" + num2;
                            if (num2 != num3)
                            {
                                Class13.gclass17_0.method_14(Class6.dictionary_0);
                                MessageBox.Show("You have been detected with bad WZ files. Please download clean WZ files to fix it.", Class13.string_0);
                                Class13.smethod_1();
                                return;
                            }
                            if (flag)
                            {
                                string path2 = string.Format("{0}\\wzTimesLocal.txt", Environment.CurrentDirectory);
                                File.AppendAllText(path2, string.Concat(new object[]
                                {
                                    fileName,
                                    " ",
                                    num2,
                                    "\r\n"
                                }));
                            }
                            num++;
                        }
                        i++;
                        goto IL_168;
                    }
                }
                goto IL_9F;
            }
            Class13.gclass17_0.method_14(Class6.dictionary_0);
        }
        else
        {
            new Thread(new ThreadStart(Class6.smethod_0)).Start();
        }
    }
     
    Last edited: May 1, 2018
    Yegor141, parkjoon and Lhakim39 like this.
  4. noname911

    noname911 Vietnam Lurker

    Post Count:
    3
    Likes Received:
    0
    Stats
    Not working
     
  5. Raigeki

    Raigeki United States ¯\_(ツ)_/¯ Support Premium

    Post Count:
    2,424
    Likes Received:
    2,523
    Stats
    what’s not working? these are tools and materials to make your own bypass with. unless you mean the download isn’t working.
     
    HehHexd likes this.
  6. parkjoon

    parkjoon United States Premium Premium

    Post Count:
    14
    Likes Received:
    2
    Stats
    Actually guys, this does "work". It's not a way to create a bypass. He literally removed tamper checks in the client itself and repacked it.
    Doesn't work with terminal (might be a stray check that ezee missed), but it definitely does work with regular Cheat engine scripts.

    View attachment 34395
     
  7. Raigeki

    Raigeki United States ¯\_(ツ)_/¯ Support Premium

    Post Count:
    2,424
    Likes Received:
    2,523
    Stats
    ah I see. I couldn’t download since I’m on mobile. all I saw were links and a lesson. my mistake.
     
  8. HehHexd

    HehHexd United States The New Guy

    Post Count:
    18
    Likes Received:
    1
    Stats
    @ezee so do we just put the files in the maplestory folder?
     
    How did you get the cheat engine to work? Every time i attached it to AriesMS, I get this message "We have detected a hacking threat, please turn off anything that could be considered hacks"
     
  9. jasonrulez7

    jasonrulez7 United States Premium Premium

    Post Count:
    114
    Likes Received:
    16
    Stats
    you have to fix their anti-checks for Elluel.dll and ElluelC.dll
     
  10. HehHexd

    HehHexd United States The New Guy

    Post Count:
    18
    Likes Received:
    1
    Stats
    oh okay thank you
     
    Should i use the dnSpy to fix it?
     
  11. ddcombat

    ddcombat United States Premium Premium

    Post Count:
    143
    Likes Received:
    78
    Stats
    Any way to remove Hwid ban checks?
     
  12. parkjoon

    parkjoon United States Premium Premium

    Post Count:
    14
    Likes Received:
    2
    Stats
    Guys guys guys ezee did all the heavy lifting. You don't have to do remove these tamper checks like jasonrulez7 is saying.
    All you need to do is copy ezee's repacked client into your game folder, run it, log in, then open your cheat engine table ( ), attach it to your MS process, then just start ticking your scripts. Super simple since ezee did all the work :)

    My guess would be in ElluelClient. Meaning you would have to unpack it yourself, remove the check, then repack it.
     
  13. ddcombat

    ddcombat United States Premium Premium

    Post Count:
    143
    Likes Received:
    78
    Stats
    do it for me and ill pay you
     
  14. HehHexd

    HehHexd United States The New Guy

    Post Count:
    18
    Likes Received:
    1
    Stats
    But If i do that, the message that i poster earlier will show up,"We have detected a hacking threat, please turn off anything that could be considered hacks".
     
  15. parkjoon

    parkjoon United States Premium Premium

    Post Count:
    14
    Likes Received:
    2
    Stats
    make sure you log in game to a character first then attach the cheat engine. otherwise, I get the DC message as well
     
    HehHexd likes this.
  16. HehHexd

    HehHexd United States The New Guy

    Post Count:
    18
    Likes Received:
    1
    Stats
    okay thank you!
     
  17. parkjoon

    parkjoon United States Premium Premium

    Post Count:
    14
    Likes Received:
    2
    Stats
    guys just FYI, ezee's repacked client is not a 100% bypass. There are some limitations and I'm sure more tamper checks within the client. in other words, you will DC frequently even with the repacked client
     
  18. noname911

    noname911 Vietnam Lurker

    Post Count:
    3
    Likes Received:
    0
    Stats
    Did you mean it does not work?
     
  19. parkjoon

    parkjoon United States Premium Premium

    Post Count:
    14
    Likes Received:
    2
    Stats
    It does work. I'm saying it's not 100% bypass. Neither is Terminal. Excessive hacking will trigger a check that DCs you. Same in regular GMS.
     
    Lhakim39 likes this.
  20. Lhakim39

    Lhakim39 Malaysia The New Guy

    Post Count:
    13
    Likes Received:
    0
    Stats
    it works but will get dc frequently.

    anyway thanks @eeze for this release.
     
Thread Status:
Not open for further replies.

Share This Page

  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies.
    Dismiss Notice
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies.
    Dismiss Notice