Существует некоторая програмка...
1.exe
У 1.exe после загрузки, по адресу 420102h (к примеру)...после каких-то проверок
устанавливается значение — "1" (к примеру)
00420102: 01 00 00 00
Задача: установить значение по этому адресу в "2" (к примеру..

) до начала выполнения 1.exe,
но сразу после загрузки его в память...и постоянно обновлять в случае его изменения на любое
другое значение...
таймер + WriteProcessMemory — результатов не дало...
Дело в том, что сразу после какой-то проверки и установки значения в "1" по этому адресу
программой, результат сразу же заносится в ListBox...и скорее всего значение не успевает
обновиться в "2"...есс-но в памяти потом оно устанавливается в "2" (WriteProcessMemory),
но в ListBox'e по-прежнему "1"....искать ячейку памяти строки ListBox'a не очень-то бы
хотелось.....
или может я чего-то не понимаю...
помогите кто сможет, кто сможет помогите....планета шелезяка...

)
Здравствуйте, lpro, Вы писали:
L>Существует некоторая програмка...
L>1.exe
L>У 1.exe после загрузки, по адресу 420102h (к примеру)...после каких-то проверок
L>устанавливается значение — "1" (к примеру)
L>00420102: 01 00 00 00
L>Задача: установить значение по этому адресу в "2" (к примеру..
) до начала выполнения 1.exe,
L>но сразу после загрузки его в память...и постоянно обновлять в случае его изменения на любое
L>другое значение...
--
Написать утилиту, которая является очень специализированным отладчиком, умеющим загружать и стартовать приложение 1.exe; контролировать доступ к ячейке памяти на запись (с помощью отладочных регистров) и изменять ее содержимое.
C уважением,
Геннадий Майко.
Здравствуйте, Геннадий Майко, Вы писали:
ГМ>Написать утилиту, которая является очень специализированным отладчиком, умеющим загружать и стартовать приложение 1.exe; контролировать доступ к ячейке памяти на запись (с помощью отладочных регистров) и изменять ее содержимое.
Я все это прекрасно понимаю...но как это реализовать?
Примерчик бы?...на Дельфе желательно...
В принципе-то все сводится к тому чтобы поставить бряку на изменение значения определенного адреса...Или к примеру создание компоненты типа:
TValueWatcher = class(.......)
//...
//...
property ValueList;
property Active;
property Address;
//...
property OnValueChange;
//...и т.п.
procedure TValueWatcher.OnValueChange(Sender: TObject; Value: DWORD);
//...примерно так :)
Здравствуйте, lpro, Вы писали:
BOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags, // <<-- That's what we need.
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
Process Creation Flags
.............................
.............................
CREATE_SUSPENDED The primary thread of the new process is created in a suspended state, and does not run until the ResumeThread function is called.
Здравствуйте, lpro, Вы писали:
ГМ>>Написать утилиту, которая является очень специализированным отладчиком, умеющим загружать и стартовать приложение 1.exe; контролировать доступ к ячейке памяти на запись (с помощью отладочных регистров) и изменять ее содержимое.
L>Я все это прекрасно понимаю...но как это реализовать?
L>Примерчик бы?...на Дельфе желательно...
--
Пример такого минимального отладчика можно найти в книге Джона Робинсона "Отладка Windows приложений".
C уважением,
Геннадий Майко.