Register for your free account! | Forgot your password?

Go Back   elitepvpers > General Gaming > General Gaming Discussion
You last visited: Today at 05:21

  • Please register to post and access all features, it's quick, easy and FREE!


Ether Saga Online: Giving working zoom hack and helpful classes and asking for help

Old   #1
elite*gold: 140
Join Date: Aug 2011
Posts: 5
Received Thanks: 1
Lightbulb Ether Saga Online: Giving working zoom hack and helpful classes and asking for help

Doesn't work after Future's End patch

- Introduction
- ZoomHack
- ESO botting core template for c#
- Request for help from people experienced in botting

Ok so this is my first post on epvp, I've been spending a whole lot of time lately learning about memory scanning, assembly and whatnot. I used to bot UO but since there was EasyUO I didn't need to get into the real stuff. I'm also experienced programmer but not on very low level...

So let's start with sharing something I got so far, even if it's just a little:

For memory reading and writing I use a modified version of AionInterface with some types to store memory offsets and pointer paths, other than that the code is mine.

I attached source code and binaries for your convenience.

The addresses work for current version 399.


For a casual user who just wants to use it:

Works for version 399 and most likely will crash any other version.

Download the binaries.rar attached and extract all files. When game is running run ZoomSolution.exe as adminstrator (right click -> run as administrator).

For someone who is interested in code:

Source code for ZoomSolution (program.cs) (requires reference to EESOcore.dll):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ZoomSolution
    class Program
        static void Main(string[] args)
            EESO.EESOCore core = new EESO.EESOCore();
            foreach (EESO.Client client in core.Clients)
                client.InfiniteZoom = true;
ESO botting core template for c#
Look into the EESOcore project, it has functionality to recognize running clients and attaching to offsets that are for current version.

Offsets in the template (for version 399):
int hpAddress = new MemPath("elementclient.exe+006B304C,28,288").GetTargetAddress(this);
            MemoryAddresses.Add("HP", new MemLocation(hpAddress));
            MemoryAddresses.Add("Level", new MemLocation(new MemOffset(hpAddress, -0x008).TargetAddress));
            MemoryAddresses.Add("Mana", new MemLocation(new MemOffset(hpAddress, 0x0004).TargetAddress));
            MemoryAddresses.Add("Rage", new MemLocation(new MemOffset(hpAddress, 0x0008).TargetAddress));
            MemoryAddresses.Add("Vigor", new MemLocation(new MemOffset(hpAddress, 0x000C).TargetAddress));
            MemoryAddresses.Add("Essence", new MemLocation(new MemOffset(hpAddress, 0x0010).TargetAddress));
            MemoryAddresses.Add("Exp", new MemLocation(new MemOffset(hpAddress, 0x0014).TargetAddress) { Cast = typeof(double), Size = 8 });
            MemoryAddresses.Add("Attack", new MemLocation(new MemOffset(hpAddress, 0x0028).TargetAddress));
            MemoryAddresses.Add("Defense", new MemLocation(new MemOffset(hpAddress, 0x002C).TargetAddress));
            MemoryAddresses.Add("Health", new MemLocation(new MemOffset(hpAddress, 0x0030).TargetAddress));
            MemoryAddresses.Add("Power", new MemLocation(new MemOffset(hpAddress, 0x0034).TargetAddress));
            MemoryAddresses.Add("Points", new MemLocation(new MemOffset(hpAddress, 0x0038).TargetAddress));
            MemoryAddresses.Add("Affinity", new MemLocation(new MemOffset(hpAddress, 0x003C).TargetAddress));
            MemoryAddresses.Add("Ferus", new MemLocation(new MemOffset(hpAddress, 0x0040).TargetAddress));
            MemoryAddresses.Add("Flora", new MemLocation(new MemOffset(hpAddress, 0x0044).TargetAddress));
            MemoryAddresses.Add("Aquan", new MemLocation(new MemOffset(hpAddress, 0x0048).TargetAddress));
            MemoryAddresses.Add("Pyros", new MemLocation(new MemOffset(hpAddress, 0x004C).TargetAddress));
            MemoryAddresses.Add("Terra", new MemLocation(new MemOffset(hpAddress, 0x0050).TargetAddress));
            MemoryAddresses.Add("MaxHealth", new MemLocation(new MemOffset(hpAddress, 0x0054).TargetAddress));
            MemoryAddresses.Add("MaxMana", new MemLocation(new MemOffset(hpAddress, 0x0058).TargetAddress));
            MemoryAddresses.Add("MaxRage", new MemLocation(new MemOffset(hpAddress, 0x005C).TargetAddress));
            MemoryAddresses.Add("MaxVigor", new MemLocation(new MemOffset(hpAddress, 0x0060).TargetAddress));
            MemoryAddresses.Add("MaxEssence", new MemLocation(new MemOffset(hpAddress, 0x0064).TargetAddress));
            MemoryAddresses.Add("StrMin", new MemLocation(new MemOffset(hpAddress, 0x00C4).TargetAddress));
            MemoryAddresses.Add("StrMax", new MemLocation(new MemOffset(hpAddress, 0x00C8).TargetAddress));
            MemoryAddresses.Add("DEF", new MemLocation(new MemOffset(hpAddress, 0x00CC).TargetAddress));
            MemoryAddresses.Add("CSR", new MemLocation(new MemOffset(hpAddress, 0x00D0).TargetAddress) { Cast = typeof(float) });
            MemoryAddresses.Add("CSD", new MemLocation(new MemOffset(hpAddress, 0x00D4).TargetAddress) { Cast = typeof(float) });
            MemoryAddresses.Add("IntMin", new MemLocation(new MemOffset(hpAddress, 0x00D8).TargetAddress));
            MemoryAddresses.Add("IntMax", new MemLocation(new MemOffset(hpAddress, 0x00DC).TargetAddress));
            MemoryAddresses.Add("Resist", new MemLocation(new MemOffset(hpAddress, 0x00E0).TargetAddress));
            MemoryAddresses.Add("CCR", new MemLocation(new MemOffset(hpAddress, 0x00E4).TargetAddress) { Cast = typeof(float) });
            MemoryAddresses.Add("CCD", new MemLocation(new MemOffset(hpAddress, 0x00E8).TargetAddress) { Cast = typeof(float) });
            MemoryAddresses.Add("ACC", new MemLocation(new MemOffset(hpAddress, 0x00EC).TargetAddress));
            MemoryAddresses.Add("RESL", new MemLocation(new MemOffset(hpAddress, 0x00F0).TargetAddress));
            MemoryAddresses.Add("Gold", new MemLocation(new MemOffset(hpAddress, 0x0184).TargetAddress));
I know that I could have rather made it as a struct with a base address and offsets for properties but for now I'm still working on this, I'm releasing unfinished work just if it happens to help you in what you're doing.

Examples of usage:

Iterating all properties of all clients and showing them in a listbox:
            EESOCore core = new EESOCore();
            foreach (Client client in core.Clients)
                listBox1.Items.Add("Client: " + client.Window.hWnd.ToString());
                foreach (string property in client.Properties.Keys)
                        String.Format("({0}){1}\t\t= " + ( client.Properties[property].Equals(typeof(float)) ? "{2:#0.0000}" : "{2}" ),
                            client.GetProperty(property, client.Properties[property]))
Reading HP of the client with smallest main window handle:
EESOCore core = new EESOCore();
int HP = core.Clients[0].HP;
Finding out how much experince is needed for level 117 (interesting for some since nobody has reached that level yet):
(note how you have to have a client running to get that, since I don't have a static table in the core in case it would change for any reason)
EESOCore core = new EESOCore();
int ExpToLvl = core.Clients[0].ExpPerLevel(117);
Request for help from people experienced in botting
Ok now to the last part. Why am I releasing unfinished stuff (that works tho)?

I've been scanning ESO memory and reading tutorials and articles about it for quite some time now and even though I've learned a lot doing so it's very hard to find entities from memory when you're not very experienced in that stuff.

If anyone would steer me in the right direction on finding arrays or structures for Items, mobiles etc. Any help would be greatly appreciated and I would gladly contribute back to the community as I get my stuff better.

Lastly: I'm not interested in exploiting and the zoom hack is there mostly to give this post some other value than just begging for help. The reason I am making this stuff is to keep statistics of my botting (with the ingame bot Possessor), but at the same time making a good library for custom bots and automation for whoever may need one (kinda like EasyUO for ESO).

Binaries.rar = Binaries for EESOCore and InteropHelper libraries and zoom hack executable.
Source.rar = Sauce.
Attached Files
File Type: rar Binaries.rar (16.5 KB, 10 views)
File Type: rar Source.rar (17.1 KB, 21 views)

MessyIO is offline  

bot, entities, eso, hack, memory

« Previous Thread | Next Thread »

Similar Threads
Ether Saga Online - my 1st bot
The reason for this bot is the limitations I encountered with Possessor. This is actually my 2nd bot :p The 1st bot was in pure AutoIt. It was slow...
15 Replies - General Gaming Discussion
Ether Saga Online - Zoom
This is For Ether Saga Online it allows you to zoom out farther that normal. Things to note: 1.This is my first Hack so if you don't like it,...
1 Replies - General Gaming Discussion
[Release] Ether Saga Zoom Hack
Ether Saga Online Zoom Hack E*pvp only Release #-Hack Notes Zoom Hack. You can Zoom out so much you want. #-Screenshot...
29 Replies - General Gaming Discussion

All times are GMT +1. The time now is 05:21.

Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2018 elitepvpers All Rights Reserved.