Сейчас на форуме: vsv1, _MBK_ (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Хочу изменть участок кода
Посл.ответ Сообщение

Ранг: 17.8 (новичок)
Активность: 0.020
Статус: Участник

Создано: 18 ноября 2007 18:55
· Личное сообщение · #1

Хочу изменть участок кода. Обработчик уже написан на С++ и скомпилен в dll с событием DLL_PROCESS_ATTACH.

Дело за малым, как сделать так чтобы программа загрузила мою dll?




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 18 ноября 2007 19:06
· Личное сообщение · #2

Инжект длл, правка таблици импорта, правка ключей реестра, отвечающих за автоподгрузку длл.

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 17.8 (новичок)
Активность: 0.020
Статус: Участник

Создано: 18 ноября 2007 20:27
· Личное сообщение · #3

Спасибо, но если не трудно то чуть-чуть по подробнее про правку таблицы импорта. Или хотя бы тулзу, которая это умеет.




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 18 ноября 2007 23:19
· Личное сообщение · #4

www.xakep.ru/post/38421/default.asp?print=true

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 17.8 (новичок)
Активность: 0.020
Статус: Участник

Создано: 19 ноября 2007 13:19
· Личное сообщение · #5

Спасибо за ссылку, всё подробно расписано.
Вот только глюк какой-то, непойму что делать, симптомы такие:

0)Исследуемая программа простенькая, ничем не упакована, PEiD говорит что это C++ 6.0
1)Если моей библиотеки нету, то ошибка, что dll не найдена. (наверное я правильно всё сделал и программе она нужна)
2)Если даешь ей dll, то ошибка, что точка входа в процедуру dummy не найдена в моей библиотеке. 3)Посмотрел ExportTable, спомощью PEiD в dll, компилятор (VC6) мою процедуру обзывает ?dummy@@YAHXZ, попробовал собрать библу в Visual Studio 2005, лучше не стало.
4)Изменил в программе dummy на ?dummy@@YAHXZ, вылетело исключение 0xC0000005.

ImageBase = 01400000
Вот то что я сделал:

.014000E0: 50 45 00 00-4C 01 04 00-51 E3 5E 3B-00 00 00 00 PE
...
.01400160: 10 2A 01 00-3C 00 00 00-00 80 01 00-70 36 0F 00
...
.01412A10: 00 00 00 00-60 2A 01 00-00 00 00 00-68 2A 01 00
.01412A20: 14 2A 01 00-30 26 01 00-00 00 00 00-00 00 00 00
.01412A30: 82 27 01 00-00 10 01 00-DC 26 01 00-00 00 00 00
.01412A40: 00 00 00 00-9E 27 01 00-AC 10 01 00-00 00 00 00
.01412A50: 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
.01412A60: 00 00 64 75-6D 6D 79 00-41 64 6D 53-72 76 2E 64 dummy AdmSrv.d
.01412A70: 6C 6C 00 00-00 00 00 00-00 00 00 00-00 00 00 00 ll



Ранг: 17.8 (новичок)
Активность: 0.020
Статус: Участник

Создано: 19 ноября 2007 16:06
· Личное сообщение · #6

Помогите пожалуста умным советом! А то очень нужно.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 19 ноября 2007 17:48
· Личное сообщение · #7

в .def файле для длл пропиши название экпорта нормально

AdmSrv.def:
LIBRARY AdmSrv
EXPORTS dummy


либо в объявлении ф-ции укажи

вылетело исключение 0xC0000005
обычно - это ошибка инициализации
видимо, ты что-то не то изменил

-----
EnJoy!




Ранг: 17.8 (новичок)
Активность: 0.020
Статус: Участник

Создано: 20 ноября 2007 10:44
· Личное сообщение · #8

Так и не научался я это красиво делать, пришлось обойтись инжект длл.


 eXeL@B —› Вопросы новичков —› Хочу изменть участок кода
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати