Показать сообщение отдельно
Старый 01.04.2015, 12:27   #12
urban81
Писатель
Доп. информация
Восклицание Тестовые проги готовы.Начинаем править exe файл!

Здравствуйте все.Тестовые проги готовы (всё необходимое в архиве).Начинаем править exe файл!Предисловие.В роли программы-утилиты,которая является аналогом утилиты
доктор фишь, будет моя прога ZZZ.exe. Она будет читать с порта ком1 в эмуляторе вин се(эмулятор приложен).При разборе в пе едиторе доктора фиша, нашёл ,что только она
имеет апи функцию реадфайл(доктор фишь читает с порта жпс данные) её идентификатор-00AAh.Нужно чтобы ёщё были какие нибудь данные в ком1.Сделаем так.Возьмём любой адептер юзб-ком.Нужно, чтобы на компе было два ком порта.В моём случае адаптер установил мне два порта ком1 и ком2. Сопрягаем ком1 в эмуляторе.Делаем далее нульмодем соединяем ком1 и ком2 так: 2(ком1)-3(ком2),2(ком2)-3(ком1),5(ком2)-5(ком1).Далее запускаем прогу Advanced Serial Port Monitor (приложена).В ней посылаем в ком2 любой
пакет байт.Наша прога ZZZ.exe должна ловить этот пакет байт (у меня ловит).XXXDLL.dll - длл которую мы будем внедрять вручную(с помощью пе тулс) в ZZZ.exe.В длл есть
функция function1 "заглушка"- нужна чтобы попасть в адресное пространство ZZZ.exe.Функция APIHook_ReadFile "подменнная"- нужна чтобы заменить апи реадфайл
(идентификатор-00AAh) в ZZZ.exe.Начинаем править ZZZ.exe.1.Внедряемся в адресное пространство ZZZ.exe.Положим ZZZ.exe и XXXDLL.dll в одну папку и cмотри
картинку.Делаем как на картинках.Обясняю (пока не знаю почему так).Внедрив заглушку надо поменять Original first Thunk.Проследив, как они располагаются в других
библиотеках(смотри рисунок 5 и 6).Они располагаются с приращением 4.Находим последний Original first Thunk в библиотеке commctrl.dll 32A8.И прибовляем к нему 4 = 32AC- это и будет наш Original first Thunk.Сохраняем всё и запускаем.Если, до этих действий добавить в XXXDLL.dll после кода "case DLL_PROCESS_ATTACH:" любое сообщение, то после наших исправлений оно должно появиться-это и есть знак МЫ НА ПРАВИЛЬНОМ ПУТИ!!!Вот попали в адресное пространство ZZZ.exe.Дальше надо как то заменить апи реадфайл на на нашу функцию APIHook_ReadFile...Остановился здесь...Уважаемые форумчане пробуем, правим, заменяем, делимся...Дальше план такой- при удачной замене длл XXXDLL.dll,будет писать лог...Но мы можем и не писать, а перенаправлять данные в виртуальный порт(в архиве есть в коде), чтобы с него кушала наши данные любая другая навигация.Так же там в проекте виртуального порта уже есть функция конвертации в нужный протокол NMEA (попался на просторах инета).Eщё, попав в адресное пространство мы можем перехватывать нажатия аппартных клавиш ГУ и тем саммым перенаправлять родную оболочку на любую другую программу навигации...Всем кто в теме спасибо за внимание.
П.С.Так же актуален вопрос: как внедрять длл с помощью кода и перехватывать реадфайл с помощью кода???
SDK2.doc-емулятор Вин се 6. переименовать в SDK2.msi
Архив:[[Ссылки могут видеть только зарегистрированные пользователи. ]]> Картинки:[[Ссылки могут видеть только зарегистрированные пользователи. ]]>
urban81 вне форума  
5 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.02924 секунды с 11 запросами