elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6 7 8 9 10
31  Programación / ASM / Re: Pasar argumentos a una función externa de C desde NASM en: 27 Febrero 2019, 01:49 am
Hola

Yo tambien estoy de acuerdo en lo del sistema de llamadas, como comentaron los compañeros mas arriba, se me hace dificil entender que un sistema actual, no utilize el sistema de llamadas syscall. Te recomiendo que mires algun binario como un hello world compilado por ti en tu equipo, y te fijes en el sistema de llamada que esta usando.

Un saludo.
Em... Pasa que estoy programando algo más complejo y no estoy en ningún sistema operativo en concreto.
32  Programación / ASM / Re: Pasar argumentos a una función externa de C desde NASM en: 26 Febrero 2019, 17:53 pm
Gracias, pero no se por que se queda en el limbo, osea no se ejecuta la función k_readkb.
No puedo usar eax para el número ya que lo estoy usando para otra cosa (en cambio debo usar edx), y debo mover el buffer (modificable) a ecx
Código
  1.    xor eax, eax
  2.    push edx
  3.    push ecx
  4.    call k_readkb
  5.    pop ecx
  6.    pop edx
  7.    jmp isr_common_stub
  8.  
El buffer es algo así (section .bss):
Código
  1. instr resb 255
(estoy compilando con GCC)
33  Foros Generales / Noticias / Re: Móviles a precio de teles: por qué nadie va a comprar un teléfono de 2.000 euros en: 26 Febrero 2019, 05:30 am
Por que tener tantas características extravagantes? Poder doblar el teléfono te da una funcionalidad útil? O tener una pantalla de 7 pulgadas que? No se yo, con poder llamar y tener internet me basta  :). Estos teléfonos sobre valuados parecen ser más un símbolo de estatus social que algo útil.
Saludos  :silbar:
34  Programación / ASM / Pasar argumentos a una función externa de C desde NASM en: 26 Febrero 2019, 02:22 am
Hola de nuevo aquí, veo que esta sección es algo relajada.
En fin, me gustaría saber como puedo pasar argumentos a una función de C desde NASM.
Ejemplo tengo una función en C declarada así:
Código
  1. void k_readkb(char* buf, int n);
Como podria pasar un argumento que tengo en ecx (a ecx se mueve un puntero a un area de memoria, que es un buffer, donde se dejaran los caracteres, un resb en .bss) hacia el primer argumento de la función de C y edx al 2do argumento de la función? Y en caso de que tenga más argumentos?
Me lio un poco con los registros, y no he encontrado mucho acerca de esto.
Saludos.
35  Programación / Programación C/C++ / Re: [C]Es posible tener una funcion en un struct? en: 26 Febrero 2019, 01:38 am
Creo que puramente en C no se puede ya que C no está orientado a objetos como podría estarlo C++.
Decirte que lo que sí puedes hacer es crear un <struct> en C++ y entonces si puedes declarar una función miembro del <struct>.
Pero tienes algunos errores como inicializar la variable y luego tu función no tiene sentido, devuelve un <int> y no tiene ningún <return>...

Te dejo el siguiente código que compilado como un fuente de C++ sí funciona (g++ test.cpp -o test).
Si lo tratas como un fuente C, no va a funcionar (gcc test.c -o test).
Código
  1. #include <stdio.h> // #include <cstdio> para C++ mejor
  2.  
  3. struct foo{
  4.    int x;
  5.    int sumar(int y){
  6.        return x+y;
  7.    }
  8. };
  9.  
  10. int main(){
  11.    foo my_foo;
  12.    my_foo.x = 3;
  13.    printf("%d\n", my_foo.x); // salida: 3
  14.    int suma = my_foo.sumar(5);
  15.    printf("%d\n", suma); // salida: 8
  16. }

No sé si te sirve  :-X
Ah, que pena  :-(, pero talvez me sirva cuando este programando en C++
Gracias  :)
36  Programación / Programación C/C++ / [C]Es posible tener una funcion en un struct? en: 26 Febrero 2019, 01:16 am
Es posible (en C) tener una función dentro de un struct? Algo así más o menos:
Código
  1. struct foo
  2. {
  3.    int bar = 3;
  4.    int sumar(int x, int y);
  5. };
  6.  
  7. int sumar(int x, int y)
  8. {
  9.    x += y;
  10. }
  11.  
  12. int main()
  13. {
  14.    struct foo asd;
  15.    int spam = asd.bar;
  16.    asd.sumar(5, 5);
  17.    return 0;
  18. }
  19.  
Escuche que en C++ se podía, pero como lo puedo hacer en C?
La idea seria tener funciones mas organizadas, se podría con POO si estuviera en C++, pero sinceramente me da asco la forma en que se declaran clases en C++  ;-), aparte que solo puedo usar C ahora.
Saludos
37  Programación / ASM / Re: cmp no funciona en: 22 Febrero 2019, 23:59 pm
Gracias, siempre me pregunte por que cmp nunca me funcionaba...
 :silbar:
38  Programación / ASM / cmp no funciona en: 22 Febrero 2019, 19:58 pm
Pues tengo esta simple rutina en ensamblador (NASM):
Código
  1. isr80:
  2.    cli
  3.    push byte 0
  4.    push byte 80
  5.    cmp eax, 3
  6.    je .read_srv
  7.    cmp eax, 4
  8.    je .write_srv
  9.    jmp .end
  10.    .read_srv:
  11.    mov ecx, strinputbuff
  12.    mov eax, ebx
  13.    call k_readkb
  14.    xor eax, eax
  15.    .write_srv:
  16.    mov ecx, testmsg
  17.    push ecx
  18.    call kputs
  19.    pop ecx
  20.    jmp isr_common_stub
  21.    .end:
  22.  
Bueno, si mueves el valor 4 a eax, te imprime un texto, si mueves 3 a eax te lee el teclado, etc.
Pero no funciona, sea cual sea el valor que mueva a eax igualmente salta a la subrutina .write_srv.
Me tiene loco este error (por que no es la primera vez que me pasa, cada vez que uso cmp). Alguna idea?
PD: No estoy programando para un SO en específico.
39  Informática / Software / mkisofs dice que el archivo no existe, pero si existe. en: 17 Febrero 2019, 05:31 am
Pues eso, trato de crear un .iso a partir de un .img, pero el mkisofs se hace el chistosito y me dice que el archivo .img no existe cuando si.
Código:
mkisofs -o disk.iso -V Gryphus -b disk.img cdconts
Saludos
40  Programación / Programación C/C++ / Re: [C]Como puedo parsear un simple comando en: 13 Febrero 2019, 21:18 pm
Código
  1. char* cmdparser(char* str, const char *delim)
  2. {
  3.    char* str_array;
  4.    char *token = strtok(str, delim);
  5.    int i = 0;
  6.    while (token)
  7.    {
  8.        str_array[i++] = token;
  9.        token = strtok(NULL, delim);
  10.    }
  11.  
  12.    return str_array;
  13. }
Logre portear el codigo, pero no funciona, otra vez  :huh:
Páginas: 1 2 3 [4] 5 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines