Сейчас на форуме: vsv1 (+3 невидимых)

 eXeL@B —› Вопросы новичков —› В Оле не работает дамп
Посл.ответ Сообщение

Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 04 января 2008 01:18 · Поправил: tempread
· Личное сообщение · #1

Запаковал калькулятор Темидой,пробую распаковать. Распакованый вариант не заработал,проблема вот тут:
014BDF5A MOV ECX,DWORD PTR DS:[EBX] ;в ebx несуществующий адрес
014BDF5C POP EBX
014BDF5D JMP un_calc_.014FE612


Ну не заработал,так не заработал, со мной такое сейчас часто, собрался разбираться в причинах. Попробовал распаковать tmdunpacker'ом - распаковался,и распакованный вариант нормально запускается!
Естественно захотел посмотреть, что да как в распакованом анпакером дампе - а дамп виснет в Оле в том же месте что и мой распакованный вариант, только значение в ebx другое.
Т.е. файл в Оле виснет,без Оли - работает. Вопрос - почему так происходит,куда копать? Может,если я в этом разберусь, то удастся и мой дамп оживить...
Вот распакованый анпакером файл:
http://dump.ru/files/n/n3591254758/ http://dump.ru/files/n/n3591254758/
Пароль:123

Калькулятор паковался немного пропатченый, одну из функций забил нопами, что бы легче было разбиратьсяс различными технологиями Темиды, из-за этого калькулятор чуток подглючивает(но не виснет), если все функции пробовать использовать.




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 04 января 2008 16:32
· Личное сообщение · #2

tempread
Он у меня ни в Винде не запускается, ни под отладчиком. После нескольких исключений программа завершает работу.



Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 04 января 2008 19:16 · Поправил: tempread
· Личное сообщение · #3

Я на двух копах проверял,вроде ситуация повторяемая, но теперь понятно,что это не так... В общем, распаковщик распаковал так же ,как и я вручную - некоректно.
Проблема в коде протектора, в котором считывается определенный адрес из памяти, которая реально не выделяется. Если в качестве этого несуществующего адреса в Оле подставить любой существующий - оба дампа, и мой, и анпакера работают. Хотя надо еще проверить, везде ли работают..
Насколько я понял, дамп анпакера изначально работает только потому, что случайно проблемный адрес памяти попадает на выделенную для чего нибудь память. Исключения не возникает и дамп поэтому работает. А при загрузке в Олю,видимо память выделяется то ли загрузчиком, то ли самим дампом по другим адресам, и проблемный адрес в этом случае указывает в пустоту. Сейчас пытаюсь разобраться откуда берется проблемный указатель, какую роль он играет, и как от него избавится в дампе...
Ну и хочется понять,может там еще есть такие "безхозные" адреса,просто они попадают на выделеную память и я их не вижу....




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 04 января 2008 20:09
· Личное сообщение · #4

tempread
Как ты разбираешься с ВМ. Сдампливаешь её и прикручиваешь к дампу? Я где то год назад ковырял ВМ версии 1.9.1.0.



Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 04 января 2008 20:25
· Личное сообщение · #5

VaZeR пишет:
Как ты разбираешься с ВМ. Сдампливаешь её и прикручиваешь к дампу?

Да.. И тоже ковыряю версии 1.9.1.0 (у меня только она и есть).
Ксати,если ковырял, то может подскажешь. как побороть динамическую расшифровку кода, когда после Sleep делается прыжок не на код с джампом на расшифрованый код, а в виртуальную машину? Я все никак не могу понять, что же именно расшифровывается в таком случае и где




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 04 января 2008 21:03 · Поправил: VaZeR
· Личное сообщение · #6

tempread
Я как помню там к примеру был следующий код вызова ВМ, который находился в выделенной области:
PUSH XXXXXXXX
jmp VM
Этот вызов ВМ эмулирует тот кусок кода программы, который может быть проэмулирован, к примеру
mov eax, 1
но не может быть проэмулированы команды типа int3. Там такие команды просто остаются в этой же выделенной памяти.
Дальше разбирал саму эммуляцию команд, находил контрольные точки (также юзая структуру vm_context) где можно было идентифицировать искомую команду и таким образом получить первоначальный код. А так, я даже не пытался прикручивать к дампу области ВМ, поэтому наврядли смогу помочь так как не знаю какие там есть антидампы. Мне тогда нужно было снять Фемиду с файла где было в ВМ только если не ошибаюсь первые 20 -25 команд OEP. Я таким образом и восстановил все оригинальные команды и отвязал прогу от Фемиды. Но скорее всего у этой проги были просто опции защиты не все активированы.
А это с какими опциями ты с паковал?



Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 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 —› Вопросы новичков —› В Оле не работает дамп
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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