Вниз
Скачать: CL | DM;

Значение ячейки памяти   Найти похожие ветки 

← →
ekap   (2004-07-21 13:30) [0]

у меня есть адрес в памяти запущеной программы например 0013BDAF как получить значение того что там находится?


← →
Ega23 ©   (2004-07-21 13:42) [1]

procedure TForm1.Button2Click(Sender: TObject);
var
i:Integer;
P:PInteger;
begin

New(P);
P^:=5;
Label1.Caption:=IntToStr(Integer(P));
i:=Integer(Pointer(StrToInt(Label1.Caption))^);
ShowMessage(IntToStr(i));
Dispose(P);
end;


← →
ekap   (2004-07-21 13:44) [2]

Вроде чё-то работает а как там указать адрес из которого значения брать. Заранее спасибо.


← →
Anatoly Podgoretsky ©   (2004-07-21 13:47) [3]

PChar($0013BDAF)^


← →
ekap   (2004-07-21 13:49) [4]

Всёравно непонял...чё с этим (PChar($0013BDAF)^) делать


← →
Ega23 ©   (2004-07-21 13:53) [5]

Всёравно непонял...чё с этим (PChar($0013BDAF)^) делать

Если у тебя по этому адресу integer лежит, то:

var
i:Integer;
begin

i:=PChar($0013BDAF)^;
end;

ОГсновная твоя проблема - знать ЧТО находится по данному адресу.


← →
Anatoly Podgoretsky ©   (2004-07-21 13:54) [6]

ekap   (21.07.04 13:49) [4]
Задача нерешаемая при данном объеме информации


← →
ekap   (2004-07-21 14:00) [7]

2Ega23 у меня там находится текст 2 байта. то-что ты написал (i:=PChar($0013BDAF)^;) помоему нелогично т.к. ты написал выше i:=Integer(Pointer(StrToInt(Label1.Caption))^);
можеш всё это совместить чтобы всё работало?


← →
Digitman ©   (2004-07-21 14:05) [8]


> ekap   (21.07.04 14:00) [7]


> у меня там находится текст 2 байта


> нелогично


если предполагать, что текст ограничен справа нуль-терминатором, то

ShowMessage(StrPas(PChar($0013BDAF)));


← →
Ega23 ©   (2004-07-21 14:05) [9]

ekap   (21.07.04 14:00) [7]

Тьфу, конечно описАлся!  :о)

Если "Текст 2 байта", то можно так:

type
PMytype=^TMyType;
TMyType=string[2];

var
p:PMyType;
begin
p:=Pointer($0013BDAF);

Label1.caption:=p^;
end;


← →
ekap   (2004-07-21 14:09) [10]

Лейбл вывел
"юююююююююююююююююююююююююююююююююююююююю"...
:( хотя я точно знаю что там другое значение. с типом и размером я точно не ошибся!


← →
Ega23 ©   (2004-07-21 14:11) [11]

А ты по правильному адресу обратился-то?


← →
VMcL ©   (2004-07-21 14:14) [12]

>>ekap  (21.07.04 13:30)

>в памяти запущеной программы

Маааааленький такой нескромный вопрос: своей программы или другой?


← →
ekap   (2004-07-21 14:14) [13]

да..


← →
ekap   (2004-07-21 14:15) [14]

другой


← →
Ega23 ©   (2004-07-21 14:16) [15]

Маааааленький такой нескромный вопрос: своей программы или другой?

Да, это мне как-то в голову даже не приходило!  :о)


← →
pasha_golub ©   (2004-07-21 14:16) [16]

ekap   (21.07.04 14:15) [14]
Класс. Читай про модель памяти в Винде. В справке есть.


← →
ekap   (2004-07-21 14:17) [17]

Если кто-то можеш помочь добавте мой UIN 181085 в ICQ чтобы быстрее было а результат я потом сдесь опубликую...


← →
ekap   (2004-07-21 14:18) [18]

2pasha_golub ведь дрограмма ArtMooney Это както делает. причём очень хорошо...


← →
Anatoly Podgoretsky ©   (2004-07-21 14:20) [19]

Type
 Ar2b = array[0..1] of byte
 PAr2b = ^Ar2b;

b1:= PAr2b($0013BDAF)[0];


← →
pasha_golub ©   (2004-07-21 14:20) [20]

ekap   (21.07.04 14:18) [18]
Я же не сказал, что это невозможно. Адрессные пространства у той программы, которую ты исследуешь, и твоей разные! И то что у нее находится по адресу хххх, это не то что находится по адресу ххх у тебя.


← →
pasha_golub ©   (2004-07-21 14:21) [21]

Anatoly Podgoretsky ©   (21.07.04 14:20) [19]
Тут интересная деталь всплыла.


← →
ekap   (2004-07-21 14:23) [22]

2 Anatoly Podgoretsky
b1 - переменная какого типа?


← →
VMcL ©   (2004-07-21 14:24) [23]

>>ekap  (21.07.04 14:17) [17]

OpenProcess()
  ReadProcessMemory()
CloseHandle()

>результат я потом сдесь опубликую...

Спасибо. Мне своего MacCheat© хватает (гы, надо ж иногда выпендриться).


← →
ekap   (2004-07-21 14:27) [24]

2VMcL может опубликуеш сдесь нужный кусок кода из твоего MacCheat?


← →
Ega23 ©   (2004-07-21 14:32) [25]

ekap   (21.07.04 14:27) [24]

Может, прежде чем хвататься кодировать, почитаешь:
1. про модель памяти в Винде (см. [16])
2. про  OpenProcess(), ReadProcessMemory(), CloseHandle() (см. [23])
3. про работу с указателями вообще?


← →
VMcL ©   (2004-07-21 14:33) [26]

>>ekap  (21.07.04 14:27) [24]

Нет. Учите матчасть, уважаемый. Там ничего сложного нет.


← →
ekap   (2004-07-21 14:36) [27]

Вот я тут нашёл кусочек.

program Loader;

uses Windows;
const buf:array[0..1] of byte=($0,$eb);
const appname="ххх.exe";

Var
i:cardinal;
sti:tstartupinfo;
lpPi:tprocessinformation;

begin
if not CreateProcess(nil,AppName,nil,nil,false,CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,nil,nil,StI,lpPI) then
begin
messageboxa(0,"А де radmin.exe?","RA Loader",0);
halt;
end

else
//Ждем пока распакуется
while true do
if readprocessmemory(lppi.hProcess,pointer($ac0506),@buf[0],1,i)
then
if buf[0]<>$0 then
begin

//остановили процесс
suspendthread(lppi.hThread);

//записали чо хотели
writeprocessmemory(lppi.hProcess,pointer($ac0506),@buf[1],1,i);

//поехали дальше!
resumethread(lppi.hThread);

closehandle(lppi.hprocess);
halt;
end;
end.

может просто вместо if readprocessmemory пихать в переменнёю а не в условие. Как думаете это оно?


← →
Anatoly Podgoretsky ©   (2004-07-21 14:39) [28]

ekap   (21.07.04 14:23) [22]
Ты же сам сказал, что у тебя два байта. если это не так, то смени тип



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.51 MB
Время: 0.021 c
1-1089808277
goliath
2004-07-14 16:31
2004.08.01
Работа с метафайлами (wmf)


4-1087382966
Leon
2004-06-16 14:49
2004.08.01
Можно ли послать сообщение WM_CLOSE и не ждать


1-1090228536
Artjom
2004-07-19 13:15
2004.08.01
Не могу сдизайнировать форму...


1-1089895114
Qwer
2004-07-15 16:38
2004.08.01
ComboBox


1-1090074536
Комбинатор
2004-07-17 18:28
2004.08.01
как избавиться от символа нуля вконце строки?




   Наверх