MMOwned - World of Warcraft Exploits, Hacks, Bots and Guides  
Homepage Register FAQ Members Mark Forums Read Advertise Marketplace FPSowned


Go Back   MMOwned - World of Warcraft Exploits, Hacks, Bots and Guides > Age of Conan > Age of Conan Exploits, Bots and Programs
Reload this Page Some hacks brought to you by ISXAOC
Age of Conan Exploits, Bots and Programs Exploits, Bots and Programs for Age of Conan.

Reply
 
LinkBack Thread Tools
Some hacks brought to you by ISXAOC
(#1)
Old
Pickled is Offline
Sergeant
Rep Power: 1
Reputation: 33
Pickled is on a distinguished road
 
Posts: 67
Join Date: Jul 2008
Pirate Some hacks brought to you by ISXAOC - 09-13-2008

Ok starting with an easy one - NoFall,

How do we locate this each patch?

Well if you wan't the simplest way to do it in 2 bytes, search for "Vehicle Falling" from within the client using OllyDBG or your favorite debugger.

You land around here:
Code:
005F5C4E    68 40BB3301     PUSH AgeOfCon.0133BB40                   ; ASCII "Vehicle/Falling"
And simply modify the "damage modifier" to 0.0f by pushing FLDZ on the stack
instead of what would normally be a "multiplier" for the fall damage..
Code:
Original: 
005F5CC3    D945 FC         FLD DWORD PTR SS:[EBP-4]

To:
005F5CC3    D9EE  90        FLDZ

....
BYTE patch[2] {0xee,0x90};
This has the net effect of doing 0*damage on fall - try it!

Strangely enough you can actually apply this principle to a lot of the games client side checks for damage, because they all use a simple modifier to check the damage done.

Or for the more advanced reverser, lets look at how we can Resurrect on our own corpse when we die with FULL health, mana, stamina (incoming nerf after I post this)

The game itself uses some components to handle your "character actions" which, to cut a long story short can be mapped using C/C++ hook.

The object is shown below which i've 'conveniently' reversed for you

If you wan't to understand how the code below works I suggest you learn some assembly language and how object code can be mapped to a 'higher level' language such as C/C++.

It all stems from the engine handler @ 0x005C8850 as you will see from my code at the bottom which I slowly studied to build up the virtual table for one of it's "interfaces"

The final result call (see below of how this constructed to make the final call from your hook):
Code:
//The overall engine which powers many of AOC components
_N3Engine* pN3 = GetN3Engine();

//This will respawn you on top of your corpse
//because we have not provided an Graveyard Id location
//the game is forced to resurrect you at your corpse! 


//virtual void RespawnMe(DWORD GyInstanceId);
pN3->GetCharAgent(0,0)->RespawnMe(0);
Code:
class _N3Engine
{
public:

	_N3CharAgent* GetCharAgent(int,int);
	
                //Cheap way of quickly doing the lookup - use inheritance if you are anal about it :)
	_N3CharIHandler* GetCharIHandler()
	{
		_N3CharIHandler* p = (_N3CharIHandler*)((DWORD)((pLookup->lookup2+4)+(DWORD)(this)));
		return p;
	}


	_N3EngineLookup* pLookup; 

	virtual void vf00();
                 ......

};
Code:
//The engine uses a lookup table for various actions to perform
//We will look up the "Interface" for all the client actions...

class _N3EngineLookup
{
public:
	DWORD unk;
	DWORD lookup1;
	DWORD lookup2; //Interface"CharAgent"
};
Code:
//Generate the correct virtual table offset distances
//If you are lazy you could simply write a macro to do this
//See very bottom of an example of a virtual call emulation macro

class _N3CharAgent
{
public:
	virtual void vf00();
	virtual void vf04();
	virtual void vf08();
	virtual void vf0c();
	virtual void vf10();
	virtual void vf14();
	virtual void vf18();
	virtual void vf1c();
	virtual void vf20();
	virtual void vf24();
	virtual void vf28();
	virtual void vf2c();
	virtual void vf30();
	virtual void vf34();
	virtual void vf38();
	virtual void vf3c();
	virtual void vf40();
	virtual void vf44();
	virtual void vf48();
	virtual void vf4c();
	virtual void vf50();
	virtual void vf54();
	virtual void vf58();
	virtual void vf5c();
	virtual void vf60();
	virtual void vf64();
	virtual void vf68();
	virtual void vf6c();
	virtual void vf70();
	virtual void vf74();
	virtual void RespawnMe(DWORD);
...
};
Code:
//Macro to emulate the games function call

#ifndef FUNCTION_AT_ADDRESS
#define FUNCTION_AT_ADDRESS(function,offset) __declspec(naked) function
{
	__asm{mov eax,offset};
	__asm{jmp eax};
}
#endif
Code:
//As of aoc 13/09/08
FUNCTION_AT_ADDRESS(_N3Engine* __cdecl GetN3Engine(void), 0x005C8850);
Code:
//A less intuitive approach to looking up your virtual table

#ifndef FUNCTION_AT_VIRTUAL_ADDRESS
#define FUNCTION_AT_VIRTUAL_ADDRESS(function,virtualoffset) __declspec(naked) function
{
	__asm{mov eax, [ecx]};
	__asm{lea eax, [eax+virtualoffset]};
	__asm{mov eax, [eax]};
	__asm{jmp eax};
}
#endif

If you were using my ISXAOC extension, you could ignore all this and simply do:

Hack:SuperRez heh
[Only registered and activated users can see links. ]

This should make sense to some seasoned coders with some knowledge of asm...

Next Guide, how to locate all the entities in the game ...

More guides to come.. enjoy!


-----

[Only registered and activated users can see links. ] (isxaoc bot)
[Only registered and activated users can see links. ]

Last edited by Pickled; 09-13-2008 at 08:23 AM..
Reply With Quote

Donate to remove ads.
(#2)
Old
mosimo is Offline
Site n00b.. (A leecher if I've been here for more than a month and can't earn 5 rep)
Rep Power: 1
Reputation: 1
mosimo is an unknown quantity at this point
 
Posts: 42
Join Date: Jul 2008
09-13-2008

Nice work. Looking forward to seeing the next guide of yours. More interested in making my own programs than using other peoples. So far all I've managed is a radar for players/ncps around me and basic stuff like that.
Currently I'm looking at where exactly that ranger flag is for showing players on the ingame map and how to perform actions ingame like pressing buttons, sending chat etc without using sendkey() something.
(+rep btw )
Reply With Quote
(#3)
Old
Cursed's Avatar
Cursed is Offline
Contributor
Rep Power: 3
Reputation: 237
Cursed has a spectacular aura aboutCursed has a spectacular aura aboutCursed has a spectacular aura about
 
Posts: 1,234
Join Date: Jun 2007
Location: Germany
09-13-2008

Hmm would that NoFallDamage work with WoW?
3x for this... Rezzing yourself = awesome


Reply With Quote
(#4)
Old
Jar-Kar is Offline
Sergeant
Rep Power: 1
Reputation: 5
Jar-Kar is an unknown quantity at this point
 
Posts: 37
Join Date: Jul 2008
09-13-2008

ha if u wanna do this go to AoCdebugg 2.1 here
[Only registered and activated users can see links. ]
cuz Sychotix is the MAN!!!
Reply With Quote
(#5)
Old
Pickled is Offline
Sergeant
Rep Power: 1
Reputation: 33
Pickled is on a distinguished road
 
Posts: 67
Join Date: Jul 2008
09-13-2008

Very good, of course - he dosen't actually provide any source.

My goal is to give some insight as to "how".
Reply With Quote
(#6)
Old
mosimo is Offline
Site n00b.. (A leecher if I've been here for more than a month and can't earn 5 rep)
Rep Power: 1
Reputation: 1
mosimo is an unknown quantity at this point
 
Posts: 42
Join Date: Jul 2008
09-13-2008

Quote:
Originally Posted by Pickled View Post
Very good, of course - he dosen't actually provide any source.

My goal is to give some insight as to "how".
The learning part is what I'm after. I'm not interested in the actually doing of stuff... Just how it's done. I'm playing AoC a lot atm so I might as well code some stuff to go with it.
Reply With Quote
(#7)
Old
Phattwoohie is Offline
Contributor
Rep Power: 1
Reputation: 86
Phattwoohie will become famous soon enough
 
Posts: 93
Join Date: May 2008
09-14-2008

You guys make me want to play this game I keep hearing about. Im bored of WoW
Reply With Quote
(#8)
Old
kiriyama666 is Offline
Site n00b.. (A leecher if I've been here for more than a month and can't earn 5 rep)
Rep Power: 0
Reputation: 1
kiriyama666 is an unknown quantity at this point
 
Posts: 1
Join Date: Sep 2008
09-15-2008

where do i get your extension? i tried on your wiki and there's no place to get it..i have innerspace..and am new to using it...plz help?
Reply With Quote
(#9)
Old
Pickled is Offline
Sergeant
Rep Power: 1
Reputation: 33
Pickled is on a distinguished road
 
Posts: 67
Join Date: Jul 2008
09-15-2008

Please follow the guide here:

[Only registered and activated users can see links. ]

In short you need to register and setup a subscription ( free 5 day trial ).

Then run the installer, found on the forums.

If you need more help please post on [Only registered and activated users can see links. ] or send me a pm.
Reply With Quote
(#10)
Old
Sychotix's Avatar
Sychotix is Offline
Contributor
Rep Power: 3
Reputation: 134
Sychotix will become famous soon enoughSychotix will become famous soon enough
 
Posts: 830
Join Date: Apr 2006
09-16-2008

Quote:
Originally Posted by Cursed View Post
Hmm would that NoFallDamage work with WoW?
phail -.- the addresses are completely different for two different games


Reply With Quote
(#11)
Old
Cursed's Avatar
Cursed is Offline
Contributor
Rep Power: 3
Reputation: 237
Cursed has a spectacular aura aboutCursed has a spectacular aura aboutCursed has a spectacular aura about
 
Posts: 1,234
Join Date: Jun 2007
Location: Germany
09-16-2008

Quote:
Originally Posted by Sychotix View Post
phail -.- the addresses are completely different for two different games
NAWT REALLY?! YOU HAVE TO BE KIDDIN'!!!!

No really, Im not that stupid-.-
I mean the method itself! (And NO I wouldn't search for 'vehicle falling')
ARGH!


Reply With Quote
(#12)
Old
raindog is Offline
Sergeant
Rep Power: 2
Reputation: 60
raindog will become famous soon enough
 
Posts: 37
Join Date: Dec 2007
09-29-2008

Hey pickle, What do you do programatically set a target? I havn't managed to suceed in doing that.
Reply With Quote
(#13)
Old
Pickled is Offline
Sergeant
Rep Power: 1
Reputation: 33
Pickled is on a distinguished road
 
Posts: 67
Join Date: Jul 2008
10-02-2008

Raindog: Dynel::TargetByGUID(....)
0x00686380

----------

NoFall
0x004FD4CB { D9 EE 90 90 }
(fldz) (extra nop as of new exe)

---------

As of latest patch.

Last edited by Pickled; 10-02-2008 at 07:00 PM..
Reply With Quote
(#14)
Old
mosimo is Offline
Site n00b.. (A leecher if I've been here for more than a month and can't earn 5 rep)
Rep Power: 1
Reputation: 1
mosimo is an unknown quantity at this point
 
Posts: 42
Join Date: Jul 2008
10-03-2008

Are you going to post any more tutorials about anything Pickled? Like finding the entities of the game. I am fine building the game objects up once I have the mem locations but it's getting them in the first place I struggle. Can find the last pointer but not the ones that point to it so any help is appreciated
Reply With Quote
(#15)
Old
Pickled is Offline
Sergeant
Rep Power: 1
Reputation: 33
Pickled is on a distinguished road
 
Posts: 67
Join Date: Jul 2008
10-03-2008

Let's consider the "logic" of the last offset I posted you can find the entire entity list from that alone

TargetByGUID(...)

Assuming you know assembly which is the first hurdle before even bothering to "find" stuff, you can trace inside this function to find out how to get the list of entities.

-- Stop here if you are not clued up on assembly. AOC is HIGHLY Object orientated you will NOT find basic structures in here from simply looking at data.

You need to follow code logic to visualise the objects, some good books to read: Reversing: Secrets of Reversing, Hacker Dissasembling (Kaspersky) and many others... --

Why?

If we are targetting by GUID, then how does the target function "find the entity by GUID"? Think about it, it's not all magic that happens in there, it's simplistic logic.

Well... it will take the GUID and presumably uses a function to iterate through all the entities to find a "matching GUID", yes?

What happens if we study the games logic to look up all entities?

Yes thats right, we can map out the code/data to do the same thing!

Tracing is the secret, having "offsets" is no use if you want to "learn".

[start Dynel::TargetByGUID]
[..Do things.. verifiy we already have this target? (remember that Dynel::TargetByGUID is an object method relative to Player]
[cmp eax, this->TargetGUID.Id]
[no target? then continue else end]
[Dynel = GetDynelGUID(fromTargetGUID params)] ?? Getting hotter?
[SetTheLovelyTargettingRingGFX, SetYourUITargetDetails based on this Dynel]
[end]

For your information Funcom specifically relate to Dynels as "Dynamic Elements".


I highly recommend understanding "calling conventions" so can identify objects in asm (although this is very complex for AOC as it uses optimizations which obscure the standards.. )


Last edited by Pickled; 10-03-2008 at 09:24 PM..
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are On



Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
vBulletin Skin developed by: vBStyles.com


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381