Пасиб за помидорозакидывание и агитацию=) Зато конструктивно=)
Читаем далее.
[Part II]
[DotFixNiceProtect на примере DotFixNiceProtect].
Как я уже говорила - прот написан на vb (сама была удивлена), а значит использует библиотеку MSVBVM60.dll. Так, VB-проги первым делом вызывают функцию ThunRTMain и код, естессно будет выполняться в этой библиотеке (MSVBVM60.dll). Здесь подход должен быть немного иной, чем в предыдущих случаях (из-за языка, на котором программа написана). Пришло время воспользоваться SEH. Теперь идем в отладчик и включаем остановку на всех эксепшнах (Alt + O и на вкладке Exceptions снимаем все галочки). Ждем последнего эксепта в таком месте (оно идентично во всех запакованных программах)
Код:
0012FFE0 FFFF ???
0012FFE2 FFFF ???
А теперь хитрость=) Идем на карту памяти (Alt+M) и ставим бряк на доступ к кодовой секции в библиотеке MSVBVM60.dll. Shift+f9..... Через секунду мы в MSVBVM60.dll. Причем не где-то, а в стартовой функции ThunRTMain. Класс))))) Теперь нам нужен адрес возврата. Глянем в стек........ Видим, что на верхушке лежит
Код:
0012FBCC 00B1628E DotFix_N.00B1628E
Туда и отправимся. Go to-> 00B1628E. Что видим. Посмотрела на карту памяти. Мы в секции, а не на выделенной памяти=\ Резонный вопрос, а где вм? Ну нам же лучше.
Опять вспоминаем как выглядит начало программы на вб. Сначала в стек заталкивается некое число, а потом уже идет вызов стартовой функции. Ищем это число, прокручивая листинг вверх. Вот оно
Код:
00B16207 . C74424 FC ACBF4000 MOV DWORD PTR SS:[ESP-4],DotFix_N.0040BFAC
00B1620F . EB 01 JMP SHORT DotFix_N.00B16212
C чего я взяла, что это именно то число? Да очень просто. Открыла в дампе. По этому адресу идет сигнатура VB5, что характерно для вб программ. Отлично, теперь у нас есть украденная oep не в выделенной памяти.
Дампим, открываем импрек и пишем адрес иат - 1000.... Все нашлось. Вводим нашу OEP и склеиваем.
Все работает)))))))))
[Done]