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 > World of Warcraft > Bots and Programs > WoW Memory Editing
Reload this Page Nofalldmg Detour causes wow to crash
WoW Memory Editing WoW Memory Editing for learning purposes only.

Reply
 
LinkBack Thread Tools
(#16)
Old
Cypher's Avatar
Cypher is Offline
Kynox's Pimp OMGRECURSION
Legendary User
Rep Power: 9
Reputation: 798
Cypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to behold
 
Posts: 2,034
Join Date: Apr 2006
Location: Your mums bedroom
07-01-2008

Quote:
Originally Posted by beagle View Post
This is probably a REALLY noob question, but is it possible to get the address for fall damage using a memory editor for say, Age of Conan? Sorry for asking here but theres nothing really about fall damage on the Conan forums. The reason I ask here is because i thought maybe it might be similar to this game, plus you are all very knowledgable on these kinds of things, so i thought i might as well ask .
First things first:
Wrong thread, wrong section, wrong forum, gtfo idiot.

Secondly:
StartedFalling and StoppedFalling are in the n3Vehicle vtable, run a string search for 'falling' and they're really easy to find. Goto the top of the StoppedFalling function and force the second JZ to a JMP to disable fall damage.

This is all from memory so it may be a tiny bit off but if you can't get it working from that info then you're probably too retarded to do it at all and should just stick to downloading 'point and click' hacks.

PS. Yes, it WAS a really noob question because you were obviously too retarded to realise it is totally inapropriate to ask about a different game in this thread.

PSS. Yes I am an *******, deal with it, if you want information from me and you're being a retard you can take a bit of flaming along with the info I supply.



"Side effects from viewing these forums may include mood swings, cognitive dissonance, decreased work productivity, moral relativism, dilated tear ducts, insomnia, hypersensitivity and gout." - Tseric
Reply With Quote

Donate to remove ads.
(#17)
Old
KuRIoS's Avatar
KuRIoS is Offline
Administrator
Rep Power: 15
Reputation: 1417
KuRIoS has much to be proud ofKuRIoS has much to be proud ofKuRIoS has much to be proud ofKuRIoS has much to be proud ofKuRIoS has much to be proud ofKuRIoS has much to be proud ofKuRIoS has much to be proud ofKuRIoS has much to be proud ofKuRIoS has much to be proud ofKuRIoS has much to be proud of
 
Posts: 4,276
Join Date: Apr 2006
Location: Denmark
07-01-2008

sry to say it but chazz is right.. consider ur infractions points his flame



Do NOT add me to msn to talk about emu servers
[Only registered and activated users can see links. ]
Reply With Quote
(#18)
Old
suicidity is Offline
Banned
Rep Power: 0
Reputation: 89
suicidity will become famous soon enough
 
Posts: 652
Join Date: Oct 2006
Location: In your attic.
07-01-2008

I can always seem to agree with Chazz for some reason?
Reply With Quote
(#19)
Old
Xarg0's Avatar
Xarg0 is Offline
Sergeant Major
Rep Power: 1
Reputation: 19
Xarg0 is on a distinguished road
 
Posts: 151
Join Date: Jan 2008
Location: High in the sky
07-02-2008

Does the Return Adress need to be a relative one too?
If so I'm quite shure that's what's causing the crash...


Bei 200° 15 Minuten Backen und keine EIER!!!!!!!!
Reply With Quote
(#20)
Old
Shynd's Avatar
Shynd is Offline
Master Sergeant
Rep Power: 1
Reputation: 28
Shynd is on a distinguished road
 
Posts: 123
Join Date: May 2008
07-02-2008

No, I don't believe so. Seriously, your CALL needs to be relative from the -end- of the CALL opcodes, not the beginning. I'm positive that's the problem. Load up OLLYDBG, breakpoint the fall address, inject your code, and single-step through it.
Reply With Quote
(#21)
Old
beagle 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
beagle is an unknown quantity at this point
 
Posts: 6
Join Date: Jun 2008
07-02-2008

Thank you very much for the information Chaz. And yes, you are right, i posted in the wrong forum. No, i do not believe you are an *******, i broke the "rules" and i can live with that. I got the information i needed and i thank you for helping me.

On a side note though, calling some retarded because they are not as knowledgeable on this subject as yourself is in itself rather silly. Everyone has to start from somewhere, and since you know absolutley nothing about me, it is rather pointless to insult my intelligence. I tried to be as polite as i could, and i pointed out that i was indeed sorry for asking on this thread, making it quite ovbious that i knew it was the wrong place. This thread was exactly what i was looking for, although unfortunately it was for a different game, and for that i appologize. Please dont take me for a 13 year old "PLZ GIV ME H4X TY" kid. I am trying my best on the spare time that i have to learn how to do these things myself, so please dont criticise or berate me for it.

Thanks again though, i certainly appreciate the help .

Last edited by beagle; 07-02-2008 at 01:04 PM.
Reply With Quote
(#22)
Old
Xarg0's Avatar
Xarg0 is Offline
Sergeant Major
Rep Power: 1
Reputation: 19
Xarg0 is on a distinguished road
 
Posts: 151
Join Date: Jan 2008
Location: High in the sky
07-02-2008

I went back to using a call struct, like bwh does in it's sendmessagehook
Code:
#pragma pack(push)
#pragma pack(1)
typedef struct _CALLINSTRUCTION
{
	BYTE bOpcode;
	DWORD dwAddress;
	BYTE Nop;
} CALLINSTRUCTION, *PCALLINSTRUCTION;
#pragma pack(pop)
writing this struct to the memory works fine, it writes the call correctly to wow and the JE stays intact, I calculate the call offset like bubba did for his sendmessage detour,
Code:
PtrToUlong(NoFallDamage_Detour)-(DetourAddress+sizeof(origbyte))
origbyte is a bytearray that contains the original bytes.
Code:
BYTE origbyte[] = {0x8B ,0x4F ,0x7C ,0x89 ,0x4E, 0x3C};
My call code now looks ok in olly but I still crash with a memory error, this time it's a the memory could not be written error, my code tried to write at the Adress 0x0000000


Bei 200° 15 Minuten Backen und keine EIER!!!!!!!!
Reply With Quote
(#23)
Old
sweeper18 is Offline
Site n00b.. (A leecher if I've been here for more than a month and can't earn 5 rep)
Rep Power: 3
Reputation: 2
sweeper18 is an unknown quantity at this point
 
Posts: 26
Join Date: Aug 2006
07-03-2008

Quote:
Originally Posted by Xarg0 View Post
I went back to using a call struct, like bwh does in it's sendmessagehook
Code:
#pragma pack(push)
#pragma pack(1)
typedef struct _CALLINSTRUCTION
{
	BYTE bOpcode;
	DWORD dwAddress;
	BYTE Nop;
} CALLINSTRUCTION, *PCALLINSTRUCTION;
#pragma pack(pop)
writing this struct to the memory works fine, it writes the call correctly to wow and the JE stays intact, I calculate the call offset like bubba did for his sendmessage detour,
Code:
PtrToUlong(NoFallDamage_Detour)-(DetourAddress+sizeof(origbyte))
origbyte is a bytearray that contains the original bytes.
Code:
BYTE origbyte[] = {0x8B ,0x4F ,0x7C ,0x89 ,0x4E, 0x3C};
My call code now looks ok in olly but I still crash with a memory error, this time it's a the memory could not be written error, my code tried to write at the Adress 0x0000000
Then I guess you need to look for a bad pointer? That is what 0x0000000 sounds like to me. I haven't read the thread though so I wouldn't know lol
Reply With Quote
(#24)
Old
suicidity is Offline
Banned
Rep Power: 0
Reputation: 89
suicidity will become famous soon enough
 
Posts: 652
Join Date: Oct 2006
Location: In your attic.
07-03-2008

It sounds like this is happening when your trying to actually call, perhaps this is an overflow like suggested before?

Sorry I can't be much of service; other than suggestions. I'll try finding my old CS Source stuff to see if it could be much of service to you.
Reply With Quote
(#25)
Old
Shynd's Avatar
Shynd is Offline
Master Sergeant
Rep Power: 1
Reputation: 28
Shynd is on a distinguished road
 
Posts: 123
Join Date: May 2008
07-03-2008

Let OLLY catch the exception and see where it originates from. That, or single-step through (or 'execute-til-ret' through) your code and see if any of the registers that are accessed right after your detour is called are changed to something they shouldn't be, causing them to screw up. It may be as simple as the stack getting out of sync with what the program thinks it should be, or something else that's easy to overlook but simple to solve.

Edit: wait, if you're detouring by using a CALL opcode instead of a JMP opcode, you don't need to push dwOrig onto the stack before RETNing; CALLs already do that. I bet you're getting a stack error because dwOrig is pushed onto the stack twice and taken off only once. May be wrong, but that's what it looks like to me.

Last edited by Shynd; 07-03-2008 at 11:25 AM.
Reply With Quote
(#26)
Old
Xarg0's Avatar
Xarg0 is Offline
Sergeant Major
Rep Power: 1
Reputation: 19
Xarg0 is on a distinguished road
 
Posts: 151
Join Date: Jan 2008
Location: High in the sky
07-03-2008

Thanks, Shynd I'll try that, my asm knowlegde is very limited since I didn't find any good tutorials or references, most tutorials deal with some ASM IDE that uses a lot of macros to make the use easier so I couldn't find tutorials on real x86 asm.


Bei 200° 15 Minuten Backen und keine EIER!!!!!!!!
Reply With Quote
(#27)
Old
Cypher's Avatar
Cypher is Offline
Kynox's Pimp OMGRECURSION
Legendary User
Rep Power: 9
Reputation: 798
Cypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to behold
 
Posts: 2,034
Join Date: Apr 2006
Location: Your mums bedroom
07-04-2008

Okay, I downloaded the DLL, injected it, fired up a disassembler and these are the results:

Original Code
Code:
.text:00760D90                 mov     ecx, [edi+7Ch]
.text:00760D93                 mov     [esi+3Ch], ecx
.text:00760D96                 jz      short loc_760DB6
Your code
Code:
.text:00760D90                 call 0b2210b9
.text:00760D95                 cmp al,74
.text:00760D97                 push ds
What is at that call address:
Code:
.text:0b2210b9 jmp 0b222370
<Lots more jmps below this>
I have no idea what the hell you've done in your implementation of the hook to mangle shit that bad, but yeah, you ****ed up.

Its actually quite simple, just follow these steps:
An unconditional jump is 5 bytes. The code you're overwriting is 6. Write your unconditional jump and a NOP. Also, make sure you're writing the hook function to memory properly, caus that's messed up too. Then just jump back to the line 00760D96 (or, your base address + 6).

This is what your code should look like:
Code:
.text:00760D90                 jmp deadbeef
.text:00760D95                 nop
.text:00760D96                 jz      short loc_760DB6
Obviously DEADBEEF would be the location of the replacement code. To make things simple you can just write the code to a code cave if you don't know how to use a DLL properly.



"Side effects from viewing these forums may include mood swings, cognitive dissonance, decreased work productivity, moral relativism, dilated tear ducts, insomnia, hypersensitivity and gout." - Tseric
Reply With Quote
(#28)
Old
Xarg0's Avatar
Xarg0 is Offline
Sergeant Major
Rep Power: 1
Reputation: 19
Xarg0 is on a distinguished road
 
Posts: 151
Join Date: Jan 2008
Location: High in the sky
07-04-2008

That DLL was just ****ed up ^^

It's working now
[Only registered and activated users can see links. ]
Thanks to everyone here who posted usefull stuff espacially Shynd :-)
<3 you


Bei 200° 15 Minuten Backen und keine EIER!!!!!!!!
Reply With Quote
(#29)
Old
Cypher's Avatar
Cypher is Offline
Kynox's Pimp OMGRECURSION
Legendary User
Rep Power: 9
Reputation: 798
Cypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to beholdCypher is a splendid one to behold
 
Posts: 2,034
Join Date: Apr 2006
Location: Your mums bedroom
07-04-2008

Quote:
Originally Posted by Xarg0 View Post
That DLL was just ****ed up ^^

It's working now
[Only registered and activated users can see links. ]
Thanks to everyone here who posted usefull stuff espacially Shynd :-)
<3 you

I figured as much given that your target call address was full of retarded and nonsensical crap.



"Side effects from viewing these forums may include mood swings, cognitive dissonance, decreased work productivity, moral relativism, dilated tear ducts, insomnia, hypersensitivity and gout." - Tseric
Reply With Quote
(#30)
Old
lanman92 is Online
Site n00b.. (A leecher if I've been here for more than a month and can't earn 5 rep)
Rep Power: 2
Reputation: 1
lanman92 is an unknown quantity at this point
 
Posts: 92
Join Date: Mar 2007
3 Weeks Ago

This thread is old, but how did you make it undetectable? I get D/C'd as soon as I jump/fall after inserting the detour + codecave. I didn't think this address was scanned by warden.

Here's the code I'm using, please don't be angry at my C# asm... Lol.

Code:
 
byte[] newBytesFirst = new Byte[] {0xE9, 0x26, 0xFB, 0x0C, 0x00, 0x90};                       //My JMP to the codecave
byte[] newBytesNext = new Byte[] {0x8B, 0x4F, 0x7C, 0x83, 0xF8, 0x00, 0x90, 0x90, 0x7D, 0x03, 0x89, 0x4E, 0x3C, 0x68, 0xC6, 0xA4, 0x7B, 0x00, 0xC3};                                                                                                 //My codecave
uint unimportant, unimportant3, unimportant2;
int vpex = VirtualProtectEx(hWow, (IntPtr)0x7BA4B0, (UIntPtr)0xF, (uint)0x40, out unimportant);
vpex = VirtualProtectEx(hWow, (IntPtr)0x889FEB, (UIntPtr)0x13, (uint)0x40, out unimportant2);
vpex = VirtualProtectEx(hWow, (IntPtr)0x7BA4C0, (UIntPtr)0xFF, (uint)0x40, out unimportant3);
Memory.WriteMemory(hWow, (long)0x7BA4C0, newBytesFirst);
Memory.WriteMemory(hWow, (long)0x889FEB, newBytesNext);
vpex = VirtualProtectEx(hWow, (IntPtr)0x7BA4B0, (UIntPtr)0x40, unimportant, out unimportant);
vpex = VirtualProtectEx(hWow, (IntPtr)0x889FEB, (UIntPtr)0x40, unimportant2, out unimportant2);
vpex = VirtualProtectEx(hWow, (IntPtr)0x7BA4C0, (UIntPtr)0x40, unimportant3, out unimportant3);
Yes, I am aware that I should use VirtualAllocEx(). But this works on private servers, so I am just curious how you did it... I have set a mem access breakpoint at 7BA4C0 and it never get's paused except while executing.

Last edited by lanman92; 3 Weeks Ago at 03:53 PM.
Reply With Quote
Reply

Donate to remove ads.

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.3
Copyright ©2000 - 2008, 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