![]() |
eXeL@B —› Вопросы новичков —› Просмотр таблицы импорта |
Посл.ответ | Сообщение |
|
Создано: 11 сентября 2007 21:49 · Личное сообщение · #1 Здраствуйте. Вроде как новичок, то пишу уж сюда, хотя наверное с моим вопросом пошлете куда подальше или предложите выпить йаду/убицца ап стену... Требуется пример исходного кода на Делфи для просмотра таблицы импорта PE файлов через SysListView32 на WinAPI. Много времени убил на поиск, но так ничего стоящего не нашел, либо находил где идет работа с формами, но там задолбаешься разгребать код... Наткнулся на примерчики Исзелиона (или как там его правильнее назвать), где он перенес код с Ассемблера на Делфи, показывая чтение файлов через маппинг. Впринципе меня бы устроил его код, но уж больно неудобно просматривать все функции одного модуля, прокручивая их длинный список. Гораздо удобнее выбрать библиотеку и в другом элементе SysListView32 глянуть список загружаемых модулей. Потом поисками в Интернет наткнулся на исходник просмотра информации о таблице экспорта. Автор вроде бы Михаэль Пафф. У него как раз простор реализован через SysListView32, что намного удобнее. Так вот хотелось бы глянуть исходник для просмотра Import Table через SysListView32 на Делфи. Пишу уж сюда, так как здесь вроде как знающие люди по этим вопросам. Киньте плиз линки если вас не затруднит. Спасибо. ![]() ![]() |
|
Создано: 12 сентября 2007 07:58 · Личное сообщение · #2 Exception пишет: Впринципе меня бы устроил его код, но уж больно неудобно просматривать все функции одного модуля, прокручивая их длинный список. Гораздо удобнее выбрать библиотеку и в другом элементе SysListView32 глянуть список загружаемых модулей этот пример выводит все фун-ки всех модулей. ![]() а вообще лучше разбирайся со структурой, так намного быстрей. ицзелион хорошо все разъясняет. если что непонятно - задавай вопрос тут. ![]() ![]() |
|
Создано: 13 сентября 2007 00:36 · Личное сообщение · #3 |
|
Создано: 09 декабря 2007 23:41 · Личное сообщение · #4 Эх... Все-таки мне интересно поглазеть на "нормально работающий" пример. Начал мутузить этот ListView и нихрена не понятно... В аттаче переделанный исходник, но переделанный на скорую руку. Бегло поглядев на код Исзелиона, думается что надо в WM_NOTIFY вызвать NM_DBLCLK и как-то через ListView_GetNextItem получить импортируемую дллку или поди ее ординал или чето там связанное с этим схапать, а потом поди в цикл прогона подставить и вывести результат... Только я даже не знаю как все это делать. Блин, ребята, выручайте. Кто шарит на WinAPI, помогите. В аттаче исходник. Переделайте плиз его кто знает. В идеале хочется видеть так: в одном листвью список библиотек и всякая брехня к ним (штамп даты/времени, форвандеры и т.д.) и в другом хинты и имена функций. То есть тыкаем на дллку и получаем хинты с именами в другом элементе. По такому принципу реализован просмотр в разных редакторах PE файлов. Пока только получилось загнать инфу в один листвью и дальше не знаю как... ![]() ![]() |
|
Создано: 10 декабря 2007 13:40 · Личное сообщение · #5 |
|
Создано: 10 декабря 2007 14:48 · Личное сообщение · #6 |
|
Создано: 10 декабря 2007 16:23 · Личное сообщение · #7 |
|
Создано: 10 декабря 2007 17:38 · Личное сообщение · #8 Assass1n да я впринципе и пытался переделать этот туториал =( Bitfry ну вот так и знал что кто-нибудь скажет. Блин я пытался доделать, но видать не знаю вообще какой хэндл в WM_NOTIFY совать (всякое перепробывал). Был пример от Micael Puff с этим ЛистВью и пытался также как и там сделать, но нихрена не выводился мессаджбокс с нужным результатом. Если бы я знал как это делать, я бы сюда и не сунулся. А вообще чисто для себя хочется сделать ребилдерку + глазелку. Вот с с таблицей экспорта через ЛистВью все ОК, а вот с импортом клоака(((. Для ребилдера использовал код Др.Головы, для сканера - Хэллспауна, для остального - Исзелиона. ЗЫ. Это тема вроде бы как для помощи новичкам, так что Делфи программеры (если вы реально можете помочь) прошу вашей помощи((. ![]() |
|
Создано: 10 декабря 2007 18:23 · Личное сообщение · #9 я не пойму в чём проблема))) объясните глупому ![]() заведи отдельную стр-ру для импорта что то типа: TList: ->ImpLib->ImpFuncs ->ImpLib->ImpFuncs ->ImpLib->ImpFuncs в одном ListView ты получаешь Selected.Index обращаешься к своей стр-ре и выводишь все функции в другом окне))) посмотри мой DiE ![]() ![]() ----- [nice coder and reverser] ![]() |
|
Создано: 10 декабря 2007 18:40 · Личное сообщение · #10 |
|
Создано: 10 декабря 2007 18:47 · Личное сообщение · #11 |
|
Создано: 10 декабря 2007 18:50 · Личное сообщение · #12 |
|
Создано: 11 декабря 2007 06:24 · Личное сообщение · #13 Exception пишет: Блин я пытался доделать Exception пишет: Создано: 11 сентября 2007 21:49:12 Если ты не смог сообразить за это время, значит либо не нужно, либо уже и не сможешь. Exception пишет: ЗЫ. Это тема вроде бы как для помощи новичкам Этот форум не для Copy-Past-"программистов". Хорошо, вот тебе пример логики: 1. Обрабатывая сообщение WM_CREATE создаёшь с CreateWindowEx 2 контрола ListView. Cтили подойдут примерно такие: WS_CHILD or WS_VISIBLE or LVS_REPORT or LVS_SHOWSELALWAYS or LVS_SINGLESEL Ещё можно расширенные стили задать (допустим LVS_EX_FULLROWSELECT) послав сообщение LVM_SETEXTENDEDLISTVIEWSTYLE. 2. В том же обработчике WM_CREATE добавляешь нужные тебе колонки в оба контрола (сообщение LVM_INSERTCOLUMN). 3. делаешь функцию а-ля UpdateListView в которой: - узнаёш что выделено в List1, потом что выделено в List2 (сообщение LVM_GETNEXTITEM, парам LVNI_SELECTED); - удаляешь старое содержимое если нужно; - если выделение List1 не -1, то вызываешь функцию отображения данных в List1 - если выделение List2 не -1, то вызываешь функцию отображения данных в List2 4. Вставляешь вызов своей UpdateListView везде где это нужно (допустим в обработчик сообщения WM_COMMAND) Как организовать функции отображения данных? Ещё недавно я делал простой цикл отправки сообщений LVM_INSERTITEM и LVM_SETITEM. Но Jupiter посоветывал использовать еnum-принцип (смотри описание enumirate-функций WinApi), чтоб отделить интерфейс от конкретной задачи. Что тут не ясно? Если хочешь, могу конкретизировать любой участок кода (на словах). Но ты ведь не этого просишь, тебе исходник на Дельфи подовай, причём именно для твоего случая, а не похожий. ----- Всем привет, я вернулся ![]() |
|
Создано: 11 декабря 2007 09:56 · Личное сообщение · #14 |
|
Создано: 11 декабря 2007 13:59 · Личное сообщение · #15 Bitfry, я потом и не пытался ничего делать. Сейчас пришлось поработать с этим контролом и вспомнил про тот пример, вот и захотелось усовершенствовать. Просто сейчас вообще времени мало. Стараюсь по возможности продвигаться дальше, но пока мало что освоил. Пример у меня есть. Дело только времени. Ice-T буду рад за любую помощь. ![]() |
|
Создано: 11 декабря 2007 14:06 · Личное сообщение · #16 вот.. если че спрашивай, тока в ПМ ![]() ----- invoke OpenFire ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Просмотр таблицы импорта |