[C++] Descriptors dumper & Find descriptor offsets menu

User Tag List

Page 3 of 4 FirstFirst 1234 LastLast
Results 31 to 45 of 57
  1. #31
    Icesythe7's Avatar Contributor
    Reputation
    231
    Join Date
    Feb 2017
    Posts
    168
    Thanks G/R
    10/111
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    heres an example in c++ btw
    Code:
    	FileVersion* GetFileVer()
    	{
    		CHAR dllPath[MAX_PATH] = { 0 };
    		GetModuleFileName(GetModuleHandleW(nullptr), reinterpret_cast<LPWSTR>(dllPath), _countof(dllPath));
    		DWORD  verHandle = 0;
    		UINT   size = 0;
    		LPBYTE lpBuffer = nullptr;
    		const auto verSize = GetFileVersionInfoSize(reinterpret_cast<LPWSTR>(dllPath), &verHandle);
    		if (verSize != NULL)
    		{
    			const auto verData = new char[verSize];
    
    			if (GetFileVersionInfo(reinterpret_cast<LPWSTR>(dllPath), verHandle, verSize, verData) && VerQueryValue(verData, L"\\", reinterpret_cast<VOID FAR * FAR*>(&lpBuffer), &size))
    			{
    				if (size)
    				{
    					const auto verInfo = reinterpret_cast<VS_FIXEDFILEINFO*>(lpBuffer);
    					if (verInfo->dwSignature == 0xfeef04bd)
    					{
    						const auto x = new FileVersion;
    						x->major = static_cast<int>(verInfo->dwFileVersionMS) >> 16 & 0xffff;
    						x->minor = static_cast<int>(verInfo->dwFileVersionMS) >> 0 & 0xffff;
    						x->bug_fix = static_cast<int>(verInfo->dwFileVersionLS) >> 16 & 0xffff;
    						x->build_number = static_cast<int>(verInfo->dwFileVersionLS) >> 0 & 0xffff;
    						return x;
    					}
    				}
    			}
    			delete[] verData;
    		}
    		return nullptr;
    	}
    Code:
    	struct FileVersion final
    	{
    		int32_t major;
    		int32_t minor;
    		int32_t bug_fix;
    		int32_t build_number;
    	};
    Code:
    const auto fv = GetFileVer();
    		std::stringstream stringStream;
    		stringStream << fv->major << "." << fv->minor << "." << fv->bug_fix << "." << fv->build_number;
    		const auto version(stringStream.str());
    		WowVersion = version.c_str();
    would output a string "1.13.3.32887" for example

    [C++] Descriptors dumper &amp; Find descriptor offsets
  2. #32
    NoxiaZ's Avatar Active Member
    Reputation
    23
    Join Date
    May 2019
    Posts
    101
    Thanks G/R
    21/12
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Icesythe7 View Post
    heres an example in c++ btw
    Code:
    	FileVersion* GetFileVer()
    	{
    		CHAR dllPath[MAX_PATH] = { 0 };
    		GetModuleFileName(GetModuleHandleW(nullptr), reinterpret_cast<LPWSTR>(dllPath), _countof(dllPath));
    		DWORD  verHandle = 0;
    		UINT   size = 0;
    		LPBYTE lpBuffer = nullptr;
    		const auto verSize = GetFileVersionInfoSize(reinterpret_cast<LPWSTR>(dllPath), &verHandle);
    		if (verSize != NULL)
    		{
    			const auto verData = new char[verSize];
    
    			if (GetFileVersionInfo(reinterpret_cast<LPWSTR>(dllPath), verHandle, verSize, verData) && VerQueryValue(verData, L"\\", reinterpret_cast<VOID FAR * FAR*>(&lpBuffer), &size))
    			{
    				if (size)
    				{
    					const auto verInfo = reinterpret_cast<VS_FIXEDFILEINFO*>(lpBuffer);
    					if (verInfo->dwSignature == 0xfeef04bd)
    					{
    						const auto x = new FileVersion;
    						x->major = static_cast<int>(verInfo->dwFileVersionMS) >> 16 & 0xffff;
    						x->minor = static_cast<int>(verInfo->dwFileVersionMS) >> 0 & 0xffff;
    						x->bug_fix = static_cast<int>(verInfo->dwFileVersionLS) >> 16 & 0xffff;
    						x->build_number = static_cast<int>(verInfo->dwFileVersionLS) >> 0 & 0xffff;
    						return x;
    					}
    				}
    			}
    			delete[] verData;
    		}
    		return nullptr;
    	}
    Code:
    	struct FileVersion final
    	{
    		int32_t major;
    		int32_t minor;
    		int32_t bug_fix;
    		int32_t build_number;
    	};
    Code:
    const auto fv = GetFileVer();
    		std::stringstream stringStream;
    		stringStream << fv->major << "." << fv->minor << "." << fv->bug_fix << "." << fv->build_number;
    		const auto version(stringStream.str());
    		WowVersion = version.c_str();
    would output a string "1.13.3.32887" for example
    That's actually a pretty cool way to do it - Think i'm going to use that as well, but i need the memory address to verify version, i have been using regex to see if bot was reading the correct version

  3. #33
    ejt's Avatar Contributor
    Reputation
    209
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/111
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Icesythe7 View Post
    heres an example in c++ btw
    Code:
    	FileVersion* GetFileVer()
    	{
    		CHAR dllPath[MAX_PATH] = { 0 };
    		GetModuleFileName(GetModuleHandleW(nullptr), reinterpret_cast<LPWSTR>(dllPath), _countof(dllPath));
    		DWORD  verHandle = 0;
    		UINT   size = 0;
    		LPBYTE lpBuffer = nullptr;
    		const auto verSize = GetFileVersionInfoSize(reinterpret_cast<LPWSTR>(dllPath), &verHandle);
    		if (verSize != NULL)
    		{
    			const auto verData = new char[verSize];
    
    			if (GetFileVersionInfo(reinterpret_cast<LPWSTR>(dllPath), verHandle, verSize, verData) && VerQueryValue(verData, L"\\", reinterpret_cast<VOID FAR * FAR*>(&lpBuffer), &size))
    			{
    				if (size)
    				{
    					const auto verInfo = reinterpret_cast<VS_FIXEDFILEINFO*>(lpBuffer);
    					if (verInfo->dwSignature == 0xfeef04bd)
    					{
    						const auto x = new FileVersion;
    						x->major = static_cast<int>(verInfo->dwFileVersionMS) >> 16 & 0xffff;
    						x->minor = static_cast<int>(verInfo->dwFileVersionMS) >> 0 & 0xffff;
    						x->bug_fix = static_cast<int>(verInfo->dwFileVersionLS) >> 16 & 0xffff;
    						x->build_number = static_cast<int>(verInfo->dwFileVersionLS) >> 0 & 0xffff;
    						return x;
    					}
    				}
    			}
    			delete[] verData;
    		}
    		return nullptr;
    	}
    Code:
    	struct FileVersion final
    	{
    		int32_t major;
    		int32_t minor;
    		int32_t bug_fix;
    		int32_t build_number;
    	};
    Code:
    const auto fv = GetFileVer();
    		std::stringstream stringStream;
    		stringStream << fv->major << "." << fv->minor << "." << fv->bug_fix << "." << fv->build_number;
    		const auto version(stringStream.str());
    		WowVersion = version.c_str();
    would output a string "1.13.3.32887" for example
    Looks like you have a memory leak where it doesn't delete the char array because it returns before the delete. Either put a delete before the 'return x' or use std::vector instead.

  4. #34
    Icesythe7's Avatar Contributor
    Reputation
    231
    Join Date
    Feb 2017
    Posts
    168
    Thanks G/R
    10/111
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ejt View Post
    Looks like you have a memory leak where it doesn't delete the char array because it returns before the delete. Either put a delete before the 'return x' or use std::vector instead.
    ah your right thanks for pointing that out!

  5. #35
    ejt's Avatar Contributor
    Reputation
    209
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/111
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Icesythe7 View Post
    ah your right thanks for pointing that out!
    np, usage of 'new' and 'delete' should almost never be used in modern C++. A byte array can be initiated using:

    Code:
    std::vector<char> bytes;
    bytes.resize(my_awesome_size);
    some_function_that_takes_byte_array(&bytes[0]);
    // or some_function_that_takes_byte_array(bytes.data());
    instead as this gives you the benefit of being exception-safe.

  6. #36
    xbec's Avatar Member
    Reputation
    3
    Join Date
    Jun 2019
    Posts
    31
    Thanks G/R
    12/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    thank you gread job...very cool!!!!

  7. #37
    Lvv's Avatar Member
    Reputation
    1
    Join Date
    Feb 2020
    Posts
    35
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I've learned here. It's really coooooooooooooooool! bro

  8. #38
    Geneditor's Avatar Member
    Reputation
    2
    Join Date
    Mar 2020
    Posts
    11
    Thanks G/R
    1/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Does anyone have a working "CooldownPtr" pattern? I am not able find the address in IDA

  9. #39
    NoxiaZ's Avatar Active Member
    Reputation
    23
    Join Date
    May 2019
    Posts
    101
    Thanks G/R
    21/12
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Geneditor View Post
    Does anyone have a working "CooldownPtr" pattern? I am not able find the address in IDA
    Have you tried using the cooldown pattern?

  10. #40
    Geneditor's Avatar Member
    Reputation
    2
    Join Date
    Mar 2020
    Posts
    11
    Thanks G/R
    1/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by NoxiaZ View Post
    Have you tried using the cooldown pattern?
    I have found it myself now, it was a bit tricky since it is only reference via a + 0x10 offset, and hence you will find no direct references to it. It is used both in "GetActionCooldown" and "GetSpellCooldown".

    Using the commented out pattern from the WowDumper source, I find an address very close to it, so the pattern should also work (which makes me wonder why it was commented out in the first place).

    Since the cooldown list does not seem to be cleared immediately after the cooldown expires, one has to check manually if the cooldown is off.

    The timestamp can be found in GetTime().
    Last edited by Geneditor; 04-17-2020 at 11:49 AM.

  11. #41
    Lvv's Avatar Member
    Reputation
    1
    Join Date
    Feb 2020
    Posts
    35
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Sorry English is not my native language. Maybe I can't express my gratitude to you in words

    I receive a lot of goods by browsing your articles

    At present, I have obtained the addresses of gameversion, objectmgrptr, etc

    Next, how can I get information about the player

    Enumerate objects?

  12. #42
    Lvv's Avatar Member
    Reputation
    1
    Join Date
    Feb 2020
    Posts
    35
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Sorry English is not my native language. Maybe I can't express my gratitude to you in words

    I receive a lot of goods by browsing your articles

    At present, I have obtained the addresses of gameversion, objectmgrptr, etc

    Next, how can I get information about the player

    Enumerate objects?

  13. #43
    ejt's Avatar Contributor
    Reputation
    209
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/111
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Lvv View Post
    Sorry English is not my native language. Maybe I can't express my gratitude to you in words

    I receive a lot of goods by browsing your articles

    At present, I have obtained the addresses of gameversion, objectmgrptr, etc

    Next, how can I get information about the player

    Enumerate objects?
    Search the forum, this has been answered so many times.

  14. #44
    bigofsmall's Avatar Member
    Reputation
    1
    Join Date
    Jan 2011
    Posts
    14
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hi Guys:

    I meet a problem when I compile the source code , it shows "C3861" error for "_state" "_address" in file "object.hpp".

    Thanks.
    Last edited by bigofsmall; 06-05-2021 at 08:56 PM.

  15. #45
    Reghero's Avatar Member
    Reputation
    11
    Join Date
    Jun 2017
    Posts
    35
    Thanks G/R
    29/7
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'm trying to fix the descriptor dump for classic with this. So far I've got it correctly looping the functions using the pattern:

    40 53 48 83 EC ? E8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ?

    Mapping to MirrorInitializeStaticDescriptors

    But I'm having issues getting it to actually retrieve the correct number of descriptors for each function. For example:



    enum CGContainerData
    {
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerData_ = CGItemDataEnd + 0, // size 0 flags: MIRROR_NONE
    CGContainerDataEnd = CGItemDataEnd + 0
    };

    When IDA shows it as two.

Page 3 of 4 FirstFirst 1234 LastLast

Similar Threads

  1. [3.0.9] Descriptors dumper by Kynox [Help]
    By naa in forum WoW Memory Editing
    Replies: 10
    Last Post: 04-14-2009, 01:56 PM
  2. Descriptors
    By Shamun in forum WoW Memory Editing
    Replies: 4
    Last Post: 11-28-2008, 09:43 PM
  3. Help w/ Obj Dumper (3.0.3)
    By luciferc in forum WoW Memory Editing
    Replies: 6
    Last Post: 11-17-2008, 12:08 PM
  4. Ultimate Programs for Phishers (Web dumper & Email Extractor)
    By Woxter in forum WoW Scam Prevention
    Replies: 6
    Last Post: 08-15-2008, 07:25 AM
  5. [SOURCE] WoW Object Dumper
    By kynox in forum WoW Memory Editing
    Replies: 13
    Last Post: 05-29-2008, 04:54 PM
All times are GMT -5. The time now is 12:19 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search