Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41

Изменение адреса во время выполнения программы

26.02.2016, 15:34. Показов 2332. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день умники и умницы. Помогите пожалуйста разобратся в такой вот проблемке:
Есть программа для чтения записи значений в другом приложении. Но вот адрес на чтение/запись данных ни как не могу сделать изменяемым в самой программе, сейчас поясню вот сам код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1Click(Sender: TObject);
const
  Addr1 = ($0D631048); 
  Addr2 = ($0CDCEECC);
begin
....
ReadProcessMemory(ProcHandle,ptr(Addr2),@lalal,4,rw);                   
....
WriteProcessMemory(ProcHandle,ptr(Addr1),@lalal,4,rw);
...
end;
Как сделать так что бы вот эти Addr1 и Addr2 можно было изменить, в Edit1. записать их, нажать на кнопку и она становились как в Edit1. Их видимо надо в переменные перенести а вот какой тип им придать и как потом из edit в их тип перевести и задать их ума не приложу. Получается тут что бы сменить адрес надо открывать дельфи переписывать и заново компилировать, а надо что бы в самой программе новые адреса можно было записать, выручите пожалуйста.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2016, 15:34
Ответы с готовыми решениями:

Изменение переменной во время выполнения программы
Здравствуйте! Мне необходимо изменять переменную во время выполнения программы. Для этого я решил использовать ScrollBar. Но в результате я...

Изменение значения Label во время выполнения программы
Всем привет. Есть такой вопрос. Пишу программу с использованием графической оболочки Qt. На форме есть ячейки которые следует заполнить при...

Изменение размеров компонентов во время выполнения программы
Недавно мне понадобилось написать код, чтобы во время выполнения программы можно было изменять размеры кнопки, как в настоящей среде...

18
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
26.02.2016, 16:07
Цитата Сообщение от MaxXx Посмотреть сообщение
Их видимо надо в переменные перенести а вот какой тип им придать
Pointer

Цитата Сообщение от MaxXx Посмотреть сообщение
как потом из edit в их тип перевести и задать
либо
Addr := Pointer(StrToInt('$' + Edit.Text)); // символ '$' первым символом в Edit писать не нужно
либо
Addr := Pointer(StrToInt(Edit.Text)); // ожидается что символ '$' есть первый символ в Edit

Не по теме:


Цитата Сообщение от MaxXx Посмотреть сообщение
Получается тут что бы сменить адрес надо открывать
Учебник сначала надо открывать, а не вертеть делфёй как так мартышка очки)

1
28 / 28 / 23
Регистрация: 26.12.2015
Сообщений: 154
26.02.2016, 16:10
Лучший ответ Сообщение было отмечено MaxXx как решение

Решение

попробуй, но не уверен:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1Click(Sender: TObject);
var addr1,addr2:longint;
begin
Addr1:=StrToIntDef('$'+edit1.text, 0);
Addr2:=StrToIntDef('$'+edit2.text, 0);
...
ReadProcessMemory(ProcHandle,ptr(Addr2),@lalal,4,rw);                   
...
WriteProcessMemory(ProcHandle,ptr(Addr1),@lalal,4,rw);
...
end;
1
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
29.02.2016, 07:24  [ТС]
Спасибо огромнейшее! Очень благодарен вам! Расставил всем спасибы!
0
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
29.02.2016, 08:40  [ТС]
Раз уж такая пьянка пошла давайте ещё вопросик задам, может хотя бы пнёте в нужном направлении для полёта ))
Всё тоже самое. Адрес теперь пишу через Edit, но мы же люди хочется большего ) Через чит енджин узнал, что эти адреса имею постоянные обращения через eax+1c и ebx+18. Получается надо в программе написать какой то код по определению этих двух адресов aex ebx прибавить к ним 1с и 18 и всё. Тоесть мне даже вводить ни чего не надо будет.
Получается задача. Как через Delphi определить значение aex и ebx в стороннем приложении.
Как не искал в интернете везде одни и теже скопированные статьи "Как сделать тренер не для DMA игры" и там всё равно статический адрес идёт.
Может перенести тему в нужное место или от сюда прям пнёте )
Заранее благодарен за ответы!
Миниатюры
Изменение адреса во время выполнения программы  
0
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
29.02.2016, 08:50  [ТС]
После некоторых поисков нашёл вот такой код получил вообще невнятные крикозябрины )))
Миниатюры
Изменение адреса во время выполнения программы  
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
29.02.2016, 09:02
Цитата Сообщение от MaxXx Посмотреть сообщение
Как ...определить значение aex и ebx в стороннем приложении
Никак.
1
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
29.02.2016, 09:09  [ТС]
Спасибо. Ладно думаем дальше. Какие нибудь предложения можете сделать?)
0
29.02.2016, 09:16

Не по теме:

Цитата Сообщение от MaxXx Посмотреть сообщение
предложения можете сделать?
Не страдать фигней и играть честно)

0
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
29.02.2016, 09:20  [ТС]
Это то понятно ) Но игра уже давно взломана ) Делаю же для общего упрощения операций взлом ) Русским языком лень много чего делать, лечге 1 раз написать тренер или как это назвать )
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
29.02.2016, 14:38

Не по теме:

Цитата Сообщение от MaxXx Посмотреть сообщение
Русским языком лень много чего делать
Кроме как чесать им)



Нет бы взять учебник и проштудиров его понять, что ни eax, ни ebx, ни какой-либо другой регистр процессора не имеют отношения к виртуальной памяти процесса, к которой обращается ф-ция ReadProcessMemory
1
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
29.02.2016, 17:21  [ТС]
Хорошо я не спорю, просто резонный вопрос а как же тогда пишутся другие трейнеры если адреса меняются в большинстве приложений?)
0
29.02.2016, 21:35

Не по теме:

Они пишутся теми кто штудирует учебник)

0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
01.03.2016, 00:25
Цитата Сообщение от MaxXx Посмотреть сообщение
Через чит енджин узнал, что эти адреса имею постоянные обращения через eax+1c и ebx+18
Детский сад. Штаны на лямках.
Цитата Сообщение от MaxXx Посмотреть сообщение
Получается надо в программе написать какой то код по определению этих двух адресов aex ebx
Ты бы хоть одну умную книжку бы прочитал.
0
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
01.03.2016, 06:45  [ТС]
Вы конечно же правы ) но если бы я читал умные книжки в этом направлении я бы не задавал тут вопросы свои )
Все люди разные и развиваются в разных направлениях невозможно знать всё, и вот когда у человека появляются вопросы в област в которой он не силён он обращается за советом к тем людям которые в этом плане умнее него. Это естественный процесс не так ли?
Представь, что ты пришёл к врачу и говориш: "У меня болит живот" а доктор тебе отвечает: "Иди умные книжки читай". Понимаете о чём я?)
0
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
01.03.2016, 07:16  [ТС]
Вот покопался тут на просторах форума и нашёл что-то видимо то что мне надо. То что получилось во вложении. Работаем дальше )
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function GetBasePointerOfModule(ProcessId: dword; Modulename: string): Integer;
var
  FSnapshotHandle: THandle;
  FModulEntry32: MODULEENTRY32;
  s: string;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessId);
  try
    if FSnapshotHandle <> INVALID_HANDLE_VALUE then
    begin
      FModulEntry32.dwSize := SizeOf(FModulEntry32);
      if Module32First(FSnapshotHandle, FModulEntry32) then
      begin
        repeat
          s := FModulEntry32.szModule;
          Form1.Edit5.Text:=s;
          if s = Modulename then
          begin
            Result := Integer(FModulEntry32.modBaseAddr);
            break;
          end;
        until (not Module32Next(FSnapshotHandle, FModulEntry32));
      end;
    end;
  finally
    closeHandle(FSnapshotHandle);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
WindowTitle: PChar;
Wnd : THandle;
ProcHandle : integer;
ProcessId : integer;
begin
WindowTitle:=PCHar(Edit2.Text);
Wnd := FindWindow(nil,WindowTitle);
GetWindowThreadProcessId(Wnd, @ProcessId);
ProcHandle := OpenProcess(PROCESS_ALL_ACCESS,false,ProcessId);
Edit1.Text:=IntToStr(GetBasePointerOfModule(ProcessId,'Flashplayer.exe'));
Edit3.Text:=IntToStr(ProcessId);
Edit4.Text:=WindowTitle;
end;
Тоесть PID мы определили правильно и базовую точку тоже. Думай голова два уха )
Миниатюры
Изменение адреса во время выполнения программы  
0
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
02.03.2016, 17:02  [ТС]
Так. Выполнил я все эти операции. Всё прописал и всё проверил, всё правильно. Теперь дальше как я понял надо искать указатели на интересующие меня адреса верно?
Вот всё работает:
Миниатюры
Изменение адреса во время выполнения программы  
0
02.03.2016, 21:20

Не по теме:

Цитата Сообщение от MaxXx Посмотреть сообщение
Это естественный процесс не так ли?
Нет, не так.
Естествественен он лишь тому кому "лень".
Конкретно тебе лень, ты сам об этом заявил - тебя никто за язык не дергал.

0
1 / 1 / 0
Регистрация: 04.11.2014
Сообщений: 41
03.03.2016, 15:43  [ТС]
Конечно мне лень ) Что бы начать что-то понимать и разбиратся в какой то области нужно пройти целый курс обучения и прочитать кучу литературы. На, что у меня нет желания. Так как я специалист совершенно в другой области и развиваюсь естественно в её направлении )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2016, 15:43
Помогаю со студенческими работами здесь

Изменение размеров и перетаскивание контролов во время выполнения программы
День добрый! Кто нибудь сталкивался с таким вопросом? Я нашел, вот такую статью. Но может быть есть стандартные варианты решения?

Изменение размеров Grid во время выполнения приложения
необходимо изменить размер grid с помощью мыши при этом grid создается динамически во время выполнения программы. Был бы признателен за...

Изменение подсказки ToolTip контрола во время выполнения
Как изменить подсказку ToolTip для button1 во время выполнения программы?

Изменение ListView в форме во время выполнения события
Доброго времени суток! Пишу приложение, которое выводит в список (ListView) данные при нажатии кнопки с небольшой задержкой в...

Изменение типа ValueConverter во время выполнения приложения
Здравствуйте. У меня есть множество текстбоксов, в которые мне нужно выводить значения разных форматов. Для этого я использую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru