OldSchoolHack

Register / Login English

MW3 UAV Memory Patch

icon Thread: [Release] MW3 UAV Memory Patch

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
Quote from cardoow
Well since the radar is drawn locally you can manipulate it like a boss, saw people draw their own radar + use rotatedpic, but i personally like to use the engine to achieve my wishes. So since its almost christmas i have some Advanced UAV code for you guys.

this function does it all
TEXT Code:
  1. void __cdecl sub_47F690(int a1, int a2, int a3, int a4, int a5)
it loops trough a struct of 18 big, as far as i know its not clientinfo or entity, feel free to reverse it
TEXT Code:
  1. v7 = (char *)&unk_8F2938 + 3640 * a1;
  2. v52 = 18;
  3. do
  4. {
  5. .....
  6. v7 += 140; [COLOR=Red]//see here the struct size = 0x8C = 140 dec[/COLOR]
  7. }
  8. while ( v52-- != 1 );
  9.  
  10.  
now we're heading to some more important stuff
at the bottom of the function we see a call to drawrotatedpic
TEXT Code:
  1. sub_40D420(v51, v55, v56, v48, v47, *(_BYTE *)(a4 + 16), *(_BYTE *)(a4 + 17), v44, (int)&v58, v31);
and we see that v31 holds the shader.

if we scroll up a bit we see this piece of code
TEXT Code:
  1. if ( dword_8FF284 || v10 ) [COLOR=Red]// 0x8FF080 is cg_t, means cg_t + 0x204 holds the advanced uav value[/COLOR]
  2. {
  3. if ( !v45 || !dword_A041F8 || (v31 = dword_A041F8, sub_4F5920(dword_A041F8)) )
  4. v31 = dword_A04184; [COLOR=Red]// here v31 will hold compassping_enemyfacingdirection[/COLOR]
  5. }
  6.  
so we now know where to toggle the advanced uav, but now we only see the shaders when people shoot. We want those shaders at all time.
Now if we take a look at the top of the function we will find this
TEXT Code:
  1. if ( v7[56] & 1 )[COLOR=Red]//guess here they check for isalive[/COLOR]
  2. {
  3. v8 = *((_DWORD *)v7 + 16);
  4. v10 = (unsigned __int16)((_WORD)v8 >> 16);
  5. v9 = (*((_DWORD *)v7 + 16) >> 17) & 1;
  6. if ( v43 || v9 || (_WORD)v8 >> 16 || (unsigned __int16)(v8 & 0x8000) )
  7. {
  8. [COLOR=Red]//we need to make sure this if is true[/COLOR]
  9. [COLOR=Red]//we can do hard stuff with shifts or bitwise ands, or just take the easy way and pick v43[/COLOR]
  10. v12 = dword_96A1DC;
  11. v11 = 1;
  12. if ( *(_DWORD *)v7 > LODWORD(dword_96A1DC) )
  13. *(_DWORD *)v7 = 0;
  14. if ( *(_DWORD *)v7 < LODWORD(v12) - 500 )
  15. goto LABEL_71;
  16. }
  17. else
  18. {
  19. v11 = 0;
  20. }
  21.  
if we look something above that code we will find this
TEXT Code:
  1. v43 = *(_BYTE *)(dword_1C2C39C + 12);
hey! that looks like a cvar! + 0xC is the value, hmm lets make it have a value! (this is g_compassShowEnemies)

TEXT Code:
  1. void AdvancedUAV()
  2. {
  3. cg_t->uav = 1; [COLOR=Red]//the 0x8FF284 we found before in cg_t[/COLOR]
  4. *(BYTE*)(*(DWORD*)(0x1C2C39C) + 0xC) = 1; [COLOR=Red]// the cvar[/COLOR]
  5. }
call this every frame and you will have advanced uav at all time, have fun!
Only registered and activated users can see links.

Download MW3 UAV Memory Patch


__________________

Hallo