Упаковщики исполняемых файлов в LINUX-BSD


         

неизменный Segmentation


Поэтому, вся информация, приведенная ниже, получена исключительно путем дизассемблирования и отладки протектора. Начнем с отладки, так как под LINUX это самый больной вопрос. Операционная система предоставляет библиотеку ptrace, которой пользуется gdb и подавляющее большинство остальных отладчиков (отладчик, интегрированный в IDA Pro, ALD – Assembly Language Debugger и т. д.). Собака зарыта в том, что ptrace нерентабельна, то есть программу, уже находящую под отладкой, отлаживать нельзя! Shiva воспользовался этим фактов, породив дочерний процесс, отлаживающий сам себя (ну все как у Armadillo!), чем надежно защитился как от трассировки, так и от вызовы PTRACE_ATTACH, поскольку он тоже работает через ptrace!

Найти же удобоваримый отладчик, работающий в обход ptrace оказалось на удивление сложной задачей (тем более, что в дополнении к этому Shiva распознает TRAP-флаг, анализируя бит трассировки в регистре EFLAGS процессора и выполняет контроль таймингов). Поиск обнаруживает только кладбища заброшенных проектов. Заброшенный, заново воскрешенный и снова заброшенный ядерный отладчик The-DUDE (http://the-dude.sourceforge.net), другой ядерный отладчик — privateICE

(http://pice.sourceforge.net/) поддерживает лишь фиксированный набор ядер и среди которых нет ни одного моего. Из всех удалось запустить только linice (http://www.linice.com/), да и то лишь в VGA-режиме.



Содержание  Назад  Вперед