Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Распаковываю dll, вопрос по IAT
Посл.ответ Сообщение

Ранг: 29.8 (посетитель), 9thx
Активность: 0.020
Статус: Участник

Создано: 04 августа 2013 23:08
· Личное сообщение · #1

Добрый вечер.
Распаковываю dll, вышел на оеп, снял дамп, и вот вопрос правильно ли определил границы в IAT
кусочек из ImpRec-а
Code:
  1. 1        000C621C        user32.dll      00C5 EnableWindow
  2. 1        000C6220        user32.dll      0293 ShowWindow
  3. 1        000C6224        user32.dll      01B8 LoadCursorA
  4. 0        000C6228        ?      0000 10BF8DC0
  5. 1        000C622C        winmm.dll       00A6  timeGetTime
  6. 0        000C6230        ?      0000 10BF8DC0
  7. 0        000C6234        ?      0000 10BF8DC0
  8. 0        000C6238        ?      0000 80000004
  9. 0        000C623C        ?      0000 8000000C
  10. 0        000C6240        ?      0000 10BF8DC0
  11. 1        000C6244        ole32.dll       003C  CoInitialize
  12. 1        000C6248        ole32.dll       006A  CoUninitialize
  13. 1        000C624C        ole32.dll       0011  CoCreateGuid
  14. 0        000C6250        ?      0000 10BF8DC0

или надо было остановиться после winmm.dll.
Смущает вот это
Code:
  1. 0        000C6230        ?      0000 10BF8DC0
  2. 0        000C6234        ?      0000 10BF8DC0

как бы 2 раза нули после dll .




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 04 августа 2013 23:38
· Личное сообщение · #2

alexpol
Таблица в любом случае не будет рабочей. Либо границы указаны не правильно, либо не все функции восстановлены после протектора

-----
Research For Food




Ранг: 29.8 (посетитель), 9thx
Активность: 0.020
Статус: Участник

Создано: 04 августа 2013 23:50 · Поправил: alexpol
· Личное сообщение · #3

это я понимаю, нужно будет найти что это такое
0 000C6238 ? 0000 80000004
0 000C623C ? 0000 8000000C
это следующий шаг.
Вопрос в том, может иат продолжаться после двух разделительных нулей
0 000C6230 ? 0000 10BF8DC0
0 000C6234 ? 0000 10BF8DC0 ?
В предыдущей версии ole32 входила в иат.




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 05 августа 2013 00:07 · Поправил: daFix
· Личное сообщение · #4

alexpol
Вы хоть протектор назовите

-----
Research For Food




Ранг: 29.8 (посетитель), 9thx
Активность: 0.020
Статус: Участник

Создано: 05 августа 2013 00:11
· Личное сообщение · #5

кодеметер




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 05 августа 2013 00:42
· Личное сообщение · #6

alexpol
В живую ни когда не сталкивался с их конвертом, хотя есть набор разработчика от них. Сначала восстановите недостающие функции в импорте, потом уже можно будет судить точнее

-----
Research For Food




Ранг: 29.8 (посетитель), 9thx
Активность: 0.020
Статус: Участник

Создано: 05 августа 2013 00:54 · Поправил: alexpol
· Личное сообщение · #7

daFix
Да я уже пробовал, пока ничего не получается. Ставил всякие бряки, олька ни разу не остановилась.
До этого снимал конверт с других прог, было скрыто от 4 до 6 апи, находил, а здесь ни как.
А что после winmm.dll идет 2 разделителя, это нормально?




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 05 августа 2013 10:06
· Личное сообщение · #8

alexpol
Вроде как во всех стандартных компиляторах всего один DWORD разделитель. Это вполне может быть мусор конверта

-----
Research For Food





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 05 августа 2013 11:32
· Личное сообщение · #9

alexpol пишет:
это я понимаю, нужно будет найти что это такое
0 000C6238 ? 0000 80000004
0 000C623C ? 0000 8000000C

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

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




Ранг: 29.8 (посетитель), 9thx
Активность: 0.020
Статус: Участник

Создано: 05 августа 2013 13:05
· Личное сообщение · #10

ClockMan
Если интересно могу дать ссылку на прогу в личку.
За меня ничего ломать не надо, буду разбираться сам, если осилю.




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 05 августа 2013 13:31
· Личное сообщение · #11

вообще, конверт столит функции, в секции кода получается FF 25 -> 90 E8, ну и т.д. и т.п. одна процедура обрабатывает много функций из импорта. хоть бы прогулялись по ней, че туда лезть импреком с нахрапа

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




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

Создано: 11 февраля 2015 18:38
· Личное сообщение · #12

Чтобы не плодить подобную тему спрошу здесь. В 33 главе крекинга с нуля, где объясняется принцип работы иат, говорится, что адреса функций заполняются в таблице через GetProcAddress до останова на точке входа. А адрес самой функции GetProcAddress от версии к версии константа? Или pe-загрузчик имеет какой-то свой механизм обращения к ней?



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 11 февраля 2015 19:28
· Личное сообщение · #13

shiroko пишет:
А адрес самой функции GetProcAddress от версии к версии константа?

2 разные версии ос покажут что к чему.Если импорт берется по ординалам, а они, как и адресация, различны в зависимости от версии ОС, то такая прога не будет работать нигде, кроме этой самой оси.PE-загрузчик должен вызывать функцию по ее имени, тогда ему будет абсолютно все равно на то, в какой адресной области она расположена и под какой ОС юзается прога.

-----
TEST YOUR MIGHT




Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 11 февраля 2015 21:16
· Личное сообщение · #14

shiroko
нет конечно
Например возьми собери длл свою, потом добавь/измени функционал типа как мелкософт и посмотри адреса своих экспортов.

-----
продавец резиновых утёнков




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

Создано: 12 февраля 2015 06:26
· Личное сообщение · #15

HiEndsoft
зачем мне что-то менять если я говорю об обновлениях винды , в которых коррективы в библу повлияют на адрес функции в ней, а соответственно и на импорт к обращающимся к ним экзешникам

Добавлено спустя 7 минут
unknownproject или я не вполне вкурил твою идею... или я прогадал , влепя сюда загрузчик, а на самом деле там все сложнее ... или я нихрена не могу понять из твоего письма
P.S. есть вероятность предвзятого недопонимания ввиду твоего рейтинга но это лишь догадка



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 12 февраля 2015 10:55
· Личное сообщение · #16

shiroko пишет:
я нихрена не могу понять из твоего письма

Наверное ты плохо знаком с форматом PE, советую почитать соответствующую литературу. Есть у нас на сайте, а так же у мелкомягких




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 12 февраля 2015 11:00
· Личное сообщение · #17

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



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

Создано: 12 февраля 2015 12:53 · Поправил: dosprog
· Личное сообщение · #18

shiroko пишет:
Чтобы не плодить подобную тему спрошу здесь. В 33 главе крекинга с нуля, где объясняется принцип работы иат, говорится, что адреса функций заполняются в таблице через GetProcAddress до останова на точке входа. А адрес самой функции GetProcAddress от версии к версии константа? Или pe-загрузчик имеет какой-то свой механизм обращения к ней?


Так и есть, как сказал Archer. Но есть и кое-какие костыли. --> Тутъ <--





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

Создано: 15 февраля 2015 04:48
· Личное сообщение · #19

TryAga1n пишет:
Наверное ты плохо знаком с форматом PE, советую почитать соответствующую литератур

Да насчет этого вопросов не имею благодаря статьям из васма ..... а вот насчет того чем объясняется вызов функции GetProcAddress пока что не уверен... но возможно найду ответ в решениях Archer или dosprog.
И пользуясь моментом хотелось бы уточнить момент корректировки иат... в некоторых случаях распаковки вручную не вполне понятен размер иат... как его определить при условии если нет в коде косвенных переходов



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

Создано: 15 февраля 2015 13:23 · Поправил: dosprog
· Личное сообщение · #20

shiroko пишет:
в некоторых случаях распаковки вручную не вполне понятен размер иат... как его определить при условии если нет в коде косвенных переходов


Визуально





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

Создано: 09 августа 2016 12:20
· Личное сообщение · #21

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



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

Создано: 09 августа 2016 20:41
· Личное сообщение · #22

Врезка стартап кода.


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


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