Cyberhack Postado Novembro 11, 2007 Denunciar Share Postado Novembro 11, 2007 (editado) Amigos venho ao forum para ter mais conhecimento sobre delphi, então me caiu uma dificuldade,como e feita a manipulaçao em memoria dinamica e como editar ela..procurei so mas são coisas vagas.alguém pode me auxiliar?Obrigado Editado Novembro 11, 2007 por Micheus Não observação do item 3.7 das regras do forum - NÃO digite em caixa alta (1º aviso) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 12, 2007 Denunciar Share Postado Novembro 12, 2007 No help do delphi temos:Memory allocation sizes Type ParameterSyntax {$M minstacksize,maxstacksize}{$MINSTACKSIZE number}{$MAXSTACKSIZE number}Default {$M 16384,1048576}Scope GlobalRemarksThe $M directive specifies an application's stack allocation parameters. minstacksize must be an integer number between 1024 and 2147483647 that specifies the minimum size of an application's stack, and maxstacksize must be an integer number between minstacksize and 2147483647 that specifies the maximum size of an application's stack.If there is not enough memory available to satisfy an application's minimum stack requirement, Windows will report an error upon attempting to start the application.An application's stack is never allowed to grow larger than the maximum stack size. Any attempt to grow the stack beyond the maximum stack size causes an EStackOverflow exception to be raised.The $MINSTACKSIZE and $MAXSTACKSIZE directives allow the minimum and maximum stack sizes to be specified separately.The memory allocation directives are meaningful only in a program. They should not be used in a library or a unit.traduzindoA diretiva $M especifica os parâmetros de distribuição de pilha de uma aplicação. minstacksize deve ser um número de inteiro entre 1024 e 2147483647 isso especifica o tamanho mínimo da pilha de uma aplicação, e maxstacksize deve ser um número de inteiro entre minstacksize e 2147483647 isso especifica o tamanho de máximo da pilha de uma aplicação. Se não houver bastante memória disponível satisfazer a exigência de pilha de mínimo de uma aplicação, o Windows informará um erro ao tentar começar a aplicação. A pilha de uma aplicação nunca é permitida crescer maior que o tamanho de pilha máximo. Qualquer tentativa para aumentar a pilha além do tamanho máximo da pilha causará uma exceção de EStackOverflow. O $MINSTACKSIZE e directives de $MAXSTACKSIZE permitem especificar o mínimo e máximo separadamente. O directives de distribuição de memória só são significantes em um programa. Eles não deveriam ser usados em uma biblioteca ou uma unit.Memoria dinamica usando C++http://www.linhadecodigo.com.br/Artigo.aspx?id=1198Mais sobre criação de formularios dinamicamente ( uso de memoria )http://www.ramosdainformatica.com.br/art_r...s01.php?CDA=584abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Novembro 12, 2007 Denunciar Share Postado Novembro 12, 2007 OpaEntão a um tempo atrás eu mexi bastante com isso, fazendo hacks de luz pro Tibia rse era tudo manipulação de memória...mas faz um bom tempo, mas tenho em casa até hoje esses códigos...depois te passo aquiabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cyberhack Postado Novembro 12, 2007 Autor Denunciar Share Postado Novembro 12, 2007 obrigado pela ajuda amigos, quanto ajuda melhor para discutir o tópico,valeu pelas dicas, e quem puder ajudar mais eu agradeçovlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 obrigado pela ajuda amigos, quanto ajuda melhor para discutir o tópico,valeu pelas dicas, e quem puder ajudar mais eu agradeçoCyberhack, acredito que seria mais proveitoso se você desse uma idéia do que você tem em mente.Observe que cada colega, acima, deu uma resposta referente ao seu post inicial. Porém, são aspectos diferentes da questão "manipulação em memória dinâmica".Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 OpaSeguinte, olha agora vendo bem o que o Jonas postou eu acho que não entendi nada rsVocê quer tipo manipular a memória do seu ou outro programa?é o que eu entendi, mas pelo visto entendi errado rsO que exatamente você quer fazer?porque meus códigos que eu falei, é pra editar a memória do seu programa ou de outroem tempo de execução, porém não é tão simples assim, precisa manjar outras coisasabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cyberhack Postado Novembro 16, 2007 Autor Denunciar Share Postado Novembro 16, 2007 e sobre isso mesmo editar memoria de outros programas .já tenho uma base. mas preciso me aperfeiçoar mais vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Novembro 17, 2007 Denunciar Share Postado Novembro 17, 2007 OpaEntão, ai vai algumas funções de leitura e escrita de memória...var hWND: Cardinal; hWND := Handle da janela que voce quer acessar a memoria... //Faz a leitura de um determinado endereço como Integer function ReadMemInteger(Address: Cardinal): Cardinal; var ProcId: Cardinal; tProc: THandle; NBR: Cardinal; value:integer; begin GetWindowThreadProcessId(hWND, @ProcId); tProc := OpenProcess(PROCESS_ALL_ACCESS, False, ProcId); ReadProcessMemory(tProc, Ptr(Address), @value, 4, NBR); CloseHandle(tProc); Result:=value; end; //Faz a leitura de um determinado endereço como Byte function ReadMemByte(Address: Cardinal): Cardinal; var ProcId: Cardinal; tProc: THandle; NBR: Cardinal; value:byte; begin GetWindowThreadProcessId(hWND, @ProcId); tProc:= OpenProcess(PROCESS_ALL_ACCESS, False, ProcId); ReadProcessMemory(tProc, Ptr(Address), @value, 1, NBR); CloseHandle(tProc); Result:=value; end; //Faz a leitura de um determinado endereço como String function ReadMemString(addr, len : dword): string; var str : string; dwread : dword; IDProc: Integer; hHandle: hWnd; begin GetWindowThreadProcessId(hWND, @IdProc); hHandle := OpenProcess(PROCESS_VM_READ, False, IdProc); setlength(str, len); readprocessmemory(hHandle, pointer(addr), @str[1], len, dwread); result := str; end; //Faz a escrita de um determinado endereço como Integer procedure MWint(Address: Integer; buf: Integer; Length: DWORD); var ProcID, THandle: Integer; e: DWORD; begin GetWindowThreadProcessId(hWND, @ProcID); THandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID); WriteProcessMemory(THandle, Ptr(Address), @buf, Length, e); CloseHandle(THandle); end; //Faz a escrita de um determinado endereço como String procedure MWStr(Address: Integer; buf: String; Length: DWORD); var ProcID: Integer; THandle: hWnd; e: DWORD; begin GetWindowThreadProcessId(hWND, @ProcID); THandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID); WriteProcessMemory(THandle, Pointer(Address), PChar(buf), Length, e); CloseHandle(THandle); end;abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cyberhack Postado Novembro 17, 2007 Autor Denunciar Share Postado Novembro 17, 2007 Churc obrigado. deu para dar uma boa interpretação como fazerse tiver mais coisa e poder me mandar eu agradeço mesmo.e oque precisar estarei disposto ajudar..vlw amigos espero que este tópico tenha uma boa abrangencia para os estudantes Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FoXxD Postado Janeiro 25, 2008 Denunciar Share Postado Janeiro 25, 2008 Churc queria saber se tem como fazer em delphiPesquisar um valor na memoria e mostrar os endereços de memoria achados. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Cyberhack
Amigos venho ao forum para ter mais conhecimento sobre delphi, então me caiu uma dificuldade,
como e feita a manipulaçao em memoria dinamica e como editar ela..
procurei so mas são coisas vagas.
alguém pode me auxiliar?
Obrigado
Editado por MicheusNão observação do item 3.7 das regras do forum - NÃO digite em caixa alta (1º aviso)
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
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.