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

 eXeL@B —› Программирование —› Таблица импорта в PE
<< . 1 . 2 .
Посл.ответ Сообщение

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

Создано: 21 сентября 2006 08:27 · Поправил: sniperZ
· Личное сообщение · #1

Есть
IMAGE_IMPORT_DESCRIPTOR STRUCT
union
Characteristics dd ?
OriginalFirstThunk dd ?
ends
TimeDateStamp dd ?
ForwarderChain dd ?
Name1 dd ?
FirstThunk dd ?
IMAGE_IMPORT_DESCRIPTOR ENDS

В ней есть Name1 - имя DLL.

Написано:
Name1 содержит имя импортируемой функции в формате ASCIIZ. Хотя этот параметр определен как байт, на самом деле он переменного размера. Так было сделано лишь потому, что нельзя представить в структуре поле переменного размера. Структура была определена для того, чтобы вы могли обращаться к данным через описательные имена.


И ещё:
Name1 отличается от других параметров тем, что оно содержит RVA имени DLL.

Ето что, надо перейти по RVA имени и прочеть её?
И какой длины имя читать(чёчо не въеду)?

...и ещё:
Вместо этого, IMAGE_THUNK_DATA этой функции будет содержать ординал функции в нижнем слове и самый значимый бит (MSB) IMAGE_THUNK_DATA'ы будет установлен в 1.

Это как? Как понять значимый бит?




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

Создано: 24 сентября 2006 06:58
· Личное сообщение · #2

Тут другая тема - просто рипнуть. А вот напиши TotalCommander на асме, будешь и CRC писать на асме ;) Что удобнее, мож на ЯВУ (языке высокого уровня) написать ;)) А переписывать с асма я кста с радостью. Люлблю реверсить.
ЗЫЖ вообще есть мелкомягкая библа, и функция crc32 есть ;)

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




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 29 сентября 2006 00:58
· Личное сообщение · #3

Demon666 пишет:
Ну, хорошо чуть обосную

Так это никто не оспаривает. Но кто мешает в Си или Дельфи вызывать подпрограмму или DLL на ассемблере сделанную. Кроме того ассемблерные вставки тоже никто не отменял. Но зачем писать интерфейс на ассемблере - не пойму. Любое изменение требует лишних усилий. Вот и гуляют генераторы ключей, у которых элементы меню расползаются по экрану, как тараканы Хотя конечно у кого платный Интернет, то каждый килобайт на счету.



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 29 сентября 2006 09:09
· Личное сообщение · #4

Rascal пишет:
ЗЫЖ вообще есть мелкомягкая библа, и функция crc32 есть ;)

Ну и на ASM есть, только там я сейчас не помню, так на скидку все функции хеша даже нестандартные есть (приват!)
tundra37 пишет:
Хотя конечно у кого платный Интернет, то каждый килобайт на счету.

Это не проблема пакер или на крайний случай *.zip, *.rar
tundra37 пишет:
Любое изменение требует лишних усилий

Для начинающего да, но не для специалиста в этой области
tundra37 пишет:
Кроме того ассемблерные вставки тоже никто не отменял.

Это мы уже здесь обсуждали (и с тобой в другой теме) разница кошмарный код, который засовывает компилятор…
tundra37 пишет:
Но кто мешает в Си или Дельфи вызывать подпрограмму или DLL на ассемблере сделанную.

Ну, тогда у меня вопрос такой:
Есть функция GetProcAddress, и есть *.dll c одной нужной экспортируемой функцией (назовем ее условно ExportFunction ). Файла *.lib нет, да и FASM в данном случае не хляет!
Есть другая *.dll, которая пытается воспользоваться ExportFunction при помощи GetProcAddress, но трабл здесь в том что *.dll с ExportFunction грузится позже, чем та, которая ищет точку входа в ExportFunction при помощи GetProcAddress.
Вот как сделать, не контролируя процесс загрузки в память обеих *.dll при помощи GetProcAddress узнать точку входа, просто функция GetProcAddress возвращает NULL, если *.dll с ExportFunction не загружена в память (не знаю, может это как-то не понятно будет написанное мной выше выглядеть) да я думаю, этот баг всех затрагивает по неволе, просто не все на это обращают внимание! Особенно…

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

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

Demon666 пишет:
Вот как сделать, не контролируя процесс загрузки в память обеих *.dll

Наверно это не ответ, но почему бы не выдать LoadLibrary предварительно и уж если динамика волнует - после юзания выдать FreeLibrary.



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 30 сентября 2006 04:51
· Личное сообщение · #6

tundra37 пишет:
Наверно это не ответ

Дык, это не ответ, а вопрос

HMODULE hMod = GetModuleHandle("*.dll");
if(hMod) // Check … is present and loaded
{
// Get address of exported function
int (*pFunc)(char*) = (int (*)(char*)) GetProcAddress(hMod, " ExportFunction");
if(pFunc) // Check … exports the correct function
pFunc("*.txt"); // Execute exported function
}
Но автор не учел то, что я выше описал. (кроме проверок естественно)
Тут даже не в этом дело, тело этой *.dll вшито в другую *.dll, но на экспорт идет идентичная функция с таким же именем, (сколько еще таких клонов будет, никто не знает и имена *.dll у них разные, отличие: функциональности гораздо больше) так вот помимо этой *.dll грузится еще десятка два других *.dll и адреса мэппинга у них, стало быть, разные.
Короче твой вариант я учитывал, но тут придется прибавить offset этой функции, который мы предварительно вычисляем, как ты описал выше!
Хотелось стандарта, но придется привязываться к именам *.dll раз другого выбора нет, может оно и к лучшему…

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com





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

Создано: 08 октября 2006 08:12 · Поправил: Rascal
· Личное сообщение · #7

Demon666 пишет:
Ну и на ASM есть, только там я сейчас не помню, так на скидку все функции хеша даже нестандартные есть (приват!)

Не смеши. Уже видел 2 пака крипто на асме. Приват, гыгыгы...

Demon666 пишет:
Для начинающего да, но не для специалиста в этой области

Вопрос не в этом - ты каждый раз будешь тратить время на небольшое изменение. Если время для тебя не ценится - пожалуйста.

Demon666 пишет:
Это мы уже здесь обсуждали (и с тобой в другой теме) разница кошмарный код, который засовывает компилятор…

Покажи-ка. Асм код вставки ровно такой, какой ты написал.

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



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


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