Сейчас на форуме: vsv1 (+3 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› В Оле не работает дамп |
Посл.ответ | Сообщение |
|
Создано: 04 января 2008 01:18 · Поправил: tempread · Личное сообщение · #1 Запаковал калькулятор Темидой,пробую распаковать. Распакованый вариант не заработал,проблема вот тут: 014BDF5A MOV ECX,DWORD PTR DS:[EBX] ;в ebx несуществующий адрес
Ну не заработал,так не заработал, со мной такое сейчас часто, собрался разбираться в причинах. Попробовал распаковать tmdunpacker'ом - распаковался,и распакованный вариант нормально запускается! Естественно захотел посмотреть, что да как в распакованом анпакером дампе - а дамп виснет в Оле в том же месте что и мой распакованный вариант, только значение в ebx другое. Т.е. файл в Оле виснет,без Оли - работает. Вопрос - почему так происходит,куда копать? Может,если я в этом разберусь, то удастся и мой дамп оживить... Вот распакованый анпакером файл: http://dump.ru/files/n/n3591254758/ http://dump.ru/files/n/n3591254758/ Пароль:123 Калькулятор паковался немного пропатченый, одну из функций забил нопами, что бы легче было разбиратьсяс различными технологиями Темиды, из-за этого калькулятор чуток подглючивает(но не виснет), если все функции пробовать использовать. ![]() |
|
Создано: 04 января 2008 16:32 · Личное сообщение · #2 |
|
Создано: 04 января 2008 19:16 · Поправил: tempread · Личное сообщение · #3 Я на двух копах проверял,вроде ситуация повторяемая, но теперь понятно,что это не так... В общем, распаковщик распаковал так же ,как и я вручную - некоректно. Проблема в коде протектора, в котором считывается определенный адрес из памяти, которая реально не выделяется. Если в качестве этого несуществующего адреса в Оле подставить любой существующий - оба дампа, и мой, и анпакера работают. Хотя надо еще проверить, везде ли работают.. Насколько я понял, дамп анпакера изначально работает только потому, что случайно проблемный адрес памяти попадает на выделенную для чего нибудь память. Исключения не возникает и дамп поэтому работает. А при загрузке в Олю,видимо память выделяется то ли загрузчиком, то ли самим дампом по другим адресам, и проблемный адрес в этом случае указывает в пустоту. Сейчас пытаюсь разобраться откуда берется проблемный указатель, какую роль он играет, и как от него избавится в дампе... Ну и хочется понять,может там еще есть такие "безхозные" адреса,просто они попадают на выделеную память и я их не вижу.... ![]() |
|
Создано: 04 января 2008 20:09 · Личное сообщение · #4 |
|
Создано: 04 января 2008 20:25 · Личное сообщение · #5 VaZeR пишет: Как ты разбираешься с ВМ. Сдампливаешь её и прикручиваешь к дампу? Да.. И тоже ковыряю версии 1.9.1.0 (у меня только она и есть). Ксати,если ковырял, то может подскажешь. как побороть динамическую расшифровку кода, когда после Sleep делается прыжок не на код с джампом на расшифрованый код, а в виртуальную машину? Я все никак не могу понять, что же именно расшифровывается в таком случае и где ![]() |
|
Создано: 04 января 2008 21:03 · Поправил: VaZeR · Личное сообщение · #6 tempread Я как помню там к примеру был следующий код вызова ВМ, который находился в выделенной области: PUSH XXXXXXXX jmp VM Этот вызов ВМ эмулирует тот кусок кода программы, который может быть проэмулирован, к примеру mov eax, 1 но не может быть проэмулированы команды типа int3. Там такие команды просто остаются в этой же выделенной памяти. Дальше разбирал саму эммуляцию команд, находил контрольные точки (также юзая структуру vm_context) где можно было идентифицировать искомую команду и таким образом получить первоначальный код. А так, я даже не пытался прикручивать к дампу области ВМ, поэтому наврядли смогу помочь так как не знаю какие там есть антидампы. Мне тогда нужно было снять Фемиду с файла где было в ВМ только если не ошибаюсь первые 20 -25 команд OEP. Я таким образом и восстановил все оригинальные команды и отвязал прогу от Фемиды. Но скорее всего у этой проги были просто опции защиты не все активированы. А это с какими опциями ты с паковал? ![]() |
|
Создано: 04 января 2008 22:04 · Поправил: tempread · Личное сообщение · #7 Опции: http://dump.ru/files/n/n861499789/ http://dump.ru/files/n/n861499789/ pass: 567 К сожалению в этой версии Темиды я не смог получить динамическое шифрование как я описывал выше,возможно это делается маркерами или в более новых версиях Темиды такое появилось. Поэтому в пакованом калькуляторе динамического шифрования нет. Но сейчас, за какую реальную программу не возьмусь - везде натыкаюсь на вышеописанную проблему,которую пока еще не решил. Она как бы прямо не относится к VM, просто нужно понять, что расшифровывается, и потом расшифрованый код программы прилепить в дамп. Но из за того,что после расшифровки попадаем в виртуальную машину, не получается понять,что же именно нужно сдампить. Такое динамическое шифрование есть,например, в resman'е(на примере этой программы PE_KILL делал инлайн,есть в rar статьях). ![]() |
![]() |
eXeL@B —› Вопросы новичков —› В Оле не работает дамп |