Offset - GetMinimapZoneText, falsch?

02/26/2013 14:14 tykila#1
Hallo,

ich habe mich mal nen bischen mit IDA Pro beschäftigt und irgendwie kommt da nix gescheites bei raus..

mein Code sieht jetzt so aus:
Code:
wow.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle("World of Warcraft"));
IntPtr baseWoW = wow.MainModule.BaseAddress;


string minimaptext = wow.ReadASCIIString((uint)baseWoW + 0x10C9EE8, 30);
ida pseudo c sieht aus:
Code:
signed int __cdecl sub_990360(int a1)
{
  char *v1; // eax@1

  v1 = (char *)dword_10C9EE8;
  if ( !dword_10C9EE8 )
    v1 = &byte_D2594F;
  sub_519700(a1, v1);
  return 1;
}
02/26/2013 18:52 Kilinat#2
Du musst von 0x10C9EE8 - 0x400000 abziehen, da die BaseAddresse von IDA.

und den String zuerst als Pointer lesen:

Code:
string minimaptext = wow.ReadASCIIString(wow.ReadUInt((uint)baseWoW + 0x10C9EE8, 30));
So sollte es funktionieren.

LG
02/26/2013 20:56 tykila#3
Quote:
Originally Posted by Kilinat View Post
Du musst von 0x10C9EE8 - 0x400000 abziehen, da die BaseAddresse von IDA.

und den String zuerst als Pointer lesen:

Code:
string minimaptext = wow.ReadASCIIString(wow.ReadUInt((uint)baseWoW + 0x10C9EE8, 30));
So sollte es funktionieren.

LG
Also muss ich alles "rebasen" (heißt das so?) :D
02/27/2013 07:57 Frosttall#4
Quote:
Originally Posted by tykila View Post
Also muss ich alles "rebasen" (heißt das so?) :D
Ganz genau.

Alle Strings sind immer in einem eigenen Bereich gespeichert und deshalb immer als IntPtr hinterlegt.



Quote:
Originally Posted by Kilinat View Post
Du musst von 0x10C9EE8 - 0x400000 abziehen, da die BaseAddresse von IDA.

und den String zuerst als Pointer lesen:

Code:
string minimaptext = wow.ReadASCIIString(wow.ReadUInt((uint)baseWoW + 0x10C9EE8, 30));
So sollte es funktionieren.

LG
Das kenn ich doch irgendwo her ;)
02/27/2013 19:49 tykila#5
Code:
string minimaptext = wow.ReadASCIIString(wow.ReadUInt((uint)baseWoW + 0xCC9EE8, false), 30);
geht :) danke euch :*