Delphi , Программа и Интерфейс , Приложение своё
Как получить путь запущенного приложения
для этого используется функция ExtractFilePath. Вот примеры её использования:
MessageDlg(‘program path = ‘ + ExtractFilePath(Application.ExeName, mtInformation, [mbOk], 0);
function ApplicationPath: string; begin Result := ExtractFilePath(ParamStr(0)); end;
Статья Как получить путь запущенного приложения раздела Программа и Интерфейс Приложение своё может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
Источник: www.kansoftware.ru
Программирование на Delphi
Есть handle запущенного PE файла. Как определить откуда он был запущен? Я так предполагаю что getmodulefilename как и GetModuleHandle работает в рамках только своего процесса. А решить твою задачу .. можно так: Тут парочка моих любимых функций:
Delphi 2017 R3 with keygen cable and software setup and installation guide
uses tlhelp32; type TModuleArray = array of TModuleEntry32; // Возвращает список описаний (TModuleEntry32) модулей по идентификатору процесса function GetModulesListByProcessId(ProcessId: Cardinal): TModuleArray; implementation function GetModulesListByProcessId(ProcessId: Cardinal): TModuleArray; var hSnapshot: THandle; lpme: TModuleEntry32; procedure AddModuleToList; begin SetLength(Result, High(Result) + 2); Result[high(Result)] := lpme; end; begin SetLength(Result, 0); hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessId); if hSnapshot = -1 then RaiseLastWin32Error; lpme.dwSize := SizeOf(lpme); if Module32First(hSnapshot, lpme) then begin AddModuleToList; while Module32Next(hSnapshot, lpme) do AddModuleToList; end; end;
Программа и Интерфейс — Процессы и Сервисы
Unit с полезными функциями для работы с процессами
Источник: delphibaza.ru
Точка входа в приложение

Точка входа (адрес) главного файла (*exe)/модуля стороннего приложения, как узнать? Возможно ли это без инжекта? Для лучшего понимания:
Отслеживать
Григорий Пономарёв
задан 29 янв 2012 в 6:38
Григорий Пономарёв Григорий Пономарёв
815 1 1 золотой знак 10 10 серебряных знаков 25 25 бронзовых знаков
Не знаю, что это за инструмент, но db 0F наводит на мысль что встроенный дизассемблер не поддерживает некоторые инструкции)
29 янв 2012 в 13:04
Поглядел под идой, отображаются те же самые инструкции. Инструмент cheatengine.org/downloads.php конечно, у него несколько иное предназначение, но мелких правок на ходу годится
Delphi — strToFloatF
30 янв 2012 в 0:47
Значит это не код, а данные
30 янв 2012 в 11:02
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
С самого начала экзешника идет MZ-заголовок, в котором можно найти смещение начала PE-заголовка. В PE заголовке есть поле ‘Entry point RVA’, это и есть адрес точка входа.
UPD. точнее, RVA — это относительный виртуальный адрес. Чтобы получить адрес точки входа, нужно к значению ‘Entry point RVA’ прибавить значение поля ‘Image Base’.
UPD.2 короче, как я понял, в вопросе под «точкой входа» подразумевается поле ImageBase, которое для экзешников как правило (возможно даже всегда) равно 0x400000. Каким образом экзешник может себя загрузить по какому-то «рандомному» адресу пока не понятно.
UPD.3 и последний WinXP не умела загружать экзешник по произвольному базовому адресу, Win7 — умеет (скорее всего Vista и Win8 тоже), при условии наличия в экзешнике таблицы релокаций. Т.о. нужно запускать программу и каким-то образом узнавать базовый адрес загрузки. Инжект или не инжект не могу сказать, т.к. с данной областью не знаком.
Источник: ru.stackoverflow.com