сразу извиняюсь, наверное уже замучил всех этим хаспом. =) учусь просто. суть такова. снял дамп, восстанавливаю функции. одной нету. начинаю в листинге смотреть. вижу что вместо модуля она указывает на сексцию .protect. Вопросы: 1. envelop когда шифрует exe забирает одну функцию в свое тело? (где проверка идет) 2. Функция случайна или строго определенная? 3. Можно ли перебить указатель на нужную функцию в библиотеки? 4. Как определить название функции? Сразу говорю. Код густой, везде ляпы, хитрые трюки. дизасмом не всегда берется - типа джампа на адрес Х, смотрим, а это середина другого оператора. по опкодам смотрим с этой середины - валидный оператор. и так постоянно. я дошел до 12 вложения... дальше достало. Подскажите плиз че нить. Перед вызовом функции в стек кладутся: :00401184 8BF4 mov esi, esp * Possible StringData Ref from Data Obj ->"ImportDo" | :00401186 6890564000 push 00405690 :0040118B 8B55BC mov edx, dword ptr [ebp-44] :0040118E 52 push edx :0040118F FF15D8624000 call dword ptr [004062D8] [оно самое - ссылка на таблицы импорта, где указатель показывает на .protect] :00401195 3BF4 cmp esi, esp :00401197 E87E040000 call 0040161A [_checkesp msv....dll] :0040119C 8945B8 mov dword ptr [ebp-48], eax :0040119F 837DB800 cmp dword ptr [ebp-48], 00000000 :004011A3 741E je 004011C3 прыгаем по адресу 00415977 в протект, где: :00415975 EA40EBFFF5C0EC jmp ECC0:F5FFEB40 [пальцем в небо] :0041597C 40 inc eax :0041597D 8BEC mov ebp, esp :0041597F 6697 xchg ax,di :00415981 6697 xchg ax,di :00415983 837D0800 cmp dword ptr [ebp+08], 00000000 :00415987 0F85271B0000 jne 004174B4 :0041598D 7404 je 00415993 :0041598F 90 nop :00415990 0FA2 cpuid :00415992 C286F2 ret F286 вот такая проблема.
ну это я читал еще до того как взял в руки ключ. статья обобщенная, и в некоторых местах непременима в жизни. хотя бы взять то, что в софтайсе дамп не снимешь(IceExt - не хочет дампить), а внешним - надо морозить прогу. И тут тоже проблема - мы останавливаемся на бряке VirtualProtect в kernele, вернутся назад в код я так и не смог - у меня устала рука нажимать F8-F10. а функцию я вставил наугад - GetProcAdress. одна прога работает, а две других... в принципе работают, но при выходе из них выпадают с ошибкой (movsd из несуществующего участка памяти).
возможно это все из-за того, что прога до выполнения меньше, чем в оперативки. Просто реальный размер на диске секций меньше в оперативки. я бы с большим удовольствием снял дамп в софтайсе =) но почему-то !damp находит несуществующие участки памяти, где по идеи есть инфа. надо шаманить