|
1 / 1 / 0
Регистрация: 28.10.2011
Сообщений: 7
|
||||||||||||||||
Поиск функции в памяти по статическому адресу29.10.2011, 22:07. Показов 10301. Ответов 3
Метки нет (Все метки)
Добрый день!
Прошу прощения заранее, если текст ниже вам покажется бредом, я только начинаю знакомство с программированием на таком уровне. Вообщем Н/У: Имеется приложение которое отсылает зашифрованные пакеты стороннему серверу функциями send, а также получает зашифрованный ответ от сервера функциями recv. Алгоритм шифрования и дешифрования неизвестен. Задачи
Начнем с ответов стороннего сервера, чтобы расшифровать пришедший ответ, приложению потребуется прогнать его через свою функцию дешифровки, по логике вещей эта функция(дешифровки), должна идти практически сразу за вызовом функции recv и иметь как минимум два параметра(указатель на данные, и размер данных), запустив IDA Pro, и разложив там нужное мне приложение, я нашел адрес функции recv, примерно так:
Итак нужная нам функция найдена(так ли это?)), осталось сделать следующее: 1) создать dll для внедрения в исследуемое приложение 2) перехватить вызов функции recv 3) получить данные от стороннего сервера 4) запустить функцию sub_548840 передав в качестве параметра указатель на полученные данные и их размер(Вопрос 3: правильно ли я понимаю входные параметры?) Главный вопрос: С 1-3 проблем вообще никаких не возникает, все ультра просто, получаю зашифрованные данные, но вот как мне запустить найденную мной при дизассемблировании функцию? Я знаю ее адрес, но это ж адрес в exe файле, в памяти понятное дело другой будет, вот не пойму никак( пните пожалуйста что почитать можно, или если не трудно помогите примерчиком. Заранее всем экспертам огромное спасибо) Добавлено через 6 часов 11 минут неужели никто не знает?( укажите хотя бы что искать, читать.
0
|
||||||||||||||||
| 29.10.2011, 22:07 | |
|
Ответы с готовыми решениями:
3
Узнать имя хоста по статическому IP адресу Вызов функции-члена класса по адресу в памяти Инструкция по адресу “0x490e355” обратилась к памяти по адресу “0x065ea847” память не может быть “written” |
|
инженер-системотехник
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
|
|
| 30.10.2011, 00:24 | |
|
Во-первых, не совсем понятно откуда у вас исходники Си-функции дешифровки? Или вы сами написали Си-код по ассемблерному листингу, полученному в Ida Pro?
По поводу образа файла в памяти, то обычно exe-шники грузятся по одному базовому адресу и обычно загрузчик их не перемещает (хотя бывают исключения, но при желании можно запретить перемещать образ - обнулив поле DIRECTORY_ENTRY_BASERELOC в DATA_DIRECTORY заголовка файла). Так что можно сбросить данное поле и не волноваться о возможных изменениях адреса загрузки. Т.е. как вариант, запускаете прогу под отладчиком и смотрите, по какому адресу размещается функция в живую и далее используете этот адрес. Думаю, должно сработать.
1
|
|
|
1 / 1 / 0
Регистрация: 28.10.2011
Сообщений: 7
|
|
| 30.10.2011, 02:09 [ТС] | |
|
Haster, спасибо за ответ, сильно выручаете)
1) насчет си, IDA Pro это делает сама при нажатии f5, она перегоняет текущую функцию в си. мне он хотя б немного понятен в отличии от асма) 2) увы адреса перемещаются( менять что-то в exe нельзя, ибо он постоянно обновляется. 3) под отладчиком у меня дохнет машина(приложение когда запускается без отладчиком жрет под гиг памяти и периодически сильно грузит проц, отладчик усугубляет в разы), понимаю что проблема моя и моей жадности, но может все таки есть и другой путь? 4) я рассматриваю такой алгоритм: а) получить смещение для требуемой функции в exe=147C40, б) получить смещение для функции recv в exe=755234, в) вычислить их разницу: 755234-147C40=60D5F4, г) вбить это смещение(60D5F4) в константу в моей dll д) вычислить смещение(х) по файлу(при запущенном приложении и внедренной длл) функции recv - как его вычислить внятных примеров увы не нашел(((( е) получить расчетом смещение по файлу искомой функции: x+60D5F4=z, имея смещения z вычислить адрес функции(addr) - как имея смещение, получить адрес? ж) присвоить объявленому в моей длл указателю на прототип искомой функции адрес addr з) запустить объявленный прототип. Такой алгоритм даст ожидаемый результат? если да, то у меня еще два вопроса: 1) как вычислить смещение функции объявленной в работающем приложении из подгруженной в него "левой" длл? 2) как имея смещение функции получить адрес функции? заранее всем спасибо)
1
|
|
|
инженер-системотехник
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
|
|
| 30.10.2011, 11:33 | |
|
webprofusa, мне не совсем понятно, как вы внедряете в ехешник свою DLL? Просто подменяете оригинальную DLL на свою?
Вообще для таких целей используется обычно функция GetProcAddress, которая возвращает адрес нужной функции. Если есть смещение функции и базовый адрес загрузки, то адрес функции вычисляется обычным сложением первого со вторым. Вообще данный способ вряд ли сработает - т.к. DLL может в разные моменты времени грузиться по разным адресам.
1
|
|
| 30.10.2011, 11:33 | |
|
Помогаю со студенческими работами здесь
4
инструкция по адресу 0x7c91ac4a обратилась к памяти по адресу 0x00000010.Память не может быть written Ошибка: инструкция по адресу 0x00aeb5e2 обратилась к памяти по адресу 0x00000008.память не может быть read Ошибка «Инструкция по адресу 0х0093bd32 обратилась к памяти по адресу 0х00000000.Память не может быть «read» Инструкция по адресу 0х68е61526 обратилась к памяти по адресу 0xcdcdcdbd память не может быть "read" Инструкция по адресу 0x73ce8f18 обратилась к памяти по адресу 0х00000004. Память не может быть "read" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|