Hook Warden Scan menu

Shout-Out

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 16
  1. #1
    demonguy's Avatar Member
    Reputation
    2
    Join Date
    Feb 2012
    Posts
    111
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Hook Warden Scan

    I Successfully found where Warden is by scan pattern {0x74, 0x02, 0xF3, 0xA5, 0xB1, 0x03, 0x23, 0xCA}
    But i can't write it to 0xE9 for the sake of detouring it even if i call "VirtualProtect((LPVOID)WardenAddress,sizeof(DWORD),0x40,&OldProtection)" before write it
    And an error occurs "This application has requested the RunTime to terminate it in an unusual way"
    How could i handle it?

    Hook Warden Scan
  2. #2
    DrakeFish's Avatar Lazy Leecher

    Reputation
    634
    Join Date
    Nov 2008
    Posts
    569
    Thanks G/R
    0/14
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by demonguy View Post
    I Successfully found where Warden is by scan pattern {0x74, 0x02, 0xF3, 0xA5, 0xB1, 0x03, 0x23, 0xCA}
    But i can't write it to 0xE9 for the sake of detouring it even if i call "VirtualProtect((LPVOID)WardenAddress,sizeof(DWORD),0x40,&OldProtection)" before write it
    And an error occurs "This application has requested the RunTime to terminate it in an unusual way"
    How could i handle it?
    We are missing a lot of information here. Assuming you are using VirtualProtect(), I suppose you are attempting to do this from an injected DLL. You should check if VirtualProtect() is returning TRUE. If it's not, then you should call GetLastError() and see what's up. You should also do the same if you are using WriteProcessMemory(). Now is your detour executed but crashing, or are you failing to overwrite the instructions? Are you sure that you are calculating your relative JMP properly? Is your detour messing with registers or the stack without restoring them? Are you executing the instructions that your detour is overwriting and jumping back to the next untouched instruction?

  3. #3
    DarkLinux's Avatar Former Staff
    CoreCoins Purchaser Authenticator enabled
    Reputation
    1627
    Join Date
    May 2010
    Posts
    1,846
    Thanks G/R
    193/539
    Trade Feedback
    16 (100%)
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

  4. #4
    demonguy's Avatar Member
    Reputation
    2
    Join Date
    Feb 2012
    Posts
    111
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yeah, i just saw your projecta and started to try mine
    I will take a deep look

  5. #5
    demonguy's Avatar Member
    Reputation
    2
    Join Date
    Feb 2012
    Posts
    111
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Code:
    	
    if(VirtualProtect((LPVOID)WardenAddress,sizeof(DWORD),0x40,&OldProtection) == 0)
    	{
    		MessageBoxA(NULL,"0","0",0);
    	}
    
    	MessageBoxA(NULL,"1","1",0);
    	Memory::Write<byte>(CHack::WoWBase + WardenAddress , 0xE9);
    	MessageBoxA(NULL,"2","2",0);
    	Memory::Write<int>(CHack::WoWBase + WardenAddress  + 1, reinterpret_cast<unsigned int>(WardenScan) - (CHack::WoWBase + WardenAddress  + 4 + 1));
    	MessageBoxA(NULL,"3","3",0);
    here is my codes...
    no only msgBox 1 showed, before 2 shows, it encounter a fatal exception. and i still don't get it

    and my Memory:Write function will check if the write is successful, if not, it will throw a diffirent error than what i encountered
    Last edited by demonguy; 02-27-2013 at 12:02 AM.

  6. #6
    Empted's Avatar Contributor
    Reputation
    83
    Join Date
    Aug 2011
    Posts
    117
    Thanks G/R
    0/5
    Trade Feedback
    2 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'm not so sure (as DrakeFish was) you are doing it from the entire WoW process . If so, just use VirtualProtectEx to work with another process.

  7. #7
    demonguy's Avatar Member
    Reputation
    2
    Join Date
    Feb 2012
    Posts
    111
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I injected my dll into WOW process
    Oh, here i see, WardenAddress isn't rebased so i don't need to plus WowBase

  8. #8
    demonguy's Avatar Member
    Reputation
    2
    Join Date
    Feb 2012
    Posts
    111
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    besides...Will Warden scan itself?

  9. #9
    -Ryuk-'s Avatar Elite User CoreCoins Purchaser Authenticator enabled
    Reputation
    529
    Join Date
    Nov 2009
    Posts
    1,028
    Thanks G/R
    38/51
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by demonguy View Post
    besides...Will Warden scan itself?
    It can... but currently(at least with the scan you wish to hook) it doesn't.

    It should be noted that if you hook the start of the "scan function" you may experience a crash, because on some(not all) clients they do check this(but the result is not sent back to the server).

    I know that the FireHack Developer experienced this type of check too.
    |Leacher:11/2009|Donor:02/2010|Established Member:09/2010|Contributor:09/2010|Elite:08/2013|

  10. #10
    JuJuBoSc's Avatar Banned for scamming CoreCoins Purchaser
    Reputation
    1019
    Join Date
    May 2007
    Posts
    922
    Thanks G/R
    1/3
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    This function is the Warden's memcpy, so yeah, it's not used only for scan.

  11. #11
    demonguy's Avatar Member
    Reputation
    2
    Join Date
    Feb 2012
    Posts
    111
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by DarkLinux View Post
    DWORD PatternScan(Byte *Signature, char *Mask, DWORD length)
    {
    DWORD currentAddr = (DWORD)GetModuleHandle(NULL);
    DWORD Max;
    int i = 0;
    DWORD old;
    MEMORY_BASIC_INFORMATION mbi;

    do{
    VirtualQuery((LPVOID)currentAddr,&mbi,sizeof(mbi));

    if((mbi.RegionSize <= 0x9000) && (mbi.State == 4096) && (mbi.Type == 131072))
    {
    VirtualProtect((LPVOID)currentAddr,mbi.RegionSize,0x40,&old);

    if(currentAddr < Max) {
    return false;
    }else
    Max = currentAddr;

    for(int x=currentAddr; x < (currentAddr+mbi.RegionSize); x++)
    {
    if((*(BYTE*)x == Signature[i]) || Mask[i] == '?')
    i++;
    else
    i = 0;

    if(i >= length){
    return (x - length + 1);
    }
    }
    }
    currentAddr+=mbi.RegionSize;

    }while(true);
    }
    In your project, what does the uninitialized variable "Max" do? it's not initialized

  12. #12
    demonguy's Avatar Member
    Reputation
    2
    Join Date
    Feb 2012
    Posts
    111
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I see Thanks

    Another wired thing i found is that, if i call PatternScan again after i hook Warden, WOW will be unresponsive briefly when i click left mouse button,
    Does any one have the same problem?
    Last edited by demonguy; 02-27-2013 at 12:21 PM.

  13. #13
    Frosttall's Avatar Active Member
    Reputation
    64
    Join Date
    Feb 2011
    Posts
    261
    Thanks G/R
    16/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by demonguy View Post
    I see Thanks

    Another wired thing i found is that, if i call PatternScan again after i hook Warden, WOW will be unresponsive briefly when i click left mouse button,
    Does any one have the same problem?
    Are you calling it from the mainthread?

  14. #14
    demonguy's Avatar Member
    Reputation
    2
    Join Date
    Feb 2012
    Posts
    111
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Frosttall View Post
    Are you calling it from the mainthread?
    Maybe , I call it through In-Game lua. why will cause this?

  15. #15
    DarkLinux's Avatar Former Staff
    CoreCoins Purchaser Authenticator enabled
    Reputation
    1627
    Join Date
    May 2010
    Posts
    1,846
    Thanks G/R
    193/539
    Trade Feedback
    16 (100%)
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)
    I call that 4am code... who knows what 1/2 that stuff does lols... I looked over it the other day and almost killed my self laughing..

    Also all that mbi stuff is so it can find Warden a lot faster.. It does not scan over all of wow.. Makes it a little faster I guess...
    Last edited by DarkLinux; 02-27-2013 at 10:56 PM.

Page 1 of 2 12 LastLast

Similar Threads

  1. What does warden scan for?
    By Dovah in forum World of Warcraft General
    Replies: 1
    Last Post: 04-08-2014, 07:16 PM
  2. Warden Scan Info 1.0.3
    By Beaving in forum Diablo 3 Memory Editing
    Replies: 11
    Last Post: 07-15-2012, 06:31 AM
  3. Warden Scan Info
    By Beaving in forum Diablo 3 Memory Editing
    Replies: 22
    Last Post: 06-20-2012, 01:22 PM
  4. Warden Scanning for Viruses???
    By GliderPro in forum WoW Memory Editing
    Replies: 6
    Last Post: 09-05-2009, 08:25 AM
All times are GMT -5. The time now is 09:51 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search