Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: 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 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.061 c
3-1089000280
Алексей Петухов
2004-07-05 08:04
2004.08.01
Кодировка


4-1087046455
juiceman
2004-06-12 17:20
2004.08.01
АПИ-функции для работы с оборудованием


10-1019627903
denis_1
2002-04-24 09:58
2004.08.01
DCOM


9-1080866934
vitas2
2004-04-02 04:48
2004.08.01
и я тогда покажу


9-1081717014
Werwolf
2004-04-12 00:56
2004.08.01
Продолжение темы "Пиратов бесконечности"