Ir para conteúdo
Fórum Script Brasil
  • 0

Alterar valor da constante


DelpheroMn

Pergunta

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 para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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á !

Editado por DelpheroMn
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,8k
×
×
  • Criar Novo...