|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Результаты опроса: есть вопросы? | |||
да | 0 | 0% | |
нет | 0 | 0% | |
забираю деньги | 1 | 50.00% | |
50/50 | 0 | 0% | |
помощь зала | 1 | 50.00% | |
звонок другу | 0 | 0% | |
Голосовавшие: 2. Вы ещё не голосовали в этом опросе |
|
Опции темы | Поиск в этой теме |
20.04.2010, 16:09 | #1 |
Пользователь
Регистрация: 18.04.2010
Сообщений: 24
|
запись кода в другой процесс
открываю процесс, выделяю в нём память, записываю туда инструкции и запускаю их при помощи CreateRemoteThread
некоторые инструкции вызывают ошибку, например операции ссылающиеся на память может адреса нужно както корректировать? Последний раз редактировалось ассемблер123; 20.04.2010 в 16:30. |
20.04.2010, 16:50 | #2 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
Если речь о переменных, то тут все просто - нужно найти дельта-смещение.
Что касается API - адреса API Kernel32, если не ошибаюсь, во всех процессах одинаковые. Правда, я не проверял остаются ли они такими же после перезагрузки. Например вот адрес GetProcAddress для моей системы - 0x768A1837. Можно в инъекторе заполнить своеобразную таблицу импорта вашего зонда и он уже по прибытии на место дополнит ее нужными ему функциями, с помощью той же GetProcAddress. Правда, этот метод очень накладный. Гораздо легче создать свою DLL и подгрузить ее в процесс. Подгрузить свою DLL очень просто: 1. Получаем адрес LoadLibrary. 2. Выделяем в процессе участок памяти. 3. Записываем в него название вашей DLL 4. CreateRemoteThread, в качестве ThreadEntry - адрес LoadLibrary, в качестве Param - адрес выделенной памяти, куда мы записали название DLL. PS: Сугубо в академических целях или специфическая задача?
"Тяжело в учении, легко в бою" - А.В. Суворов
Последний раз редактировалось Ivan_32; 20.04.2010 в 16:54. |
20.04.2010, 18:36 | #3 |
Пользователь
Регистрация: 18.04.2010
Сообщений: 24
|
подгрузка dll не работает
извините за изменённый MASM синтаксис # - offset ` - invoke Код:
Последний раз редактировалось ассемблер123; 20.04.2010 в 18:50. |
20.04.2010, 19:29 | #4 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
Код:
"Тяжело в учении, легко в бою" - А.В. Суворов
|
20.04.2010, 19:54 | #5 |
Пользователь
Регистрация: 18.04.2010
Сообщений: 24
|
по симптомам я определил что моя библиотека всётаки подгружается, но её стартовый код почемуто выполняется тысячи раз
Код:
Последний раз редактировалось ассемблер123; 20.04.2010 в 20:05. |
20.04.2010, 20:34 | #6 |
Пользователь
Регистрация: 18.04.2010
Сообщений: 24
|
бред какой-то: заменил mov eax,1 на mov eax,0 и теперь стартовый код выполняется только 2 раза
ООО чудо!!! Код:
Всем спасибо Последний раз редактировалось ассемблер123; 20.04.2010 в 20:40. |
21.04.2010, 08:18 | #7 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
fdwReason может принимать 4 разных значения. Одно из них - DLL_PROCESS_ATTACH - вот его вам и нужно хендлить.
Если fdwReason == DLL_PROCESS_ATTACH - начинаем инициализацию итд, после инициализации - возвращаем TRUE. Вам нужно будет создать свой тред в котором будет идти дальнешая инициализация, поскольку процесс будет ждать пока завершится DllEntry. Если fdwReason == DLL_PROCESS_DETACH - завершаем тред.
"Тяжело в учении, легко в бою" - А.В. Суворов
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать,так что бы запись в из одного ДБГрида добавлялась в другой ДБгрид | Hito | БД в Delphi | 10 | 19.04.2009 21:14 |
чтение из одного exe файла, и запись в другой exe | inndim | Общие вопросы Delphi | 2 | 04.02.2009 15:23 |
Как решить задачу по написанию кода для определения текущей или любой другой даты? | Psyka | Помощь студентам | 5 | 25.04.2008 08:32 |
Выдернуть куски кода из html-кода | trafbite | Помощь студентам | 7 | 18.08.2007 13:51 |