Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› запихнуть запись о dll в импорт проги
Посл.ответ Сообщение

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

Создано: 15 ноября 2006 14:24
· Личное сообщение · #1

мне надо как-то запихнуть запись о длл в импорт проги. Нужно чтобы длл получила управление сразу после всех остальных длл, тоесть ее в конец нада добавить....
Чувствую нада писать перепаковщик, который будет добавлять эту сраную запись.
1) Есть какойнить путь проще?
2) какие особености при пересборке учитывать? надо ли импортировать хотя бы одну функцию, или достаточно просто имя длл вписать в нужное место?




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 15 ноября 2006 14:42 · Поправил: Rascal
· Личное сообщение · #2

http://exelab.ru/f/action=vthread&forum=6&topic=6281&page= 0
Там есть аттач мой. Добавление в импорт новой библиотеки. Работает только с асмовыми прогами. Влом было доделывать. Прога работала, тестил. Новая библа получала управление.
Перестраивать маловероятно что-нить заработает. Только новую секцию с импортом цеплять, это когда нулей не хватит для добавления новой библиотеки и функции.

-----
Недостаточно только получить знания:надо найти им приложение




Ранг: 115.1 (ветеран), 3thx
Активность: 0.070
Статус: Участник

Создано: 15 ноября 2006 15:20 · Поправил: __
· Личное сообщение · #3

fix200 пишет:
мне надо как-то запихнуть запись о длл в импорт проги.


можно с помощью импрека, вручную подредактировав текстовый файл импорта который генерит импрек




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 15 ноября 2006 16:52 · Поправил: s0larian
· Личное сообщение · #4

fix200, так тебе надо изменить таблицу импорта. Беда только в том, что "уедут" offset-ы внутри файла. Я бы написал кусок кода который бы добавлял в конец файла секцию .newImport, перемащал туда то что лежит по указателю import directory и потом добавлял туда свою .dll и её функцию. Но, придётся писать код.

Попробуй сделать те же шаги но используя LordPE, imprec, pe explorer....



Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 16 ноября 2006 02:01
· Личное сообщение · #5

fix200 пишет:
мне надо как-то запихнуть запись о длл в импорт проги. Нужно чтобы длл получила управление сразу после всех остальных длл, тоесть ее в конец нада добавить....

IID King поможет отцу русской демократии
искать на wasm.ru




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 16 ноября 2006 02:14
· Личное сообщение · #6

Можно минизагрузчик на EntryPoint засандалить.

-----
Yann Tiersen best and do not fuck




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

Создано: 16 ноября 2006 03:26
· Личное сообщение · #7

1) Создаешь новую секцию, забитую нулями;
2) в начало секции копируешь все Import Directory Table (их размер и количество определяется легко);
3) дописываешь к перенесенным свою Import Directory Table, остальное оставляешь забитым нулями;
4) в ПЕ-хидере меняешь указатель на виртуальный адрес твоей новой секции.

Это все. В своей Import Directory Table проставишь ссылки на имя либы, табличку адресов на имена и на табличку адресов импорта из этой либы. Все эти указатели пусть кажут в твою же секцию. Думаю - это все.

ЗЫ Новую секцию желательно создавать, поскольку в старой может не быть места для добавления.



Ранг: 115.1 (ветеран), 3thx
Активность: 0.070
Статус: Участник

Создано: 16 ноября 2006 03:46 · Поправил: __
· Личное сообщение · #8

MoonShiner
это все делает импрек автоматом

сохраняем импорт в .txt

FThunk: 0000303C NbFunc: 00000003
1 0000303C kernel32.dll 00B7 ExitProcess
1 00003040 kernel32.dll 013C GetCurrentProcess
1 00003044 kernel32.dll 002E CheckRemoteDebuggerPresent

FThunk: 0000304C NbFunc: 00000002
1 0000304C user32.dll 01DD MessageBoxA
1 00003050 user32.dll 02D9 wsprintfA

добавляем нужные функции

FThunk: 0000303C NbFunc: 00000003
1 0000303C kernel32.dll 00B7 ExitProcess
1 00003040 kernel32.dll 013C GetCurrentProcess
1 00003044 kernel32.dll 002E CheckRemoteDebuggerPresent

FThunk: 0000304C NbFunc: 00000002
1 0000304C user32.dll 01DD MessageBoxA
1 00003050 user32.dll 02D9 wsprintfA

FThunk: 00003058 NbFunc: 00000002
1 00003058 kernel32.dll 0242 LoadLibraryA
1 0000305C kernel32.dll 0198 GetProcAddress

загружаем обратно



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

Создано: 16 ноября 2006 05:53
· Личное сообщение · #9

__, а если необходимо сделать для большого количества файлов на автомате? Будешь писать скрипт и прогу, которая будет запускать импрек, получать через него импорт, править его и нажимать в импреке кнопочку, чтобы сохранить его? Я просто описал алго, по которому можно написать соответствующую тулзу.

ЗЫ А если у тебя есть ехе-шник, но нет специфических библиотек, которые он использует? Ты не сможешь его запустить, чтобы в дальнейшем натравить на него импрек...



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

Создано: 17 ноября 2006 06:09
· Личное сообщение · #10

спасибо всем

ИмпРеком получилось.

Прога Rascal'a вылетает при загрузке в функции CImportEditor::FindImportSection на 3 строке mov ax, [ebx + 0x06]. Не разобрался почему.

Вручную не получается что-то. Я добавил новую секцию размером 1000h, в хедер и физически. Посмотрел в хедере указатель на таблицу импорта, скопировал ее в новую секцию. Странно, но размер там стоял 64h, хотя там явно больше. Поправил указатель на последнюю секцию на начало моего импорта. Туда же влепил 1 мою функцию и имя DLL. Прога грузится. Но об моей длл ни слуху не духу. В списках импорта ее тоже не видно (( тоже незнаю почему, чтото неверно сделал.

PE_Kill, загрузчик можно. А если GetProcAddress нету в импорте?



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

Создано: 17 ноября 2006 06:28
· Личное сообщение · #11

fix200 пишет:
Странно, но размер там стоял 64h

Чтож странного - значит в импорте 4 библиотеки

fix200 пишет:
Туда же влепил 1 мою функцию и имя DLL

А добавил свою Import Directory Table.

fix200 пишет:
А если GetProcAddress нету в импорте?

Найти ручками в кернеле.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 17 ноября 2006 07:59
· Личное сообщение · #12

fix200 пишет:
Прога Rascal'a вылетает при загрузке в функции CImportEditor::FindImportSection на 3 строке mov ax, [ebx + 0x06]. Не разобрался почему.

Хехе, плохо смотрел. Там чётко задано имя файла - calc.exe Нужно переименовать асмовую прогу в calc.exe, кинуть в папку с прогой и запустить.

-----
Недостаточно только получить знания:надо найти им приложение




Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 09 января 2007 15:13 · Поправил: 0xy
· Личное сообщение · #13

А как автоматом добавить dll в импорт, НЕ СОЗДАВАЯ НОВОЙ СЕКЦИИ ? (нулей вроде хватает)

В PeTools почему-то добавление недоступно, а LordPE создает новую секцию




Ранг: 353.0 (мудрец)
Активность: 0.370
Статус: Участник
resreveR

Создано: 09 января 2007 22:30
· Личное сообщение · #14

ручками добавляй ;) если не знаешь как - поищи в паках т53, там было именно то, что тебе надо

-----
Тут не могла быть ваша реклама




Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 09 января 2007 23:08
· Личное сообщение · #15

lord_Phoenix пишет:
поищи в паках т53

Это где?



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

Создано: 09 января 2007 23:43 · Поправил: RUffex
· Личное сообщение · #16

0xy пишет:
Это где?

http://www.exelab.ru/f/action=vthread&forum=2&topic=3530
а поточнее:
http://lord-phoenix.com/t53/


 eXeL@B —› Программирование —› запихнуть запись о dll в импорт проги
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати