Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.05 c
1-1090240503
Комбинатор
2004-07-19 16:35
2004.08.01
Можно ли заблокировать ShowMessage.


3-1089121283
AlexG
2004-07-06 17:41
2004.08.01
Характеристика поля из грида...


1-1089991635
ko
2004-07-16 19:27
2004.08.01
color


8-1082874386
X-Disa
2004-04-25 10:26
2004.08.01
3D - куб


11-1077973393
nester
2004-02-28 16:03
2004.08.01
Почему не работает raise?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский