Jump to content
Fórum Script Brasil
  • 0

Alterar valor da constante


DelpheroMn

Question

const
 ProcessesDumps: array[0..Count -1] of TCheatList =
  (
TXT CODE HERE !
  );
Como seria possivel eu declarar uma constante to tipo array para ler um .txt ou qualquer outra String, até mesmo as linhas de uma listbox, eu tentei de várias formas e não obtive resultados, será que alguém poderia me ajuda? Abaixo o code pra melhor entendimento do mesmo. Preciso urgentissimo do sistema , porfavor me ajudem :S
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, tlhelp32, StdCtrls;

const
Count = 1;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    ListBox2: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

type
 TMemDump = array[0..31] of Byte;
 TCheatList  = record
 Offset  : cardinal;
 MemDump : TMemDump;
 cName   : String;
end;

const
 ProcessesDumps: array[0..Count -1] of TCheatList =
  (
    (Offset : $403E10; MemDump :($51, $56, $6a, $00, $ff, $15, $34, $61, $41, $00, $a3, $7c, $af, $41, $00, $e8, $bc, $00, $00, $00, $8b, $35, $bc, $60, $41, $00, $85, $c0, $75, $04, $6a, $ff); cName : 'MEUHACKO(H)')
  );

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

exemplo:

unit Unit2;

interface

uses
 Windows, tlhelp32, SysUtils;

const
 Count = 2; // Cheat count

type
 TMemDump = array[0..31] of Byte;

 TCheatList  = record
   Offset  : Cardinal;
   MemDump : TMemDump;
 end;

const
 ProcessesDumps: array[0..Count -1] of TCheatList =
  ((Offset  : $4C8259;  //Catastrophe
   MemDump  :($A1, $38, $BD, $4C, $00, $8B, $00, $8B, $4D, $FC, $BA, $C0, $82, $4C, $00, $E8, $1F,
              $F1, $FF, $FF, $33, $DB, $E8, $F8, $BE, $F3, $FF, $33, $C0, $5A, $59, $59)),
   (Offset  : $4C8259;  //Catastrophe
   MemDump  :($7C, $23, $8B, $45, $FC, $80, $38, $C1, $75, $1B, $8B, $45, $FC, $80, $78, $02, $F3,
              $75, $12, $8B, $45, $FC, $80, $78, $03, $00, $75, $09, $8B, $45, $FC, $80)));

implementation

function ScanProcessMemory(hProcess: THandle):Boolean;
var
    I: Integer;
    aTmpBuffer: array[0..31] of Byte;
    aBytesRead: DWORD;
begin
    for I := 0 to count do
    begin
        aBytesRead := 0;
        ReadProcessMemory(hProcess, Pointer(ProcessesDumps[i].Offset),@aTmpBuffer, SizeOf(aTmpBuffer), aBytesRead);
        if CompareMem(@aTmpBuffer,@ProcessesDumps[i].MemDump,32) then
        begin
            Result := True;
            Exit;
        end;
    end;
    Result := False;
end;

procedure SystemProcessesScan;
var
    hProcessSnap, hProcess: THandle;
    pe32: PROCESSENTRY32;
begin
    hProcessSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if hProcessSnap <> INVALID_HANDLE_VALUE then
    begin
        pe32.dwSize := SizeOf(PROCESSENTRY32);
        if Process32First(hProcessSnap, pe32) then
        begin
            repeat
                hProcess := OpenProcess(PROCESS_ALL_ACCESS, FALSE,pe32.th32ProcessID);
                if not (hProcess = 0) then
                begin
                 if (ScanProcessMemory(hProcess)) then
                    begin
                      // do somthing Here!

                     ExitProcess(0);
                    end;
                end;
            until not Process32Next(hProcessSnap, pe32);
        end;
        CloseHandle(hProcessSnap);
    end;
end;

end.

abraço

Link to comment
Share on other sites

  • 0

Não jhonas , você não intendeu !

Esse código do qual você postou é o mesmo do meu , só com algumas modificações, enfim oque eu quero fazer é o seguinte:

EDITAR OS VALORES

((Offset  : $4C8259;  //Catastrophe
   MemDump  :($A1, $38, $BD, $4C, $00, $8B, $00, $8B, $4D, $FC, $BA, $C0, $82, $4C, $00, $E8, $1F,
              $F1, $FF, $FF, $33, $DB, $E8, $F8, $BE, $F3, $FF, $33, $C0, $5A, $59, $59)),
   (Offset  : $4C8259;  //Catastrophe
   MemDump  :($7C, $23, $8B, $45, $FC, $80, $38, $C1, $75, $1B, $8B, $45, $FC, $80, $78, $02, $F3,
              $75, $12, $8B, $45, $FC, $80, $78, $03, $00, $75, $09, $8B, $45, $FC, $80)));
NO CASO EU QUERO MANIPULAR ELES, PARA QUE SEJA CARREGADO POR UM LISTBOX OU UM .TXT OLHE UM EXEMPLO ABAIXO
unit Unit2;

interface

uses
Windows, tlhelp32, SysUtils;

const
Count = 2; // Cheat count

type
TMemDump = array[0..31] of Byte;

TCheatList  = record
   Offset  : Cardinal;
   MemDump : TMemDump;
end;

const
ProcessesDumps: array[0..Count -1] of TCheatList =
[CÓDIGO PRA LER OS DADOS DIRETO DO LISTBOX]

implementation

function ScanProcessMemory(hProcess: THandle):Boolean;
var
    I: Integer;
    aTmpBuffer: array[0..31] of Byte;
    aBytesRead: DWORD;
begin
    for I := 0 to count do
    begin
        aBytesRead := 0;
        ReadProcessMemory(hProcess, Pointer(ProcessesDumps[i].Offset),@aTmpBuffer, SizeOf(aTmpBuffer), aBytesRead);
        if CompareMem(@aTmpBuffer,@ProcessesDumps[i].MemDump,32) then
        begin
            Result := True;
            Exit;
        end;
    end;
    Result := False;
end;

procedure SystemProcessesScan;
var
    hProcessSnap, hProcess: THandle;
    pe32: PROCESSENTRY32;
begin
    hProcessSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if hProcessSnap <> INVALID_HANDLE_VALUE then
    begin
        pe32.dwSize := SizeOf(PROCESSENTRY32);
        if Process32First(hProcessSnap, pe32) then
        begin
            repeat
                hProcess := OpenProcess(PROCESS_ALL_ACCESS, FALSE,pe32.th32ProcessID);
                if not (hProcess = 0) then
                begin
                 if (ScanProcessMemory(hProcess)) then
                    begin
                      // do somthing Here!

                     ExitProcess(0);
                    end;
                end;
            until not Process32Next(hProcessSnap, pe32);
        end;
        CloseHandle(hProcessSnap);
    end;
end;

end.

no caso do const ProcessesDumps: array[0..Count -1] of TCheatList = QUERO QUE ELE PUCHE OS VALORES DE UM LISTBOX se você não intendeu me fale..

Link to comment
Share on other sites

  • 0

ok... tente esse exemplo e faça uma mudança no seu código

Mudando o valor de uma constante

Procedure ChangeConst(const Constant; var Value; Size: Integer);
begin
  Move((@Value)^, (@Constant)^, Size);
end;

// Como usar ChangeConst: (Exemplo)

const
  TestStrConst: string = 'Este é um exemplo de texto';
  TestInteger: Integer = 4367;
var
  NewString: string;
  NewInteger: Integer;
begin
  // Demo String:
  ShowMessage('Antes de ChangeConst (TestStrConst): ' + TestStrConst);
  NewString := 'Novo Valor';
  ChangeConst(TestStrConst, NewString, SizeOf(string));
  ShowMessage('Após ChangeConst (TestStrConst): ' + TestStrConst);
  // Demo Integer:
  ShowMessage('Antes ChangeConst (TestInteger): ' + IntToStr(TestInteger));
  NewInteger := 93534;
  ChangeConst(TestInteger, NewInteger, SizeOf(Integer));
  ShowMessage('Após ChangeConst (TestInteger): ' + IntToStr(TestInteger));
end;

abraço

Link to comment
Share on other sites

  • 0

Jhonas , seu code realmente funciona, o unico problema é que eu não consegui adaptar essa minha const para um button e armazenar os dados em outra array para editar a const, tentei fazer e só deu erros e mais erros.

Se não for pedir muito você poderia adaptar o seguinte código ao um button?

const
Count = 1; // Cheat count

type
 TMemDump = array[0..31] of Byte;

 TCheatList  = record
 Offset  : Cardinal;
 MemDump : TMemDump;
 cName   : String;
end;

const
 ProcessesDumps: array[0..Count -1] of TCheatList =
  (
    (Offset : $4C8259; MemDump :($A1, $38, $BD, $4C, $00, $8B, $00, $8B, $4D, $FC, $BA, $C0, $82, $4C, $00, $E8, $1F, $F1, $FF, $FF, $33, $DB, $E8, $F8, $BE, $F3, $FF, $33, $C0, $5A, $59, $59); cName : 'HACK')
  );
Assim, ele está declarado como const com seu valor certo ai , tudo bonitinho, eu preciso passar o código para um button e armazenar os dados da ProcessesDumps em outra variável e então editar o dados da mesma , Exemplo:
procedure TForm1.Button1Click(Sender: TObject);
var
newdados : array[0..Count -1] of TCheatList;
begin
newdados := 
[AQUI O CODE PARA INSERIR VALORES SEMELHANTES AO DO CONST]
changeConst(ProcessesDumps,newdados , SizeOf(integer));
end;

porque eles não são lidos como string, eu tentei adaptar mas o valor retornado na memória é alterado. Se for possivel fazer isso ficarei muito grato Jhonas, agradeço desde já !

Edited by DelpheroMn
Link to comment
Share on other sites

  • 0

o que voce quer fazer não é tão simples, e agora estou envolvido em outro serviço.. então voce terá que pesquisar mais um pouco

leia sobre Const

http://www.weinrich.eti.br/artigos/segredos.htm

mais esses

http://www.delphibasics.co.uk/RTL.asp?Name=Const

http://read.pudn.com/downloads57/ebook/202...rUnit.pas__.htm

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...