Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> дубликат длл 
V
    Опции темы
bass
Дата 4.4.2012, 06:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Такая ситуевина решил написать дллку подложу Ws2_32 Что бы подкинуть программе в корень и отлавливать сетевую активность....
Экспортировал все функции .... Но когда вызов проходит wsock32 в мою длл вызов попадает на совершенно другую функцию..... Че за бред.... Она лезет в дллл и по порядковому номеру чтоли ищет???? Вот тоже не задача экспортировал также вернее в томже порядке кроме жвух функций.... А попадает через 50 функций...... Куда копнуть...???

Заранее спасибо...
PM MAIL   Вверх
500mhz
Дата 4.4.2012, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



ну вполне , если по ординалам импортировать

а почему готовыми решениями не воспользоватся


--------------------

PM MAIL ICQ   Вверх
bass
Дата 5.4.2012, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Так и оказалось что обращение  идет по порядковому номеру.... 
Вопрос такой экпортирую функцию вот так
Код

extern "C" __declspec(dllexport)__stdcall    WSAEnumProtocolsW     ()
{.....}


Как компилятору сказать что эта функция с порятковым номером таким......(builder)

Готовыми решениями не могу пользоваться по определенным обстоятельствам(Прога на винапи должна быть).
PM MAIL   Вверх
GremlinProg
Дата 5.4.2012, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(bass @  5.4.2012,  14:49 Найти цитируемый пост)
Как компилятору сказать что эта функция с порятковым номером таким......(builder)

http://msdn.microsoft.com/en-us/library/hyx1zcd3.aspx
ordinal - и есть порядковый номер

Добавлено через 1 минуту и 28 секунд
хотя, builder, хз, не использую


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
500mhz
Дата 5.4.2012, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



bass
там другая засада, если ехе ипортирует по ординалам из ws2_32 то твой враппер должен экспортировать функ точно в том же порядке и точно так же импортировать из ws2_32


--------------------

PM MAIL ICQ   Вверх
bass
Дата 5.4.2012, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Не обращение едет только по индексу... Пришел к этому потому что хекс редактором скопировал таблицу импорта и потом обрабатывал текстовым редактором и функции идут как в оригинале а вот индексы что то не совпадают... 
PM MAIL   Вверх
500mhz
Дата 5.4.2012, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14




bass
тебе что нужно перехватить? вызовы сокета? грузи в процесс свою дллку и делай патч импортов ехешника, самое простое и эффективное.


--------------------

PM MAIL ICQ   Вверх
bass
Дата 6.4.2012, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Сначало так и сделал.... Но есть три приложения которые надо слушать ..... В одном вызовы шли через длл пришлось править ее импорты..... Во втором вызовы идут уже из распределенного кода в памяти...... (И вот здеся тупик.....) даже не из модуля .... ПОходу при загрузке этот код распаковываеться....((( До третьего не добрался.... Вот и начал писать вайпер...... Сейчас засада в том что Билдер ну не как не реагирует на деф файл.....

Код

LIBRARY     WS2_32.DLL

EXPORTS
    FreeAddrInfoW                  @3   ; FreeAddrInfoW
    GetAddrInfoW                   @4   ; GetAddrInfoW
    GetNameInfoW                   @5   ; GetNameInfoW


Меняю цифорки местами после компиляции не какого результата.... Посмотрел PE Експлоером.... 
Фильтр драйвер засадно для этого писать.......((((((((
PM MAIL   Вверх
500mhz
Дата 6.4.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



значит надо идти другим путем, патч точку входа в процедуру в ws32 а не импорты и экспорты


--------------------

PM MAIL ICQ   Вверх
bass
Дата 6.4.2012, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Пока желание идти до конца..... Должно же решиться.... Пробую скомпилить на вижуал студии но как то пока безуспешно... Еее вообще незнаю.... Скопмпилил длл при загрузке олька видает мессадж что точка входа хз. где... И не могу ей нати не одну функцию которую экспортировал smile  smile  smile 
PM MAIL   Вверх
500mhz
Дата 6.4.2012, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



5 минутные раздумья )))
хукаем send в своем процессе, точно также хукаеться и в чужом из дллки

Код

format PE
include 'win32ax.inc'



start:


    invoke LoadLibrary,"ws2_32.dll"
    mov [ws32],eax
    invoke GetProcAddress,eax,"send"
    mov [send_addr],eax

    mov eax,[ws32]
    add eax,[eax+0x3c]
    mov eax,[eax+0x50]
    invoke VirtualProtect,dword[ws32],eax,PAGE_READWRITE,esp

----------------------------------------перезаписываем начало функ send своим кодом для перехода на fake_send
    mov edi,[send_addr]
    mov esi,c1
    mov ecx,6
    repnz movsb
----------------------------------------
    stdcall dword[send_addr],0,0,0,0             вызываем как бы send а попадаем на fake_send
    invoke ExitProcess,0




c1:
    push dword fake_send
    ret




fake_send:
    invoke MessageBox,0,"Hello","Fake Send",0

----------------------------------  кусок начала функции send который мы перезаписали своим кодом
    mov edi,edi
    push ebp
    mov ebp,esp
    sub esp,10
----------------------------------
    mov eax,[send_addr]
    add eax,8
    jmp eax           а тут вызываем настоящий send


send_addr:
    dd    ?
ws32:
    dd    ?
.end start



Это сообщение отредактировал(а) 500mhz - 6.4.2012, 11:46


--------------------

PM MAIL ICQ   Вверх
bass
Дата 6.4.2012, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Иногда первые байты функции почему то не перезаписываються правда я пробовал копимемори и виртуалаллок.....    Спайсингом не хочу я считаю что это криво......
PM MAIL   Вверх
500mhz
Дата 6.4.2012, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



Цитата

Иногда первые байты функции почему то не перезаписываються

ну правильно, обычно секция кода имеет read only атрибут, для этого я и делаю VirtualProtect что бы можно было писать туда.


--------------------

PM MAIL ICQ   Вверх
bass
Дата 6.4.2012, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Ой перепутал я тоже это делал но как то безуспешно...
PM MAIL   Вверх
500mhz
Дата 6.4.2012, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



Тут фигня вот в чем, мы инжектим дллку в процесс уже после его инициализации, процесс вполне могу получить адреса функ в ws32 и теперь ему совсем не нужны и иморты свои ни экспорты из ws32.
В таком случае сплайсинг наш друг ).



--------------------

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.3152 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.