(Question) Getting addresses. menu

User Tag List

Results 1 to 13 of 13
  1. #1
    tomer121233's Avatar Member
    Reputation
    1
    Join Date
    Feb 2013
    Posts
    6
    Thanks G/R
    11/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    (Question) Getting addresses.

    Hey, I'm a CS student with some free time to spare during the summer.
    I recently dwelved into writing a very simple software which reads and shows some data from the WoW classic client.
    while I do have some previous experience with CE and OlyDbg (for much, much smaller endavours - mainly courses), I was not able to extract the latest offsets \ base adresses from the WoW client with olyDbg (After researching a bit online it seems the code is obfuscated using opaque predicates) and I'm scared scanning for memory on runtime using CE since Warden will probably not like me doing it.

    any tips or techniques for extracting said addresses with out getting flagged instantly?
    Thanks in advance!
    Last edited by tomer121233; 08-02-2022 at 11:56 AM.

    (Question) Getting addresses.
  2. #2
    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)
    You could dump it using dumpwow and then look at things in IDA or Ghidra.

  3. Thanks Razzue, tomer121233 (2 members gave Thanks to namreeb for this useful post)
  4. #3
    Razzue's Avatar Contributor Avid Ailurophile

    CoreCoins Purchaser Authenticator enabled
    Reputation
    379
    Join Date
    Jun 2017
    Posts
    588
    Thanks G/R
    186/268
    Trade Feedback
    2 (100%)
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by tomer121233 View Post
    Hey, I'm a CS student with some free time to spare during the summer.
    I recently dwelved into writing a very simple software which reads and shows some data from the WoW classic client.
    while I do have some previous experience with CE and OlyDbg (for much, much smaller endavours - mainly courses), I was not able to extract the latest offsets \ base adresses from the WoW client with olyDbg (After researching a bit online it seems the code is obfuscated using opaque predicates) and I'm scared scanning for memory on runtime using CE since Warden will probably not like me doing it.

    any tips or techniques for extracting said addresses with out getting flagged instantly?
    Thanks in advance!
    As Namreeb suggested, use his dumper if you want to manually find each and every offset. I use it whenever I have to dump wow, and it works perfectly 100% of the time.
    Alternatively, You could check out my dumper (just resolve packages and re-build) that gets some offsets I have pre-saved, and use those as a starting point to look at how functions access the data at said addresses.
    Fair warning, some of the patterns are fairly outdated and I have little to no interest sharing my updated patterns.

    As for looking through values on running client, I use a renamed cheat engine and the struct viewer + custom ReClass build to poke around occasionally. Afaik neither of those have caused a ban on my account as of yet.
    If you're truly scared about losing your account... this kind of stuff will not be for you. Bans happen when fucking with memory/unlocking, it is what it is.
    "May all your bacon burn"

  5. Thanks tomer121233, moisteroyster, BoomBoost (3 members gave Thanks to Razzue for this useful post)
  6. #4
    jnco's Avatar Member
    Reputation
    3
    Join Date
    Jun 2022
    Posts
    7
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I use a Windows kernel driver and inject a DLL into my memory reading application - the DLL requests a handle from the kernel driver and the driver happily provides it without the application being none the wiser.

    Or depending on your disposable income and how much game hackin' you plan to do as a hobby, you could use a PCIScreamer (Screamer PCIe Squirrel). I use both!

  7. Thanks tomer121233 (1 members gave Thanks to jnco for this useful post)
  8. #5
    scimmy's Avatar Active Member
    Reputation
    52
    Join Date
    Jul 2020
    Posts
    54
    Thanks G/R
    1/33
    Trade Feedback
    0 (0%)
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by jnco View Post
    I use a Windows kernel driver and inject a DLL into my memory reading application - the DLL requests a handle from the kernel driver and the driver happily provides it without the application being none the wiser.

    Or depending on your disposable income and how much game hackin' you plan to do as a hobby, you could use a PCIScreamer (Screamer PCIe Squirrel). I use both!
    These techniques are complete overkill for any personal project that involves wow.

  9. #6
    tomer121233's Avatar Member
    Reputation
    1
    Join Date
    Feb 2013
    Posts
    6
    Thanks G/R
    11/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks everyone for your help!!
    Using @namreeb's and @Razzue's unpacker helped tremendously.
    I'm currently trying to do the unpacking myself, So final question \ recommendation regarding that -
    Does MANUALLY patching the the code in IDA a good idea? or an never-ending task?

  10. #7
    Razzue's Avatar Contributor Avid Ailurophile

    CoreCoins Purchaser Authenticator enabled
    Reputation
    379
    Join Date
    Jun 2017
    Posts
    588
    Thanks G/R
    186/268
    Trade Feedback
    2 (100%)
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by tomer121233 View Post
    Thanks everyone for your help!!
    Using @namreeb's and @Razzue's unpacker helped tremendously.
    I'm currently trying to do the unpacking myself, So final question \ recommendation regarding that -
    Does MANUALLY patching the the code in IDA a good idea? or an never-ending task?
    If by "patching" you mean renaming/editing crap so you can follow it better, do just that and tuck that Ida file somewhere in the deepest depths of your folder space.

    Then the next time the game updates you can dump the patch, load it up and re-base, Ctrl+6 to open bindif (install if you don't have it) and run a bindif against your saved build.
    Once bindif is complete, Ctrl+6 -> Import strings, and away you go!

    That's how I like to do it anyway šŸ¤·*ā™‚ļø I personally have a super old classic build I like to bindif against good luck!
    (Though not "everything" will be there, or have a good similarity %)
    "May all your bacon burn"

  11. Thanks tomer121233 (1 members gave Thanks to Razzue for this useful post)
  12. #8
    tomer121233's Avatar Member
    Reputation
    1
    Join Date
    Feb 2013
    Posts
    6
    Thanks G/R
    11/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Razzue View Post
    If by "patching" you mean renaming/editing crap so you can follow it better, do just that and tuck that Ida file somewhere in the deepest depths of your folder space.

    Then the next time the game updates you can dump the patch, load it up and re-base, Ctrl+6 to open bindif (install if you don't have it) and run a bindif against your saved build.
    Once bindif is complete, Ctrl+6 -> Import strings, and away you go!

    That's how I like to do it anyway šŸ¤·*ā™‚ļø I personally have a super old classic build I like to bindif against good luck!
    (Though not "everything" will be there, or have a good similarity %)
    Thanks for the tip, I'll surely do that once the game updates.
    I meant patching the "faulty" jumps though, used to obfuscate and confuse IDA

  13. #9
    jnco's Avatar Member
    Reputation
    3
    Join Date
    Jun 2022
    Posts
    7
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by scimmy View Post
    These techniques are complete overkill for any personal project that involves wow.
    These were my solutions to the anti-debug tricks and had them already available from other game hacking projects. I missed the part where OP asked for the most elegant solution that has scimmy's approval.

  14. Thanks tomer121233 (1 members gave Thanks to jnco for this useful post)
  15. #10
    scimmy's Avatar Active Member
    Reputation
    52
    Join Date
    Jul 2020
    Posts
    54
    Thanks G/R
    1/33
    Trade Feedback
    0 (0%)
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by jnco View Post
    These were my solutions to the anti-debug tricks and had them already available from other game hacking projects. I missed the part where OP asked for the most elegant solution that has scimmy's approval.
    Perhaps you should have been more clear, as you only mention supporting a simple handle elevation request. I would say your answer is confusing and provides little value to what the OP actually wants.

  16. #11
    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)
    Originally Posted by tomer121233 View Post
    Thanks everyone for your help!!
    Using @namreeb's and @Razzue's unpacker helped tremendously.
    I'm currently trying to do the unpacking myself, So final question \ recommendation regarding that -
    Does MANUALLY patching the the code in IDA a good idea? or an never-ending task?
    If you're talking about removing opaque predicates, doing it manually is going to be tedious, time-consuming, and error prone. I've been experimenting lately with doing it automatically using symbolic execution with Triton (GitHub - JonathanSalwan/Triton: Triton is a dynamic binary analysis library. Build your own program analysis tools, automate your reverse engineering, perform software verification or just emulate code.) and the preliminary results are encouraging. Once an opaque predicate is identified, I patch out the jumps and garbage/dead basic blocks with NOPs. This has a nice effect when Hexrays tries to decompile it.

    Example from the Wrath beta:

    Before:
    Code:
    void sub_141E4B000()
    {
      JUMPOUT(0x141E4B012i64);
    }
    After:

    Code:
    void __fastcall sub_141E4B000(SIZE_T a1)
    {
      VirtualAlloc(0i64, a1, 0x1000u, 0x40u);
    }

  17. Thanks tomer121233, Razzue (2 members gave Thanks to namreeb for this useful post)
  18. #12
    tomer121233's Avatar Member
    Reputation
    1
    Join Date
    Feb 2013
    Posts
    6
    Thanks G/R
    11/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by namreeb View Post
    If you're talking about removing opaque predicates, doing it manually is going to be tedious, time-consuming, and error prone. I've been experimenting lately with doing it automatically using symbolic execution with Triton (GitHub - JonathanSalwan/Triton: Triton is a dynamic binary analysis library. Build your own program analysis tools, automate your reverse engineering, perform software verification or just emulate code.) and the preliminary results are encouraging. Once an opaque predicate is identified, I patch out the jumps and garbage/dead basic blocks with NOPs. This has a nice effect when Hexrays tries to decompile it.

    Example from the Wrath beta:

    Before:
    Code:
    void sub_141E4B000()
    {
      JUMPOUT(0x141E4B012i64);
    }
    After:

    Code:
    void __fastcall sub_141E4B000(SIZE_T a1)
    {
      VirtualAlloc(0i64, a1, 0x1000u, 0x40u);
    }

    Thank you. Thatā€™s exactly what I was asking.
    Iā€™ll give the repository a look, as I started manually patching the jumps and it just seem to never end.

  19. #13
    charles420's Avatar Contributor
    Reputation
    315
    Join Date
    Jun 2009
    Posts
    329
    Thanks G/R
    25/119
    Trade Feedback
    0 (0%)
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)
    Thereā€™s a few ida scripts that remove this i made a modified one that does the function I want to see Vers doing the whole idb file what I found to be very long especially for things I have no need for

Similar Threads

  1. [Question] Getting stuck at "Connecting to gameserver".
    By antonp93 in forum World of Warcraft Emulator Servers
    Replies: 14
    Last Post: 06-26-2008, 04:34 AM
  2. [Question] getting quests to work?
    By Akrurz in forum World of Warcraft Emulator Servers
    Replies: 3
    Last Post: 05-23-2008, 02:38 AM
  3. [Question] Getting Random Loot Out Of A Bag...
    By Bumbo in forum World of Warcraft Emulator Servers
    Replies: 2
    Last Post: 12-16-2007, 11:28 PM
  4. [Question] Getting rid of impassable terrain
    By pieliker in forum WoW ME Questions and Requests
    Replies: 2
    Last Post: 10-28-2007, 06:19 AM
  5. [Question] Getting errors since the last patch.
    By adonai1 in forum WoW ME Questions and Requests
    Replies: 2
    Last Post: 10-13-2007, 03:24 PM
All times are GMT -5. The time now is 02:59 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