possibly, but I'm not going to help you on a wild goose chase : ) ...re-write your own memory library and|or ask a specific question.
edit: u edited your post- I'm out the door door for work, will update later*
edit:

Originally Posted by
bobsd
...
// was reading through it again.
//this finds the base address of the process. correct?
public int ImageAddress()
{
this.BaseAddress = 0;
this.myProcessModule = this.MyProcess[0].MainModule;
this.BaseAddress = (int) this.myProcessModule.BaseAddress;
return this.BaseAddress;
}
// does this means that it adds the base address to the 1st pOffset in the code? like (24246038+Base) ?
public int ImageAddress(int pOffset)
{
this.BaseAddress = 0;
this.myProcessModule = this.MyProcess[0].MainModule;
this.BaseAddress = (int) this.myProcessModule.BaseAddress;
return pOffset + this.BaseAddress;
}
1. yes.
2. yes.
going back to answer your original question..
this.MyLevel = this.Mem.ReadInt(this.Mem.Pointer(this.mainModule, 24246038, 10, 28, 62, 9));
I think I know that 24246038 = a signed 32 bit int. but what are the rest that come after it and before it? How does this differ from just using an offset?
the rest that comes after it (and it is itsself) is a list of offsets, used to follow a pointer list.
Code:
public int Pointer(string Module, int pOffset, int pOffset2, int pOffset3, int pOffset4, int pOffset5)
{
return this.ReadInt(this.ReadInt(this.ReadInt(this.ReadInt(this.DllImageAddress(Module) + pOffset) + pOffset2) + pOffset3) + pOffset4) + pOffset5;
}
1)the innermost expression is:
Code:
this.ReadInt(this.DllImageAddress(Module) + pOffset)
DllImageAddress(Module); returns the .BaseAddress of the module
then add pOffset
then call ReadInt()
IE. ReadInt() gets passed the address (module.baseaddress + pOffset), and returns the value (an addr) it just read.
2) next is
Code:
this.ReadInt(this.ReadInt(this.DllImageAddress(Module) + pOffset) + pOffset2)
Simply calls this.ReadInt() on the addr obtained from step 1..
3) next is
Code:
this.ReadInt(this.ReadInt(this.ReadInt(this.DllImageAddress(Module) + pOffset) + pOffset2) + pOffset3)
Same as above. Calls .ReadInt(), but with the address obtained from step 2.
4) next is
Code:
this.ReadInt(this.ReadInt(this.ReadInt(this.ReadInt(this.DllImageAddress(Module) + pOffset) + pOffset2) + pOffset3) + pOffset4)
Same as above. Calls .ReadInt(), but with the address obtained from step 3.
5) next is
^^So. Simply add pOffset5 to the value obtained in step 4. Do not Read() an address from this location: this is the final addr.
pseudo code:
aa = ReadInt(moduleBase + offset1)
bb = ReadInt(aa + offset2)
cc = ReadInt(bb + offset3)
dd = ReadInt(cc + offset4)
ee = dd + offset5
--------------------------
It not much different from using a single offset: same process, repeated several times.