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


     Авантюрин здесь. |     

сайт крутого пацака ByteRage


Качаем http://byterage.hackaholic.org/source/burndump.c, компилируем своим любимым гнутым компилятором "gcc ?c burndump.c" (на некоторых системах необходимо явно указать включаемые файлы "gcc ?c ?I/usr/src/linux/include burndump.c" и загружаем внутрь ядра "insmod burndump" (естественно, для этого необходимо иметь права root'а). Теперь, burndump будет сидеть резидентно в памяти и перехватывать системную функцию brk(), которая нужна упаковщику для расширения сегментов elf-файла в памяти. К моменту вызова этой функции файл уже распакован — остается только снять с него дамп и записать на диск. Чтобы не писать все подряд, необходимо как-то отождествить упаковщик. В burndump'е за это отвечает следующая малопонятная конструкция:

       codeptr = current->mm->start_code + 1;

       /* caller == burneye ??? */

       if ((codeptr >> 16) == 0x0537)

              printk("<1> 7350 signature 0x0537 found!\n");



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