суть: прога в конверте envelop. раздеваю ее. дамп работает, но естественно токо на моей машине. взял imprec. не работает. в ходе мучений было найденно 4 таблицы. 1 - по OEP imprec нашел. msvb... короче реальная 2 - по EP imprec нашел также... GetModuleHandle, GetProcAddr и LoadLibrary - классика =) 3 - секция idata, похоже на правду. 4 - в заголовке PE табл. импорта ссылается на секцию .protect, и тоже реальные таблици. Сомнение вызывает размер =413h... Вроде бы она должна быть кратна 20? Но в реале уже после 380 байт идет 20 нулей. 8/ Пробовал все по отдельности - не работает. Может их надо объединить? Или ни туда смотрю?
там много прог, они написаны в основном на VC++, есть и VB. Но вот восстановление 1-го импорта приводит в неработоспособное состояние дамп. Причем в первом случаи все функции берутся из ms____.dll (непомню vb или нет, но от MS VStudio 6), и они находятся все imprec идеально. а с другими есть траблы - unresolved куча. trace2-3 выбивают прогу из памяти. как результат нен аходят. лоадер же приводит к нерабочести проги.
Все, ответ нашел. Прадва геморно, но работает. А гемор вот в чем: ImpRec грабит только одну таблицу из файла. в моем же случаи их было 24. может я что-то не понимаю. По порядку: секция idata. в ней первой идет таблица с модулями (длл то бишь, сорри за странные название, у меня книжки буржуйские). размеср записи 20 байт, после последней идет 20 нулей. каждая запись содержит указатель на стоку с именем библиотеки, и два указателя на две таблицы. одна из них ссылается на имена функций, а другая на адреса в памяти (после загрузки). ImpRec кушает адрес второй таблице (можно и первую, если она цела). Как заставить его обрабатывать таблицу модулей, а потом уже на основе ее дергать таблици с указателями?
если таблицы идут одна за другой укажи просто размер таблицы побольше а потом лишние ( мусорные ) удали