Some stupid questions menu

User Tag List

Results 1 to 6 of 6
  1. #1
    tcpa252's Avatar Private
    Reputation
    1
    Join Date
    Aug 2011
    Posts
    3
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Some stupid questions

    Hello everyone, I'm sorry in advance if this is not the right place to ask for such help but I'm an newbie w/o any previous disassembler experience seeking for any knowledge on how to extract opcodes from World of Warcraft game client.
    As far as I read to achieve what I want there are some things needed:
    1. Ida disassembler (got v6.1)
    2. Ida db for particular wow client ver. (got one by TOM_RUS for client 14480)
    3. Ofsets at which handler functions are located in game client executable (Paste2: Next Generation Pastebin - Viewing Paste 1572547 by TOM_RUS for client ver 14480.)

    Now, the stupid question part.
    1. What does mean "offsets are not rebased"? That is, I did a full decompile of game executable in ida and then searched for any of those handler function fuctions using the TOM_RUS offsets. Ida finds everything correctly, so why should people be warned that ofsets are not rebased?
    2. Whats the process of sniffing SMSG opcodes? For eg. I want to sniff opcode for SMSG_AUTH_CHALLENGE? In TOM_RUS offset list I see 3 occurences of *_SMSG_AUTH_CHALENGE function, because SMSG is server->client i should probably look into "6B47C0 PacketRead_SMSG_AUTH_CHALLENGE"? From full decompile i get this function:
    Code:
    char __thiscall PacketRead_SMSG_AUTH_CHALLENGE(void *this, int a2)
    {
      void *v2; // esi@1
    
      v2 = this;
      CDataStore::GetInt32((char *)this + 16);
      CDataStore::GetInt32((char *)v2 + 24);
      CDataStore::GetInt32((char *)v2 + 44);
      CDataStore::GetInt32((char *)v2 + 28);
      CDataStore::GetInt32((char *)v2 + 52);
      CDataStore::GetInt8(a2, (int)((char *)v2 + 48));
      CDataStore::GetInt32((char *)v2 + 32);
      CDataStore::GetInt32((char *)v2 + 20);
      CDataStore::GetInt32((char *)v2 + 36);
      CDataStore::GetInt32((char *)v2 + 40);
      return 1;
    }
    Now the question is, how I can find what opcode this function expects?
    I will be extremely grateful to whomever teaches me how to do this black magic.

    Some stupid questions
  2. #2
    Jens's Avatar Contributor
    Reputation
    179
    Join Date
    Sep 2006
    Posts
    251
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    #1. World of Warcraft uses ASLR, so in IDA you end up with all the addresses + 0x00400000 IIRC, if you want to use the addresses you find in IDA you will have to subtract that, and then add the address of the main module of the wow.exe process.

  3. #3
    tcpa252's Avatar Private
    Reputation
    1
    Join Date
    Aug 2011
    Posts
    3
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Okay, ty for pointing it out, one question is partially answered, btw how do you get the address of the main module of wow.exe process? And why should we do(what does it give us) :
    offset - 0x00400000 + main module of wow.exe based address?

    Edit:
    to get base address something like this could be used?
    Code:
    IntPtr wowBase = wow.MainModule.BaseAddress;
    Last edited by tcpa252; 08-10-2011 at 02:04 PM.

  4. #4
    namreeb's Avatar Legendary

    Reputation
    658
    Join Date
    Sep 2008
    Posts
    1,023
    Thanks G/R
    7/215
    Trade Feedback
    0 (0%)
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)
    Cast the result of GetModuleHandle("WoW.exe") to a numeric value of your choice (assuming you're in process).

  5. #5
    tcpa252's Avatar Private
    Reputation
    1
    Join Date
    Aug 2011
    Posts
    3
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Ok, so it looks like that base address base address is: 0x400000
    So, know as i understand the non rebased offset transformation look like:
    offset - 0x00400000 + 0x400000 --- what does is give us?? Sorry if i sound stupid

    Edit: this transformation does not make any sense, we get the start value in the end, any ideas??
    Last edited by tcpa252; 08-10-2011 at 03:07 PM.

  6. #6
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

Similar Threads

  1. Some [probably stupid] questions about character transfer mechanics
    By ric684 in forum World of Warcraft General
    Replies: 4
    Last Post: 06-23-2014, 05:17 AM
  2. [request] some emu questions
    By Xeph20 in forum World of Warcraft Emulator Servers
    Replies: 10
    Last Post: 01-18-2008, 08:58 AM
  3. Most likey a stupid Question
    By elvick in forum World of Warcraft Emulator Servers
    Replies: 15
    Last Post: 09-01-2007, 03:06 PM
  4. How to not have to ask stupid questions [video]
    By Enfeebleness in forum Community Chat
    Replies: 1
    Last Post: 05-19-2007, 06:52 PM
  5. Ok, stupid question...
    By Teague-stormrage in forum Community Chat
    Replies: 0
    Last Post: 11-04-2006, 11:16 PM
All times are GMT -5. The time now is 10:40 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