Results 1 to 14 of 14
  1. #1
    hutzdani's Avatar
    Join Date
    Jan 2010
    Gender
    male
    Posts
    51
    Reputation
    10
    Thanks
    5
    My Mood
    Bashful

    Public ESP - Reverse Engineering ?

    Okay im looking into editing the contents of the public ESP file that wa sposted soem time ago, is there a way to decompile the .DLL file that we inject ?

    Anyone recomend some software to do this ? as im looking to fix some issues with names tags and possibly add the clas type logos onto the esp and some other stuff also.

  2. #2
    Blubb1337's Avatar
    Join Date
    Sep 2009
    Gender
    male
    Location
    Germany
    Posts
    5,923
    Reputation
    161
    Thanks
    3,096
    I don't think there is a way to decompile that .dll.



  3. #3
    billy9999's Avatar
    Join Date
    Dec 2008
    Gender
    male
    Location
    ok
    Posts
    92
    Reputation
    10
    Thanks
    21
    My Mood
    Relaxed
    there are some programs that can only decompile a part of the .dll
    but u can try to edit it with a hex editor

  4. #4
    yozod's Avatar
    Join Date
    Jan 2008
    Gender
    male
    Posts
    61
    Reputation
    10
    Thanks
    18
    Are you a spy?

  5. #5
    TranceWulf's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Posts
    9
    Reputation
    10
    Thanks
    1
    Decompile with IDA Pro? Worked for me. It looked like it was just enabling some commands (cvars, if you will) to turn on names and health bars for other players.

  6. #6
    ~G36E~'s Avatar
    Join Date
    Feb 2010
    Gender
    male
    Posts
    3,620
    Reputation
    57
    Thanks
    424
    My Mood
    Amused
    Hex Editor?
    you can try that..

  7. #7
    TranceWulf's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Posts
    9
    Reputation
    10
    Thanks
    1
    Quote Originally Posted by lado66 View Post
    nop

    why you wann do this?
    To build exploits off of it and whatnot.

    Quote Originally Posted by Sam619 View Post
    Hex Editor?
    you can try that..
    Almost completely useless for DLLs unless you can read compiled code in hex.

  8. #8
    ~G36E~'s Avatar
    Join Date
    Feb 2010
    Gender
    male
    Posts
    3,620
    Reputation
    57
    Thanks
    424
    My Mood
    Amused
    Well then i dont have any other suggestions good luck.

  9. #9
    n0aim's Avatar
    Join Date
    Nov 2007
    Gender
    male
    Location
    Canada, Quebec
    Posts
    49
    Reputation
    10
    Thanks
    9
    My Mood
    Buzzed
    Quote Originally Posted by Sam619 View Post
    good luck.
    There you go.

  10. #10
    Koen's Avatar
    Join Date
    Jan 2010
    Gender
    male
    Location
    I don't know, you tell me bitch.
    Posts
    2,315
    Reputation
    19
    Thanks
    1,668
    My Mood
    Bored
    I do not have the source, and I don't know if the maker will give me it, sorry man

    I'll take a look around though, you can mess with some player iteration though

    Code:
    CGameBase* base = (CGameBase*)0x152AC60; // or call 0x77FF50
    
        if( base && !IsBadReadPtr(base, 4) )
        {
            if( base->EntityManager && !IsBadReadPtr(base->EntityManager, 4) )
            {
                if( base->EntityManager->LocalPlayerData )
                {
                    MessageBox(0, base->EntityManager->LocalPlayerData->Name, 0, 0 );
                }
    
                int PlayerList = base->EntityManager->GetPlayerList();
                
                int PlayerEnd  = PlayerList + 4;
                
                int i = 0;
                while(1)
                {
                    DWORD dwAddr = *(DWORD*)PlayerList + (i * 4);
            
                    if( dwAddr == *(DWORD*)PlayerEnd )
                    {
                        MessageBox(0, "Looped done", 0, 0);
                        break;
                    }
            
                    char data[256];
                    CPlayerData* player = *(CPlayerData**)dwAddr;
    
                    if(!player->IsLocal())
                    {
                        CPlayer* parent = player->GetParent();
                        if(parent)
                        {
                            sprintf(data, "[%i] %s %i [%f %f %f]", i, player->Name, player->Team, parent->X, parent->Y, parent->Z);
    
                            MessageBox(0, data, 0, 0);
                        }
                    }
                    
                
                    i++;
                }
            }
        }
    Code:
    class CGameBase
    {
    public:
        char unknown0[44];
        CEntityManager* EntityManager; //002C
    };
    class CEntityManager
    {
    public:
        virtual void Function0();
        virtual int GetPlayerList();
        virtual void Function2();
        char unknown0[176];
        CPlayerData* LocalPlayerData; //00B4
    };
    
    class CPlayer
    {
    public:
        char unknown0[528];
        CPlayerData* PlayerData; //0210
        char unknown1[188];
        float X; //02D0
        float Y; //02D4
        float Z; //02D8
    };
    
    class CPlayerData
    {
    public:
        virtual void Function0();
        virtual void Function1();
        virtual void Function2();
        virtual void Function3();
        virtual void Function4();
        virtual void Function5();
        virtual void Function6();
        virtual void Function7();
        virtual void Function8();
        virtual bool IsLocal(); // Must check before GetParent, may or may not actually check local. But the game called it, so i do too
        virtual void Function10();
        virtual void Function11();
        virtual void Function12();
        virtual CPlayer* GetParent();
        virtual void Function14();
        virtual void Function15();
        virtual void Function16();
        virtual void Function17();
        virtual void Function18();
        virtual void Function19();
        virtual void Function20();
        char unknown0[28];
        char Name[28]; //0020
        char unknown1[108];
        __int32 Team; //00A8
    };
    etc.

    NextGen1 Edit: Credits To Ghoster
    Last edited by NextGen1; 04-05-2010 at 09:17 PM.


    Check out my new topic : Medal of Honor 2010 Retail ESP / Wallhack Here



    Add me :
    On MSN
    Koenschouten@hotmail.com

  11. #11
    NextGen1's Avatar
    Join Date
    Dec 2009
    Gender
    male
    Location
    Not sure really.
    Posts
    6,324
    Reputation
    382
    Thanks
    3,007
    My Mood
    Amazed
    That player iteration belongs to Ghoster, Creds and thanks


     


     


     



    The Most complete application MPGH will ever offer - 68%




  12. #12
    Loffredo's Avatar
    Join Date
    Nov 2009
    Gender
    male
    Posts
    23
    Reputation
    10
    Thanks
    1
    It worked, so you kinda made an ESP outta that?

  13. #13
    Koen's Avatar
    Join Date
    Jan 2010
    Gender
    male
    Location
    I don't know, you tell me bitch.
    Posts
    2,315
    Reputation
    19
    Thanks
    1,668
    My Mood
    Bored
    Nah that was Ghosters iteration


    Check out my new topic : Medal of Honor 2010 Retail ESP / Wallhack Here



    Add me :
    On MSN
    Koenschouten@hotmail.com

  14. #14
    billy9999's Avatar
    Join Date
    Dec 2008
    Gender
    male
    Location
    ok
    Posts
    92
    Reputation
    10
    Thanks
    21
    My Mood
    Relaxed
    Just some example esp

    Code:
    bool ScreenProjectPoint(D3DXVECTOR3 *in, D3DXVECTOR3 *out)
    {
    	const D3DXMATRIX &m_Screen = *(D3DXMATRIX *) &g_pGameRender->RenderData->WorldTransform;
    
    	D3DXVECTOR3 Origin = (*in);
    
    	float CX = static_cast< float >( CRender::Get()->ScreenW_1 ) / 2.0f;
    	float CY = static_cast< float >( CRender::Get()->ScreenH_1 ) / 2.0f;
    
    	FLOAT w =   m_Screen.m [0][3] * Origin.x +
    				m_Screen.m [1][3] * Origin.y +
    				m_Screen.m [2][3] * Origin.z +
    				m_Screen.m [3][3];
    
    	if(w < 0.0001f)
    		return FALSE;
    
    	FLOAT x =   m_Screen.m [0][0] * Origin.x +
    				m_Screen.m [1][0] * Origin.y +
    				m_Screen.m [2][0] * Origin.z +
    				m_Screen.m [3][0]; 
    
    	FLOAT y =   m_Screen.m [0][1] * Origin.x +
    				m_Screen.m [1][1] * Origin.y +
    				m_Screen.m [2][1] * Origin.z +
    				m_Screen.m [3][1]; 
    
    	out->x = CX + CX * x / w;
    	out->y = CY - CY * y / w;
    
    	return TRUE;
    } 
    
    if(!pFirst->Information->IsLocal())
    {
    	D3DXVECTOR3 vLocalOrigin, vTargetOrigin;
    	GetOrigin( &vLocalOrigin, &pLocalPlayer->Soldier->PlayerViewMatrix );
    	GetOrigin( &vTargetOrigin, &pFirst->PlayerViewMatrix );
    
    	float flDistance = GetDistance( vLocalOrigin, vTargetOrigin );
    
    	D3DXVECTOR3 vScreen;
    	if( ScreenProjectPoint( &vTargetOrigin, &vScreen ) )
    	{
    		sprintf( cTargetInfo, "[%.1fm] %s", flDistance, pFirst->Information->Name );
    
    		if(pLocalPlayer->Team != pFirst->Information->Team)
    		{
    
    			ddraw.Text(vScreen.x, vScreen.y, Red, bold, DT_CENTER, cTargetInfo);
    
    		}else{
    
    			ddraw.Text(vScreen.x, vScreen.y, Blue, bold, DT_CENTER, cTargetInfo);
    
    		}
    	} 
    }
    note: puts tags on root of the player model

    credits: ******, GHOSTER and dogmatt/mattdog

Similar Threads

  1. [Assembly Tutorial] 40 Reverse Engineering
    By radnomguywfq3 in forum Programming Tutorials
    Replies: 22
    Last Post: 04-19-2016, 08:49 PM
  2. PUBLIC ESP HACK
    By JerbalMaster in forum Call of Duty 5 - World at War Hacks
    Replies: 12
    Last Post: 07-23-2009, 11:52 AM
  3. "fuk u lol 2"s aimbot - reverse engineered
    By NeverBorn in forum Combat Arms Hacks & Cheats
    Replies: 29
    Last Post: 06-13-2009, 10:26 PM
  4. Replies: 0
    Last Post: 10-18-2008, 07:06 PM
  5. Reverse Engineering!
    By Jeckels in forum WarRock - International Hacks
    Replies: 13
    Last Post: 11-06-2007, 10:45 PM