Go Back   UnKnoWnCheaTs - Multiplayer Game Hacks and Cheats > Anti-Cheat Software & Programming > Anti-Cheat Bypass

- Sponsored Advertisement -
http://www.myfpscheats.com/

Welcome to the UnKnoWnCheaTs - Multiplayer Game Hacks and Cheats.
You have to register before you can post and see and access any of the advanced forum features, please click the register link to proceed to the registration form. To start viewing threads or posts, select a forum that you want to visit from the selection below.
Anti-Cheat Bypass
punkbuster vac gameguard esl xray screenshot detection undetected source code tutorial
You are Unregistered, please register to gain Full access.    
Reply
 
Thread Tools

Old 01-30-2010, 03:49 PM   #41
n00bie

Eryklok's Avatar

Join Date: Nov 2009
Location: In your mom's basement (right next to ya)
Posts: 21
Reputation: 17
Rep Power: 28
Eryklok has made posts that are generally average in quality
Quote:
Originally Posted by dedead3232 View Post
Go here..this should help. http://www.uc-forum.com/tutorials/c-...esson-2-a.html and this too Getting Started With Game Hacking: The Definitive Guide (Part 1)


And If you still have any questions just pm me. But please don't pm until you have read all of that...why? Because Im reading it too...and I am very slow at reading.
Didn't really help me man... I'm looking for a way to change that source code into a dll I know the basics already...
Eryklok is offline

Reply With Quote


Old 01-30-2010, 04:32 PM   #42
Senior Member

dedead3232's Avatar

Join Date: Oct 2008
Location: United States
Posts: 75
Reputation: 1821
Rep Power: 59
dedead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all diededead3232 -- If this mans rep is lowered; we will all die
Points: 3,564, Level: 5
Points: 3,564, Level: 5 Points: 3,564, Level: 5 Points: 3,564, Level: 5
Activity: 1.2%
Activity: 1.2% Activity: 1.2% Activity: 1.2%
Last Achievements
It's simple copy and paste it and compile it. Open up Visual studio and goto file/new and select project. Then choose win32 console application. Name it, next/next choose dll and click the box that says empty project. There ya go, now right click on the source files folder and click on add/add new item. Choose .cpp file and name it main. Copy and paste Nov's information in there and then goto the build tab then click on rebuild. If you did everything correctly you shouldn't get any errors or warnings. And if for some off chance you do get errors and warnings.....don't ask about them here...google it...spend 3 weeks trying to find out what the hell a linker error is lol. Like I did, good luck.
dedead3232 is online now

Reply With Quote

Old 01-31-2010, 05:30 AM   #43
n00bie

Eryklok's Avatar

Join Date: Nov 2009
Location: In your mom's basement (right next to ya)
Posts: 21
Reputation: 17
Rep Power: 28
Eryklok has made posts that are generally average in quality
Thumbs up

Quote:
Originally Posted by dedead3232 View Post
It's simple copy and paste it and compile it. Open up Visual studio and goto file/new and select project. Then choose win32 console application. Name it, next/next choose dll and click the box that says empty project. There ya go, now right click on the source files folder and click on add/add new item. Choose .cpp file and name it main. Copy and paste Nov's information in there and then goto the build tab then click on rebuild. If you did everything correctly you shouldn't get any errors or warnings. And if for some off chance you do get errors and warnings.....don't ask about them here...google it...spend 3 weeks trying to find out what the hell a linker error is lol. Like I did, good luck.

Thank you VERY much, I'll test it as soon as I put VS C++ on my PC again.

+ Rep
Eryklok is offline

Reply With Quote

Old 02-06-2010, 03:03 PM   #44
My household appliance is on drugs. Horrible.

s0beit's Avatar

Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70378
Rep Power: 796
s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!
Recognitions:
Members who have contributed financial support towards UnKnoWnCheaTs. Donation (1)
Points: 46,529, Level: 32
Points: 46,529, Level: 32 Points: 46,529, Level: 32 Points: 46,529, Level: 32
Activity: 2.2%
Activity: 2.2% Activity: 2.2% Activity: 2.2%
Last Achievements
NtQueryVirualMemory, which is what "VirtualQuery" calls is an NT function that VAC2 calls, even with hiding from usermode,
there is a possibility VAC2 can detect a usermode "hidden" module, by checking if the "MEMORY_BASIC_INFORMATION::Type" flag is set to "MEM_IMAGE" or something like that.

This "MEMORY_BASIC_INFORMATION" is pulled from the Kernel level, you can not hide from this if your module is loaded with LoadLibraryA _AT ALL_ from your userland module.

Manual Mapping will save you, which is why i have been working on it recently, but your memory image will possibly still return "MEM_MAPPED" and may even be detected from there!

Kernel hooking or hooking NT functions on Steam.exe may save you, however, the hooking of NT functions (EAT, IAT, Detour) may be checked, and if you are going to make a kernel hook you might as well just make the entire thing kernel based
__________________
s0beit is offline

Reply With Quote

Old 02-07-2010, 09:19 PM   #45
n00bie

KumaT's Avatar

Join Date: Jan 2010
Posts: 11
Reputation: 38
Rep Power: 25
KumaT has made posts that are generally average in quality
@s0beit
doing manual mapping is a lot of work to get everything right, from my personal experience its simpler to avoid the usage of a dll.
I'm sure you know the CreateRemoteThread & WriteProcessMemory thechnique to inject code into a target process. Simply allocate memory for your functions, copy the code to the heap do the fixes for calls and jumps. (like you would do in manual mapping) If you wan't to avoid doing the fixups use function pointers and do relative addressing.
Its a pretty unusual method in gamehacking but there is a lot of information about it related with exploits and rootkits.

A good source of information for manual mapping:
http://www.codebreakers-journal.com/...Own_Packer.pdf
KumaT is offline

Reply With Quote

Old 02-08-2010, 06:05 AM   #46
Nov
The Legendary Cheater

Nov's Avatar

Threadstarter
Join Date: Nov 2008
Location: Sweden
Posts: 486
Reputation: 17501
Rep Power: 224
Nov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UC
Points: 13,971, Level: 15
Points: 13,971, Level: 15 Points: 13,971, Level: 15 Points: 13,971, Level: 15
Activity: 1.2%
Activity: 1.2% Activity: 1.2% Activity: 1.2%
Last Achievements
It's called codecaving ;o
__________________
Moo. ‾\(º_˚ )/‾
Nov is online now

Reply With Quote

Old 02-08-2010, 08:51 AM   #47
My household appliance is on drugs. Horrible.

s0beit's Avatar

Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70378
Rep Power: 796
s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!
Recognitions:
Members who have contributed financial support towards UnKnoWnCheaTs. Donation (1)
Points: 46,529, Level: 32
Points: 46,529, Level: 32 Points: 46,529, Level: 32 Points: 46,529, Level: 32
Activity: 2.2%
Activity: 2.2% Activity: 2.2% Activity: 2.2%
Last Achievements
KumaT: that is basically what manual mapping is, allocate your module and execute (among other things) its DllMain function after doing all the fixups, so far my loader is working pretty perfectly with the exception of a few final bugs i need to remove.
__________________
s0beit is offline

Reply With Quote

Old 02-08-2010, 10:09 AM   #48
n00bie

KumaT's Avatar

Join Date: Jan 2010
Posts: 11
Reputation: 38
Rep Power: 25
KumaT has made posts that are generally average in quality
I don't mean codecaving, you don't allocate memory if you use a code cave you only use existing unused memory to store your code there. ^^

Yes my recomendation is pretty similar to manual mapping of a DLL, but you don't need to map the whole DLL. If you map a DLL there are always things which can be found, like the PE header and other stuff. If your already doing maual mapping you can leave out the overhead of Windows. You only need some memory where your code resides may it be a codecave or some allocated space on the heap.

I try to explain what i mean, the memorylayout is like this

Code:
struct
{
      function_pointers; //this is like a IAT
      function_pointer_VirtualProtect;
      global_variables;
}
function1()
{
      do some stuff;
      call function_pointer_VirtualProtect;
      do some other stuff;
}
function2()
{
      call function1;
}
The struct acts as your IAT and data section, the calls and jumps are relative so you dont need to do any fixes. After you injected a thread into your target you do the same as in manual mapping, you fill the function pointers with the addresses you got from GetProcAddress or by manualy searching the EAT.
KumaT is offline

Reply With Quote

Old 02-09-2010, 06:18 AM   #49
My household appliance is on drugs. Horrible.

s0beit's Avatar

Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70378
Rep Power: 796
s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!
Recognitions:
Members who have contributed financial support towards UnKnoWnCheaTs. Donation (1)
Points: 46,529, Level: 32
Points: 46,529, Level: 32 Points: 46,529, Level: 32 Points: 46,529, Level: 32
Activity: 2.2%
Activity: 2.2% Activity: 2.2% Activity: 2.2%
Last Achievements
i may work on a project like that in the future then, i have a few ideas, but right now this isn't a part of vac2 discussion really ;p
__________________
s0beit is offline

Reply With Quote

Old 02-15-2010, 12:22 PM   #50
n00bie

Gekkepop's Avatar

Join Date: Feb 2010
Posts: 21
Reputation: 10
Rep Power: 25
Gekkepop has made posts that are generally average in quality
Points: 1,542, Level: 3
Points: 1,542, Level: 3 Points: 1,542, Level: 3 Points: 1,542, Level: 3
Activity: 5.9%
Activity: 5.9% Activity: 5.9% Activity: 5.9%
Last Achievements
Hi vac2 makes a temp file they say.
~XXXX.temp data(238kb)



now i cleaned all the files in the temp map, start codmw2 multyplayer again and now i see ~74d9.tmp this is the vac file i resume








when i start steam and inject Ultimate_Vac_Blocker and i start codmw2 i see the vac temp file creation
This is not good i think??????

But when i use the steamloader and start the codmw2 i see not the vac temp file

is the Ultimate_Vac_Blocker not woring?

Last edited by Gekkepop; 02-15-2010 at 12:37 PM.
Gekkepop is online now

Reply With Quote

Old 02-15-2010, 01:07 PM   #51
Nov
The Legendary Cheater

Nov's Avatar

Threadstarter
Join Date: Nov 2008
Location: Sweden
Posts: 486
Reputation: 17501
Rep Power: 224
Nov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UCNov Will always be a legend at UC
Points: 13,971, Level: 15
Points: 13,971, Level: 15 Points: 13,971, Level: 15 Points: 13,971, Level: 15
Activity: 1.2%
Activity: 1.2% Activity: 1.2% Activity: 1.2%
Last Achievements
I have no idea about that specific blocker, however most of them just use PNP exploit and similiar, meaning they dont block VAC from creating & running, just blocks its communication & scanning.
__________________
Moo. ‾\(º_˚ )/‾
Nov is online now

Reply With Quote

Old 02-16-2010, 03:52 PM   #52
n00bie

hoschi111's Avatar

Join Date: Feb 2010
Posts: 18
Reputation: 12
Rep Power: 25
hoschi111 has made posts that are generally average in quality
Points: 1,450, Level: 3
Points: 1,450, Level: 3 Points: 1,450, Level: 3 Points: 1,450, Level: 3
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
Last Achievements
Hello Nov,
this posted Source is really great =)

But, i get an error with the function: CheckForVAC2
error C2065: 'szVac2Module'
error C2065: 'szVac2Module'
error C2065: 'dwVac2Base'
error C2065: 'dwVac2Base'
error C2065: 'dwOldVac2Base'
error C2065: 'dwVac2Size'

Should i include something else?

Thanks for help.
~ hoschi
hoschi111 is offline

Reply With Quote

Old 02-17-2010, 05:37 PM   #53
Level Neo-Nazi

Big Dave's Avatar

Join Date: May 2007
Location: ˙sʇǝuɹǝʇuı ǝɥʇ
Posts: 1,122
Reputation: 44174
Rep Power: 522
Big Dave has a huge epeen!Big Dave has a huge epeen!Big Dave has a huge epeen!Big Dave has a huge epeen!Big Dave has a huge epeen!Big Dave has a huge epeen!Big Dave has a huge epeen!Big Dave has a huge epeen!Big Dave has a huge epeen!Big Dave has a huge epeen!Big Dave has a huge epeen!
Recognitions:
The UC Member of the Month award is a prestigious award given to a single community member on a monthly basis. Based on a vote by UnKnoWnCheaTs staff, the award is given to the forum member that has shown exemplary achievement and potential in the UnKnoWnCheaTs community, and has shown great commitment to upholding the principles upon which UnKnoWnCheaTs stands for. A member who has been awarded the Member of the Month award has been distinguished as an asset to the UnKnoWnCheaTs community. Member of the Month
Points: 33,198, Level: 27
Points: 33,198, Level: 27 Points: 33,198, Level: 27 Points: 33,198, Level: 27
Activity: 1.1%
Activity: 1.1% Activity: 1.1% Activity: 1.1%
Last Achievements
Quote:
Originally Posted by hoschi111 View Post
Hello Nov,
this posted Source is really great =)

But, i get an error with the function: CheckForVAC2
error C2065: 'szVac2Module'
error C2065: 'szVac2Module'
error C2065: 'dwVac2Base'
error C2065: 'dwVac2Base'
error C2065: 'dwOldVac2Base'
error C2065: 'dwVac2Size'

Should i include something else?

Thanks for help.
~ hoschi
Yes, you should #include <CPlusPlusSkills.h>
__________________
http://i49.tinypic.com/j993tj.png


CSS hax: 0% AAO hax: 0%
Gaying up my signature with pointless progress meters in a vain attempt to show off: 100%

Last edited by Big Dave; 02-18-2010 at 03:45 PM.
Big Dave is offline

Reply With Quote

Old 02-18-2010, 04:01 PM   #54
n00bie

hoschi111's Avatar

Join Date: Feb 2010
Posts: 18
Reputation: 12
Rep Power: 25
hoschi111 has made posts that are generally average in quality
Points: 1,450, Level: 3
Points: 1,450, Level: 3 Points: 1,450, Level: 3 Points: 1,450, Level: 3
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
Last Achievements
Funny, idiot!
Nobody here to help?
hoschi111 is offline

Reply With Quote

Old 02-18-2010, 04:10 PM   #55
My household appliance is on drugs. Horrible.

s0beit's Avatar

Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70378
Rep Power: 796
s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!
Recognitions:
Members who have contributed financial support towards UnKnoWnCheaTs. Donation (1)
Points: 46,529, Level: 32
Points: 46,529, Level: 32 Points: 46,529, Level: 32 Points: 46,529, Level: 32
Activity: 2.2%
Activity: 2.2% Activity: 2.2% Activity: 2.2%
Last Achievements
There is actually a vtable in steam you can hook to stop vac2 loading, if vac2 not loading still actually works.

[Finds it as he posts]

here it is, steamclient.dll, CVAC class
PHP Code:
class IVAC
{
public:
    
virtual bool BVACCreateProcess(  
        
void *lpVACBlob,
        
unsigned int cbBlobSize,
        const 
char *lpApplicationName,
        
char *lpCommandLine,
        
uint32 dwCreationFlags,
        
void *lpEnvironment,
        
char *lpCurrentDirectory,
        
uint32 nGameID
        
) = 0;

    
virtual void KillAllVAC() = 0;

    
virtual uint8 *PbLoadVacBlobint *pcbVacBlob ) = 0;
    
virtual void FreeVacBlobuint8 *pbVacBlob ) = 0;

    
virtual void RealHandleVACChallengeint nClientGameIDuint8 *pubChallengeint cubChallenge ) = 0;
}; 
When the blob is created as a temp file, it uses the information in the function "PbLoadVacBlob", which looks exactly like this:
PHP Code:
void *__cdecl PbLoadVacBlob(int outBlob)
{
  
HANDLE v1// eax@1
  
void *v2// edi@1
  
void *result// eax@2
  
DWORD v4// esi@3
  
void *v5// ebx@3
  
DWORD NumberOfBytesRead// [sp+4h] [bp-4h]@3

  
v1 CreateFileA("..\\external_common\\SourceInit.dat"0x80000000u1u03u0x80u0);
  
v2 v1;
  if ( 
v1 == (HANDLE)-)
  {
    
result 0;
  }
  else
  {
    
v4 GetFileSize(v10);
    
v5 = (void *)((int (__stdcall *)(DWORD_DWORDsigned int_DWORD))*(&g_pMemAllocSteam 1))(
                   
v4,
                   
".\\inoculator.cpp",
                   
862,
                   
0);
    
ReadFile(v2v5v4, &NumberOfBytesRead0);
    
CloseHandle(v2);
    *(
_DWORD *)outBlob v4;
    
result v5;
  }
  return 
result;

That function is called by another function, inline style, the function that calls it is part of the IVAC class

Code:
.text:381B3320 LoadVacBlob     proc near               ; DATA XREF: .rdata:3832F538o
.text:381B3320
.text:381B3320 arg_0           = dword ptr  8
.text:381B3320
.text:381B3320                 push    ebp
.text:381B3321                 mov     ebp, esp
.text:381B3323                 mov     eax, [ebp+arg_0]
.text:381B3326                 push    eax
.text:381B3327                 call    PbLoadVacBlob
.text:381B332C                 add     esp, 4
.text:381B332F                 pop     ebp
.text:381B3330                 retn    4
.text:381B3330 LoadVacBlob     endp
Code:
.rdata:3832F534 CVAC            dd offset sub_381B3150  ; DATA XREF: sub_3815DC50+A89o
.rdata:3832F534                                         ; sub_381B2F20+Do ...
.rdata:3832F538                 dd offset LoadVacBlob
.rdata:3832F53C                 dd offset sub_381B3340
.rdata:3832F540                 dd offset sub_381B31A0
.rdata:3832F544                 dd offset sub_381B2FA0
All of this is easy to view and trace because, "SourceInit.dat" IS the vac2.dll.

edit: furthermore,

PHP Code:
.text:3816A141                 push    offset aM_vac   "m_VAC"
.text:3816A146                 lea     eax, [edi+6A0h]
.
text:3816A14C                 push    eax
.text:3816A14D                 push    offset aCvac    "CVAC"
.text:3816A152                 mov     ecxebx
.text:3816A154                 call    esi CValidator::Push(char const *,void *,char const *) ; CValidator::Push(char const *,void *,char const *) 
edit2: FURTHERMORE....
PHP Code:
.text:38165F50 User__RunFrame  proc near 
Calls stuff like this

PHP Code:
.text:381662DF                 lea     esi, [ebx+6A0h]
.
text:381662E5                 call    VAC2_Update_Info 
PHP Code:
int __usercall VAC2_Update_Info<eax>(int pVAC<esi>)
{
  
int v1// edi@5
  
int v2// ebx@6
  
time_t *v3// eax@7
  
int v4// ST00_4@7
  
char v6// [sp+0h] [bp-804h]@7
  
int mutex// [sp+800h] [bp-4h]@1

  
mutex pVAC 0x1C;
  
CThreadMutex__Lock(pVAC 0x1C);
  if ( *(
_DWORD *)(pVAC 0x3C) )
  {
    if ( *(
_BYTE *)(pVAC 5) )
    {
      if ( !
PeekNamedPipe_NULLMessage_(*(HANDLE **)(pVAC 0x3C)) )
      {
        *(
_DWORD *)(pVAC 0xC) = GpdwTime;
        *(
_BYTE *)(pVAC 5) = 0;
      }
    }
  }
  
v1 = *(_DWORD *)(pVAC 0x3C);
  if ( 
v1 )
  {
    
v2 = *(_DWORD *)(v1 0x24);
    if ( 
v2 )
    {
      
unknown_libname_47(&v6v1 0x28, *(_DWORD *)(v1 0x24));
      
v3 GpdwTime;
      *(
_DWORD *)(v1 0x24) = 0;
      
v4 = *(_DWORD *)(pVAC 0x14);
      *(
_DWORD *)(pVAC 0x10) = v3;
      
VAC2_Update_Info_002(v4, (int)&v6v2);
    }
  }
  return 
CThreadMutex__Unlock(mutex);

edit3: FURTHERMORE:
PHP Code:
    if ( sub_38166380(v1) )
    {
      
VAC2_Update_Info(v1 0x6A0);
    }
    else
    {
      if ( *(
_DWORD *)(v1 0x6F0) )
      {
        if ( *(
_DWORD *)(v1 0x6F4) )
        {
          
CloseHandle(*(HANDLE *)(v1 0x6F4));
          *(
_DWORD *)(v1 0x6F4) = 0;
        }
        if ( *(
_DWORD *)(v1 0x6F0) )
        {
          
UnmapViewOfFile(*(LPCVOID *)(v1 0x6F0));
          *(
_DWORD *)(v1 0x6F0) = 0;
        }
        if ( *(
_DWORD *)(v1 0x6EC) )
        {
          
CloseHandle(*(HANDLE *)(v1 0x6EC));
          *(
_DWORD *)(v1 0x6EC) = 0;
        }
      }
      (**(
void (__thiscall ***)(_DWORD))(v1 0x6A0))(v1 0x6A0);
    } 
__________________

Last edited by s0beit; 02-18-2010 at 06:07 PM.
s0beit is offline

Reply With Quote

Old 02-19-2010, 10:53 PM   #56
Senior Member

d4op1's Avatar

Join Date: Apr 2009
Posts: 78
Reputation: 2855
Rep Power: 64
d4op1 is a legend in the cheating communityd4op1 is a legend in the cheating communityd4op1 is a legend in the cheating communityd4op1 is a legend in the cheating communityd4op1 is a legend in the cheating communityd4op1 is a legend in the cheating communityd4op1 is a legend in the cheating communityd4op1 is a legend in the cheating communityd4op1 is a legend in the cheating communityd4op1 is a legend in the cheating communityd4op1 is a legend in the cheating community
Points: 4,860, Level: 7
Points: 4,860, Level: 7 Points: 4,860, Level: 7 Points: 4,860, Level: 7
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
Last Achievements
s0beit have you seen my CSS hack? d4CSS

I use the SteamDllMain export in SteamUI.dll to inject the dll into Steam.exe and then I use DetourCreateProcessWithDllA to inject into hl2.exe
d4op1 is offline

Reply With Quote

Old 02-20-2010, 02:27 AM   #57
My household appliance is on drugs. Horrible.

s0beit's Avatar

Join Date: Oct 2005
Location: ALWAYS WON NEVER DEFEAT
Posts: 812
Reputation: 70378
Rep Power: 796
s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!s0beit has a huge epeen!
Recognitions:
Members who have contributed financial support towards UnKnoWnCheaTs. Donation (1)
Points: 46,529, Level: 32
Points: 46,529, Level: 32 Points: 46,529, Level: 32 Points: 46,529, Level: 32
Activity: 2.2%
Activity: 2.2% Activity: 2.2% Activity: 2.2%
Last Achievements
it is interesting, to inject from steam with steam, thanks for that info.

now people should play with steam...
__________________
s0beit is offline

Reply With Quote

Old 02-23-2010, 08:16 PM   #58
1337 H4x0!2

anamaniac's Avatar

Join Date: Dec 2009
Posts: 121
Reputation: 148
Rep Power: 30
anamaniac is in the shadow of all hacking legendsanamaniac is in the shadow of all hacking legends
Quote:
Originally Posted by s0beit View Post
There is actually a vtable in steam you can hook to stop vac2 loading, if vac2 not loading still actually works.

[Finds it as he posts]

here it is, steamclient.dll, CVAC class
PHP Code:
class IVAC
{
public:
    
virtual bool BVACCreateProcess(  
        
void *lpVACBlob,
        
unsigned int cbBlobSize,
        const 
char *lpApplicationName,
        
char *lpCommandLine,
        
uint32 dwCreationFlags,
        
void *lpEnvironment,
        
char *lpCurrentDirectory,
        
uint32 nGameID
        
) = 0;

    
virtual void KillAllVAC() = 0;

    
virtual uint8 *PbLoadVacBlobint *pcbVacBlob ) = 0;
    
virtual void FreeVacBlobuint8 *pbVacBlob ) = 0;

    
virtual void RealHandleVACChallengeint nClientGameIDuint8 *pubChallengeint cubChallenge ) = 0;
}; 
When the blob is created as a temp file, it uses the information in the function "PbLoadVacBlob", which looks exactly like this:
PHP Code:
void *__cdecl PbLoadVacBlob(int outBlob)
{
  
HANDLE v1// eax@1
  
void *v2// edi@1
  
void *result// eax@2
  
DWORD v4// esi@3
  
void *v5// ebx@3
  
DWORD NumberOfBytesRead// [sp+4h] [bp-4h]@3

  
v1 CreateFileA("..\\external_common\\SourceInit.dat"0x80000000u1u03u0x80u0);
  
v2 v1;
  if ( 
v1 == (HANDLE)-)
  {
    
result 0;
  }
  else
  {
    
v4 GetFileSize(v10);
    
v5 = (void *)((int (__stdcall *)(DWORD_DWORDsigned int_DWORD))*(&g_pMemAllocSteam 1))(
                   
v4,
                   
".\\inoculator.cpp",
                   
862,
                   
0);
    
ReadFile(v2v5v4, &NumberOfBytesRead0);
    
CloseHandle(v2);
    *(
_DWORD *)outBlob v4;
    
result v5;
  }
  return 
result;

That function is called by another function, inline style, the function that calls it is part of the IVAC class

Code:
.text:381B3320 LoadVacBlob     proc near               ; DATA XREF: .rdata:3832F538o
.text:381B3320
.text:381B3320 arg_0           = dword ptr  8
.text:381B3320
.text:381B3320                 push    ebp
.text:381B3321                 mov     ebp, esp
.text:381B3323                 mov     eax, [ebp+arg_0]
.text:381B3326                 push    eax
.text:381B3327                 call    PbLoadVacBlob
.text:381B332C                 add     esp, 4
.text:381B332F                 pop     ebp
.text:381B3330                 retn    4
.text:381B3330 LoadVacBlob     endp
Code:
.rdata:3832F534 CVAC            dd offset sub_381B3150  ; DATA XREF: sub_3815DC50+A89o
.rdata:3832F534                                         ; sub_381B2F20+Do ...
.rdata:3832F538                 dd offset LoadVacBlob
.rdata:3832F53C                 dd offset sub_381B3340
.rdata:3832F540                 dd offset sub_381B31A0
.rdata:3832F544                 dd offset sub_381B2FA0
All of this is easy to view and trace because, "SourceInit.dat" IS the vac2.dll.

edit: furthermore,

PHP Code:
.text:3816A141                 push    offset aM_vac   "m_VAC"
.text:3816A146                 lea     eax, [edi+6A0h]
.
text:3816A14C                 push    eax
.text:3816A14D                 push    offset aCvac    "CVAC"
.text:3816A152                 mov     ecxebx
.text:3816A154                 call    esi CValidator::Push(char const *,void *,char const *) ; CValidator::Push(char const *,void *,char const *) 
edit2: FURTHERMORE....
PHP Code:
.text:38165F50 User__RunFrame  proc near 
Calls stuff like this

PHP Code:
.text:381662DF                 lea     esi, [ebx+6A0h]
.
text:381662E5                 call    VAC2_Update_Info 
PHP Code:
int __usercall VAC2_Update_Info<eax>(int pVAC<esi>)
{
  
int v1// edi@5
  
int v2// ebx@6
  
time_t *v3// eax@7
  
int v4// ST00_4@7
  
char v6// [sp+0h] [bp-804h]@7
  
int mutex// [sp+800h] [bp-4h]@1

  
mutex pVAC 0x1C;
  
CThreadMutex__Lock(pVAC 0x1C);
  if ( *(
_DWORD *)(pVAC 0x3C) )
  {
    if ( *(
_BYTE *)(pVAC 5) )
    {
      if ( !
PeekNamedPipe_NULLMessage_(*(HANDLE **)(pVAC 0x3C)) )
      {
        *(
_DWORD *)(pVAC 0xC) = GpdwTime;
        *(
_BYTE *)(pVAC 5) = 0;
      }
    }
  }
  
v1 = *(_DWORD *)(pVAC 0x3C);
  if ( 
v1 )
  {
    
v2 = *(_DWORD *)(v1 0x24);
    if ( 
v2 )
    {
      
unknown_libname_47(&v6v1 0x28, *(_DWORD *)(v1 0x24));
      
v3 GpdwTime;
      *(
_DWORD *)(v1 0x24) = 0;
      
v4 = *(_DWORD *)(pVAC 0x14);
      *(
_DWORD *)(pVAC 0x10) = v3;
      
VAC2_Update_Info_002(v4, (int)&v6v2);
    }
  }
  return 
CThreadMutex__Unlock(mutex);

edit3: FURTHERMORE:
PHP Code:
    if ( sub_38166380(v1) )
    {
      
VAC2_Update_Info(v1 0x6A0);
    }
    else
    {
      if ( *(
_DWORD *)(v1 0x6F0) )
      {
        if ( *(
_DWORD *)(v1 0x6F4) )
        {
          
CloseHandle(*(HANDLE *)(v1 0x6F4));
          *(
_DWORD *)(v1 0x6F4) = 0;
        }
        if ( *(
_DWORD *)(v1 0x6F0) )
        {
          
UnmapViewOfFile(*(LPCVOID *)(v1 0x6F0));
          *(
_DWORD *)(v1 0x6F0) = 0;
        }
        if ( *(
_DWORD *)(v1 0x6EC) )
        {
          
CloseHandle(*(HANDLE *)(v1 0x6EC));
          *(
_DWORD *)(v1 0x6EC) = 0;
        }
      }
      (**(
void (__thiscall ***)(_DWORD))(v1 0x6A0))(v1 0x6A0);
    } 
wow youve done a lot of work. gj

but yea, that unloading would only work on mw2, and css youd somehow have to handle the communication between u and the server yourself or something.
anamaniac is offline

Reply With Quote

Old 03-22-2010, 08:29 AM   #59
wav


wav's Avatar

Join Date: Mar 2010
Location: In hell with Satan.
Posts: 12
Reputation: 147
Rep Power: 0
wav is in the shadow of all hacking legendswav is in the shadow of all hacking legends
Quote:
Originally Posted by s0beit View Post
NtQueryVirualMemory, which is what "VirtualQuery" calls is an NT function that VAC2 calls, even with hiding from usermode,
there is a possibility VAC2 can detect a usermode "hidden" module, by checking if the "MEMORY_BASIC_INFORMATION::Type" flag is set to "MEM_IMAGE" or something like that.
Yes VAC:2 walks all pages of memory with VirtualQueryEx looking for pages marked MEM_IMAGE and comparing them against loaded modules. If it finds a mismatch they call GetMappedFileName which detects unlinked modules.

Quote:
This "MEMORY_BASIC_INFORMATION" is pulled from the Kernel level, you can not hide from this if your module is loaded with LoadLibraryA _AT ALL_ from your userland module.
That's right. However one way is to map above 4 gb boundary which requires a 64 bit OS.

Quote:
Manual Mapping will save you, which is why i have been working on it recently, but your memory image will possibly still return "MEM_MAPPED" and may even be detected from there!
Yes manually mapping will save you but on the second portion you're wrong.

Quote:
Kernel hooking or hooking NT functions on Steam.exe may save you, however, the hooking of NT functions (EAT, IAT, Detour) may be checked, and if you are going to make a kernel hook you might as well just make the entire thing kernel based
VAC:2 checks it's "IAT" for hooks and checks their scan code with a checksum after it's been decoded.

Quote:
Originally Posted by KumaT View Post
@s0beit
doing manual mapping is a lot of work to get everything right, from my personal experience its simpler to avoid the usage of a dll.
I'm sure you know the CreateRemoteThread & WriteProcessMemory thechnique to inject code into a target process. Simply allocate memory for your functions, copy the code to the heap do the fixes for calls and jumps. (like you would do in manual mapping) If you wan't to avoid doing the fixups use function pointers and do relative addressing.
Its a pretty unusual method in gamehacking but there is a lot of information about it related with exploits and rootkits.

A good source of information for manual mapping:
http://www.codebreakers-journal.com/...Own_Packer.pdf
wtf are you doing please
wav is offline

Reply With Quote

Old 03-23-2010, 01:25 AM   #60
A God

100Proof's Avatar

Join Date: Jul 2009
Posts: 194
Reputation: 6998
Rep Power: 104
100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS100Proof DEFINES UNKNOWNCHEATS
Points: 5,818, Level: 8
Points: 5,818, Level: 8 Points: 5,818, Level: 8 Points: 5,818, Level: 8
Activity: 10.3%
Activity: 10.3% Activity: 10.3% Activity: 10.3%
Last Achievements
Wink

lol, didn't take wav long to get banned.................
100Proof is online now

Reply With Quote
Reply  

  • Submit Thread to Digg
  • Submit Thread to del.icio.us
  • Submit Thread to StumbleUpon
  • Submit Thread to Google
  • Submit Thread to Facebook
  • Submit Thread to My Yahoo!
  • Submit Thread to MySpace
  • Submit Thread to Twitter
  • Submit Thread to Reddit



Tags
bypassing, vac2
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 Off



All times are GMT +1. The time now is 03:01 PM.