Форум: "Основная";
Текущий архив: 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