Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 21
  1. #11
    beBoss
    beBoss is offline
    New member beBoss's Avatar
    Join Date
    2010 Nov
    Location
    In her heart
    Posts
    9
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0

    Re: [Delphi] Memory Modification Tutorial & Template

    As I say you need base address + offset

    And one fucntion which may help you:

    Code:
     function GetAddyfrmpointer(baseaddress:dword;offset:dword):dword; 
    var 
    	a: dword; 
    	x: dword; 
    	i: integer; 
    	offsetcount: integer; 
    	offsets:array of dword; 
    	b:integer; 
    	maxid:integer; 
    begin 
    	offsetcount:=1; 
    	b:=0; 
    	setlength(offsets,1); 
    	offsets[b]:=offset; 
    	a:=baseaddress; 
    	i:=0; 
    	while (i<offsetcount) do 
    		begin 
    			if not readprocessmemory(processhandle,pointer(a),@a,4,x) then exit; 
    			inc(a,offsets[i]); 
    			inc(i); 
    			result:=a 
    		end; 
    end;
    and then you can use it like this:
    Code:
     real_address:=GetAddyfrmpointer($your_base,$your_offset);
    [Please, register to view links]
    Живота е като терена или ставаш силен, блокираш, сваляш и оцеляваш
    или се отказваш, падаш и си заминаваш !


    beBoss™

  2. #12
    DJK
    DJK is offline
    New member
    Join Date
    2010 Sep
    Posts
    11
    Thanks Thanks Given 
    1
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0

    Re: [Delphi] Memory Modification Tutorial & Template

    Hmm lets see..

    Base address: Is this the address of the actual "black" value or is it some sort of starter address of the entire game (to start counting from). In the latter case how do I get it ?

    Offset: Is this the "distance" between the base address and the black address ? If so how do I calculate it ?

  3. #13
    Dwar
    Dwar is offline
    Veteran Dwar's Avatar
    Join Date
    2010 Mar
    Posts
    2,222
    Thanks Thanks Given 
    211
    Thanks Thanks Received 
    2,230
    Thanked in
    292 Posts
    Rep Power
    10

    Re: [Delphi] Memory Modification Tutorial & Template

    DJK
    You can check Aika Bot framework for example how to read data from memory.
    Quote Originally Posted by wiki
    In computer science, an offset within an array or other data structure object is an integer indicating the distance (displacement) from the beginning of the object up until a given element or point, presumably within the same object. The concept of a distance is valid only if all elements of the object are the same size (typically given in bytes or words).

    In computer engineering and low-level programming (such as assembly language), an offset usually denotes the number of address locations added to a base address in order to get to a specific absolute address. In this (original) meaning of offset, only the basic address unit, usually the 8-bit byte, is used to specify the offset's size. In this context an offset is sometimes called a relative address.
    -- 2010-11-29, 18:17 --
    DJK
    Your last post is here:
    Can't find base addres with CE
    Please, post your questions on forum, not by PM or mail

    I spend my time, so please pay a little bit of your time to keep world in equilibrium

  4. #14
    elshabory
    elshabory is offline
    New member
    Join Date
    2011 Mar
    Posts
    7
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    2
    Thanked in
    1 Post
    Rep Power
    0
    please admin
    give us the delphi project

  5. #15
    Dwar
    Dwar is offline
    Veteran Dwar's Avatar
    Join Date
    2010 Mar
    Posts
    2,222
    Thanks Thanks Given 
    211
    Thanks Thanks Received 
    2,230
    Thanked in
    292 Posts
    Rep Power
    10
    give us the delphi project
    Which exactly?
    Please, post your questions on forum, not by PM or mail

    I spend my time, so please pay a little bit of your time to keep world in equilibrium

  6. #16
    elshabory
    elshabory is offline
    New member
    Join Date
    2011 Mar
    Posts
    7
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    2
    Thanked in
    1 Post
    Rep Power
    0
    Quote Originally Posted by Dwar View Post
    Which exactly?

    this one that i think it is a multi level pointer

    Code:
    procedure TForm1.Button2Click(Sender: TObject);
    begin
     if GetProcessID(ProgramName, PidId) then
      begin
       PidHandle  :=  OpenProcess(PROCESS_ALL_ACCESS,False,PidId);
        SetLength(byteArr, 16);
        byteArr[0] := $8B;
        byteArr[1] := $71;
        byteArr[2] := $10;
        byteArr[3] := $0F;
        byteArr[4] := $85;
        byteArr[5] := $6A;
        byteArr[6] := $9D;
        byteArr[7] := $FD;
        byteArr[8] := $FF;
        byteArr[9] := $83;
        byteArr[10] := $7E;
        byteArr[11] := $0C;
        byteArr[12] := $00;
        byteArr[13] := $0F;
        byteArr[14] := $85;
        byteArr[15] := $60;
        pokeX($401007, byteArr);
        SetLength(byteArr, 15)
    closehandle(PidHandle);
     end;

  7. #17
    boredtc
    boredtc is offline
    New member
    Join Date
    2011 Jul
    Posts
    4
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0
    Quote Originally Posted by elshabory View Post
    this one that i think it is a multi level pointer

    Code:
    procedure TForm1.Button2Click(Sender: TObject);
    begin
     if GetProcessID(ProgramName, PidId) then
      begin
       PidHandle  :=  OpenProcess(PROCESS_ALL_ACCESS,False,PidId);
        SetLength(byteArr, 16);
        byteArr[0] := $8B;
        byteArr[1] := $71;
        byteArr[2] := $10;
        byteArr[3] := $0F;
        byteArr[4] := $85;
        byteArr[5] := $6A;
        byteArr[6] := $9D;
        byteArr[7] := $FD;
        byteArr[8] := $FF;
        byteArr[9] := $83;
        byteArr[10] := $7E;
        byteArr[11] := $0C;
        byteArr[12] := $00;
        byteArr[13] := $0F;
        byteArr[14] := $85;
        byteArr[15] := $60;
        pokeX($401007, byteArr);
        SetLength(byteArr, 15)
    closehandle(PidHandle);
     end;
    How is this an ML pointer?

  8. #18
    Dwar
    Dwar is offline
    Veteran Dwar's Avatar
    Join Date
    2010 Mar
    Posts
    2,222
    Thanks Thanks Given 
    211
    Thanks Thanks Received 
    2,230
    Thanked in
    292 Posts
    Rep Power
    10
    Quote Originally Posted by boredtc View Post
    How is this an ML pointer?
    It's not a multi level pointer or whatever it is. Just writing to memory an array of bytes
    Please, post your questions on forum, not by PM or mail

    I spend my time, so please pay a little bit of your time to keep world in equilibrium

  9. #19
    kofmaster
    kofmaster is offline
    New member
    Join Date
    2011 Jun
    Posts
    4
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0
    good. thx

  10. #20
    RiiStar
    RiiStar is offline
    New member
    Join Date
    2011 Jun
    Posts
    17
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    1
    Thanked in
    1 Post
    Rep Power
    0
    Just have to say Dwar your Tuts are very good, and very helpful.

Page 2 of 3 FirstFirst 123 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •