 |
Вопрос по Делфи. - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
23.03.2012, 00:36
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 25.04.2011
 Сообщений: 19
 Популярность: 14
 Сказал(а) спасибо: 10
Поблагодарили 2 раз(а) в 2 сообщениях
|
Вопрос по Делфи.
ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesRead: DWORD): BOOL; stdcall;
Прошу объяснить эту функцию, подробно. Знаю для чего, но подробно понять не могу. Либо дайте ссылку на описание, либо посоветуйте учебник по WinApi. Все переискал нигде найти не могу.
Последний раз редактировалось Lermontov; 23.03.2012 в 00:41.
|
|
|
23.03.2012, 00:50
|
#2
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: Вопрос по Делфи.
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesRead: DWORD): BOOL; stdcall;
|
|
 |
|
 |
|
hProcess: THandle - это хендл процесса, предварительно открытый с помощью функции OpenProcess.
lpBaseAddress: Pointer - это адрес памяти, из которого нужно читать данные, а точнее указатель, который равен этому адресу. Но чтобы не морочить голову, держите в уме, что это просто адрес, который надо привести к типу указателя (делается это вот так: ptr(Address) - именно так выглядит типичный второй параметр данной функции).
lpBuffer: Pointer - это указатель на место, в которое нужно положить результат (это адрес переменной, массива и т.д.). Пишут так: @result - так выглядит третий параметр.
nSize: DWORD - это размер, кол-во байтов, нужных для считывания из указателя lpBaseAddress и помещения в lpBuffer. Передают 1, 2 или 4 байта, если типы byte, word и dword соответственно.
lpNumberOfBytesRead: DWORD - переменная, в которую запишется количество считанных байтов. Эта переменная может служить для проверки (если кол-во байтов в ней не равно nSize, то функция завершилась неудачно).
Вот примерчик:
Код:
var
Result, br: DWORD;
hProc: THandle;
..
begin
..
ReadProcessMemory(hProc, ptr($B27A04), @Result, 4, br);
..
end;
в Result будет содержаться значение, хранящееся в процессе hProc по адресу $B27A04, при этом br будет содержать кол-во считанных байтов (и должно быть равно 4 в случае удачного считывания).
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
Последний раз редактировалось BritishColonist; 23.03.2012 в 10:31.
|
|
|
Пользователь сказал cпасибо:
|
|
23.03.2012, 23:31
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 25.04.2011
 Сообщений: 19
 Популярность: 14
 Сказал(а) спасибо: 10
Поблагодарили 2 раз(а) в 2 сообщениях
|
Re: Вопрос по Делфи.
Требуется помощь!
http://zhyk.ru/forum/showthread.php?t=331413
Хочу сделать, что бы, допустим, значение ХП показывалось в Edit, но Delphi жалуется, что несовместимые типы переменных. Я так понял, что Edit не может показать переменные типа integer (или любые числовые переменные).
|
|
|
24.03.2012, 00:54
|
#4
|
|
|
|
Пехотинец
|
 Регистрация: 12.07.2010
 Сообщений: 88
 Популярность: 56
 Сказал(а) спасибо: 19
Поблагодарили 24 раз(а) в 17 сообщениях
|
Re: Вопрос по Делфи.
________________
Лучшая благодарность нажать СПАСИБО.
Спасибо недоступно - нажмите на плюсик возле аватара Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
24.03.2012, 01:08
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 25.04.2011
 Сообщений: 19
 Популярность: 14
 Сказал(а) спасибо: 10
Поблагодарили 2 раз(а) в 2 сообщениях
|
Re: Вопрос по Делфи.
|
|
|
24.03.2012, 01:51
|
#6
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: Вопрос по Делфи.
Lermontov, Edit1.Text := 'Health = '+IntToStr(dwHealth);
Либо так: Edit1.Text := Format('Health = %d',[dwHealth]);
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
|
|
|
Пользователь сказал cпасибо:
|
|
24.03.2012, 15:41
|
#7
|
|
|
|
Старший сержант
|
 Регистрация: 05.12.2009
 Сообщений: 232
 Популярность: 14358
 Сказал(а) спасибо: 135
Поблагодарили 92 раз(а) в 54 сообщениях
|
Re: Вопрос по Делфи.
________________
Клац Клац^^
|
|
|
Пользователь сказал cпасибо:
|
|
24.03.2012, 16:48
|
#8
|
|
|
|
Разведчик
|
 Регистрация: 25.04.2011
 Сообщений: 19
 Популярность: 14
 Сказал(а) спасибо: 10
Поблагодарили 2 раз(а) в 2 сообщениях
|
Re: Вопрос по Делфи.
 |
Цитата: |
 |
|
|
|
|
|
Мммм, в каком смысле?
|
|
|
24.03.2012, 17:04
|
#9
|
|
|
|
Старший сержант
|
 Регистрация: 05.12.2009
 Сообщений: 232
 Популярность: 14358
 Сказал(а) спасибо: 135
Поблагодарили 92 раз(а) в 54 сообщениях
|
Re: Вопрос по Делфи.
Перевести в другой формат если не получается
________________
Клац Клац^^
|
|
|
26.03.2012, 10:43
|
#10
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: Вопрос по Делфи.
reca, вопрос задан в ветке, предназначенной для этого. В чём проблема?
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
|
|
|
26.03.2012, 14:32
|
#11
|
|
|
|
Пехотинец
|
 Регистрация: 02.04.2011
 Сообщений: 66
 Популярность: 9953
 Сказал(а) спасибо: 898
Поблагодарили 412 раз(а) в 209 сообщениях
|
Re: Вопрос по Делфи.
|
|
|
27.03.2012, 23:14
|
#12
|
|
|
|
Разведчик
|
 Регистрация: 25.04.2011
 Сообщений: 19
 Популярность: 14
 Сказал(а) спасибо: 10
Поблагодарили 2 раз(а) в 2 сообщениях
|
Re: Вопрос по Делфи.
|
|
|
28.03.2012, 18:05
|
#13
|
|
|
|
Лейтенант-командор
|
 Регистрация: 12.08.2010
 Сообщений: 727
 Популярность: 30569
 Золото Zhyk.Ru: 1
 Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: Вопрос по Делфи.
Lermontov, вот рабочая функция чтения Unicode строки из памяти:
Код:
function ReadPlayerName(hProcess,data:DWord): string;
var
i,rw:DWord;
ch:WideChar;
wch:array[0..255] of WideChar;
str:string;
begin
i:=0;
repeat
ReadProcessMemory(hProcess,ptr(data),@ch,2,rw);
data:=data+2;
wch[i]:=ch;
inc(i);
until
(ord(ch)=0) or (i>=255);
i:=0;
str:='';
repeat
str:=str+wch[i];
inc(i);
until
wch[i]='';
result:=str;
end;
Юзать так:
Код:
var
Wnd:THandle;
hProcess,PID:DWord;
const
BA=$00B27A04;
begin
Wnd:=FindWindow('ElementClient Window',nil);
GetWindowThreadProcessId(Wnd,@PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,PID);
if hProcess<>0 then
begin
try
ReadProcessMemory(hProcess,ptr(BA),@ibuf,sizeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$1C),@ibuf,sizeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$34),@ibuf,sizeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$638),@buf,sizeof(buf),BC);
ShowMessage(ReadPlayerName(hProcess,buf));
finally
CloseHandle(hProcess);
end;
end;
end;
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.
|
|
|
Пользователь сказал cпасибо:
|
|
03.04.2012, 00:31
|
#14
|
|
|
|
Разведчик
|
 Регистрация: 25.04.2011
 Сообщений: 19
 Популярность: 14
 Сказал(а) спасибо: 10
Поблагодарили 2 раз(а) в 2 сообщениях
|
Re: Вопрос по Делфи.
Спасибо всем кто помог 
Хочу научится вводить инжекты в игру, пытался по этой теме- http://zhyk.ru/forum/showthread.php?t=207760 , но для новичка там все написано непонятным языком, 1 этап понял, а вот второй и третий нет  Прошу помощи!
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] Делфи
|
Inok0 |
Общение и обсуждение |
23 |
26.05.2011 00:31 |
[Обсуждение] делфи вопрос
|
"Unix |
Общение разработчиков |
5 |
15.03.2011 10:27 |
[Помогите!] Бот на делфи
|
Fizerator |
Вопросы и ответы, обсуждения |
3 |
31.12.2010 19:45 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 19:53.
|
 |