Codeando kernels para Henix

Aha! Como prometido, o henix foi portado para linux e seu code em C foi
aberto para que voce possa fazer as mudancas e melhoras nele. Mas tambem
para facilitar a criacao de novos kernels para ele.
O henix voce encontra em struck.8m.com, tanto o para dos(pascal) qto
para linux(c).
Neste texto vou dar as dicas para fazer novos kernels e variantes.


Topicos
#######

1. Introducao
2. Editando diretorios
3. Editando Arquivos
4. Editando Usuarios
5. Editando Programas
6. Ultimas Palavras


Introducao
##########

Para alterar kernels do henix, soh eh preciso editar os headers:

dir.h - Responsavel pelos diretorios;
cat.h - Responsavel pelos arquivos;
kernel.h - Responsavel por comandos e contas;


Editando Diretorios
###################

Arquivo: dir.h
Ha 3 coisas a serem editadas para criar novos diretorios:

1. Caminho+Nome do dir;
2. Conteudo;
3. Numero total de diretorios.

Vamos por partes...
A estrutura q suporta os diretorios do henix eh:

struct henixdir {
char *name;
char *count;
};

A estrutura editada sera' dirs[]. Veja o exemplo:

{"/etc",
"/etc\n"
"-rw-r--r-- 1 root root 638 mar 10 05:38 passwd\n"
"-rw-r--r-- 1 root root 382 mar 10 05:37 group\n"
},

O Caminho+Nome do diretorio eh a char *name "/etc". Sera para onde voce
direcionara o comando "cd" caso queira seguir para esse diretorio.
O Conteudo eh a char *count. Sera o que sera exibido com o comando ls.
Depois de compilado fikaria assim:

[struck@henix]$ cd /etc
[struck@henix]$ ls
/etc
-rw-r--r-- 1 root root 638 mar 10 05:38 passwd
-rw-r--r-- 1 root root 382 mar 10 05:37 group
[struck@henix]$

Barbada neh?
O numero total de diretorios deve ser mudado em "#define TOTAL_DIRS"
toda a vez que um diretorio for adicionado.

Nota1: C por exemplo vc for criar um diretorio "/var/log", deve ser
criado antes o diretorio "/var". E o conteudo do "/", "/var" e "/var/log"
devem ser alterados para indicar que o diretorio existe. Caso contrario o
diretorio fikaria invisivel.
No conteudo de "/" deve estar indicado o "/var";
No conteudo de "/var" o "/var/log";
E no conteudo de "/var/log" o seu proprio conteudo.

Nota2: Na versao atual do henix (qdo este texto foi escrito) ele nao
suporta "cd .." entao nao eh necessario que "." e ".." sejam adicionados
no conteudo dos diretorios.

Nota3: Caso algum diretorio tenha permissao rwx------. A msg de erro
deve ser colocada no conteudo deste diretorio: "ls: Permission denied\n".

Editando Arquivos
#################

Arquivo: cat.h
A edicao de arquivos eh semelhante a de diretorios.
A estrutura de arquivos do henix eh:

struct henixfile {
char *name;
char *count;
};

Veja o exemplo de um arquivo:

{"/tmp/henix",
"sh: henix: Is a binary\n"
},

O nome do arquivo fika no char *name. Eh o que sera usado pelo comando
"cat" para verificar c um arquivo existe ou nao.
O conteudo fika em char *count. Eh o que sera exibido pelo comando "cat"
caso o arquivo exista. Note que msgs de erro podem ser colocadas no
conteudo. Neste exemplo mostrei uma saida para qdo alguem quizer ler um
programa.
Por fim, altere o numero em "#define TOTAL_FILES" de acordo com o
numero total de arquivos.

Nota: O arquivo criado deve ser adicionado no conteudo do seu diretorio
para que ele nao fique invisivel.

Editando Usuarios
#################

Arquivo: kernel.h
O henix atual possui um limite para 3 usuarios. Entao voce nao podera
adicionar mais aos atuais, somente altera-los. Futuramente isso sera
corrigido.
A estrutura de usuarios eh:

struct users {
int n;
char *name;
char *pass;
int id;
char *home;
};

Veja o exemplo de uma conta padrao do henix:

{1,"struck","cheat",1337,"/home/struck"},

1 - Numero q vai de 0 a 2 para mostrar a posicao da usuario;
"struck" - Nome do usuario;
"cheat" - Senha;
1337 - UID;
"/home/struck" - Diretorio home.

Barbada!!!


Editando Programas
##################

Arquivo: kernel.h
Existe uma funcao especial criada para programas que podem variar de
kernel para kernel. A seguinte funcao:

int other_cmd(char cmd[CMD_LEN], char pwd[CMD_LEN]);

Para editar comandos, voce deve saber um minimo de programacao em C.
cmd eh a string onde o comando entrado e' gravado.
pwd eh o diretorio onde o comando foi executado.

Veja um exemplo de programa:

if(!strcmp(cmd,"./test") && !strcmp(pwd,"/tmp")) {
printf("TESTE!TESTE!TESTE!\n");
}

Pow! Nao vo fika dando aulas de C. Entao de uma estudada c vc nao
entendeu o code acima.
O pwd deve ser usado caso seja um programa fora dos diretorios "/bin" e
"/sbin". Caso ele esteja nestes diretorios, a verificacao do diretorio nao
precisa ser feita.

Nota: Nao c esqueca de alterar o conteudo dos diretorios para exibir
que o programa existe.

Ultimas Palavras
################

Ok. Esse texto foi feito apenas para introduzir a programacao de
kernels nas 1as versoes do henix for linux. Mas nao nos responsabilizemos caso
voce venha a utilizar um kernel codeado por segundos e este esteja levando
um trojan ou backdoor ahi vc se fu... analize bem antes

Hosted by www.Geocities.ws

Copyright © Cyber Nine/Crack's S.A todos direitos reservados
Hosted by www.Geocities.ws

Hosted by www.Geocities.ws

Hosted by www.Geocities.ws

1