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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 92
171  Programación / Programación C/C++ / Re: Creacion Matriz nxn Automatica en: 24 Noviembre 2021, 15:52 pm
Ya que MAFUS puso su solución muestro mi solución al problema, mi solución también controla que la dimensión ingresada sea una matriz cuadrada como puede verse en la imagen:



Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int i, j, filas, columnas;
  6.  
  7.    do
  8.    {
  9.        printf("Ingrese la dimension de matriz: ");
  10.        scanf("%i*%i", &filas, &columnas);
  11.    } while (filas != columnas);
  12.  
  13.    for(i = 1; i <= filas; i++)
  14.    {
  15.        for(j = 1; j <= columnas; j++)
  16.        {
  17.            if ((i + j -1) == columnas)
  18.                printf("** ");
  19.            else
  20.                printf("%02d ", j);
  21.        }
  22.  
  23.        printf("\n");
  24.    }
  25.  
  26.    return 0;
  27. }


B#
172  Seguridad Informática / Seguridad / Re: Relay de elhacker.net en TOR en: 24 Noviembre 2021, 02:35 am
¿Cómo afecta esto a los que no usamos TOR?

Supongo que si el nodo tiene mucho tráfico, el ancho de banda se vería limitado si descargás algún material del servidor ns2...


B#
173  Programación / Programación C/C++ / Re: Creacion Matriz nxn Automatica en: 22 Noviembre 2021, 21:55 pm
Hola, logré arreglar lo de las columnas y ya me da las matrices de la dimensión que quiera. ¿Cómo implemento lo de la diagonal para que me de asteriscos(**)?

Bien, añadiste el for que te mencioné para las columnas ahora solo falta la condición ( if else ) que verifica si el elemento de la matriz pertenece a la diagonal principal, prestá mucha atención a la tabla de 5x5 que mostraste hace un momento, si te fijás bien hay una operación matemática elemental que se cumple si encaja justo en la posición de la tabla por filas y columnas y dicha operación equivale a la dimensión total de las filas o columnas ingresadas al principio, vale aclarar que a la operación matemática se le tiene que restar 1 porque el primer elemento de la matriz comienzan con el valor 01...


B#
174  Programación / Programación C/C++ / Re: Creacion Matriz nxn Automatica en: 21 Noviembre 2021, 23:30 pm
Estoy muy seguro que en lo que estoy fallando son los for.

El código está casi completo, solamente te falta un for por columnas y una condición que verifique si está en la diagonal invertida...
Como medida adicional para evitar que la matriz no sea cuadrada podrías meter un do while extra al principio.

EDIT: Acabé de probarlo tu código con las recomendaciones de arriba y funciona correctamente



B#
175  Seguridad Informática / Análisis y Diseño de Malware / Re: Wine para analisis de malware en: 14 Noviembre 2021, 18:58 pm
A priori se me ocurrio utilizar Wine para poder correr los malwares, la cosa es que obviamente no quiero correrlos si no depurarlos.
A mi forma de entender, estás preguntando si hay alguna manera de analizar binarios de Windows sin ejecutarlos, osea análisis estático. Si se puede con Ghidra

PD importante: Recuerdo que intente correr el instalador de VirtualBox (solo queria ver si funcionaria) en Wine y se colgo  :xD :xD Luego se cerro solo. Esto es lo que me hace dudar de que vaya a correr un malware (Algunos son algo picky con los recursos que utilizan).

PD2: Respuesta frecuente: "Haz una maquina virtual" Claro, pero me gusta depurarlos. No puedo depurarlos con maquinas virtuales (Que si... puedo usar el comando experimental virtualboxvm --startvm <maquina> --debug, pero no me vale en este caso porque no te imaginas lo engorroso que es). Solo quiero saber si puedo hacer esto especificamente en Linux

Si querés instalar Virtualbox en Debian/Ubuntu:
Código
  1. sudo apt install virtualbox-qt

EDIT: Añado un enlace de guía para desarrolladores y depuración con Wine... :silbar:


B#
176  Sistemas Operativos / GNU/Linux / Re: ¿Que distribucion de Linux usas y por que? en: 9 Noviembre 2021, 14:54 pm
¿Que distribucion de Linux usas?
Ubuntu

¿Por que la usas?
Estabilidad más que nada. Además brinda un buen soporte de hardware...

¿Por que usas Linux?
Hosteo un mini servicio de Jellyfin para ver series y películas en el chromecast (TV), otras PCs o celular, se podría hacer lo mismo con Windows pero consume recursos innecesarios comparado con Ubuntu.

A mi me gusta Elementary OS porque es bella y trae de todo... es la novia ideal con un aire de Mac, aunque tenga que pagar por ella...
Se puede descargar gratuitamente si se pone cero dolares en el espacio personalizado...


B#
177  Sistemas Operativos / GNU/Linux / Re: Ubuntu o Linux instalarlo en mi ordenador mediante rufus... en: 31 Octubre 2021, 18:04 pm
Me explicáis como instalar Ubuntu o Linux a través de rufusx los procesos a seguir, recibiré actualizaciones etc.

Yo ya te dí hace unos meses atrás un par de videos, te vuelvo a poner el enlace para que lo mirés de otra vez:

https://foro.elhacker.net/gnulinux/puedo_instalar_linux_por_encima_de_windows_10-t510808.0.html;msg2244865#msg2244865


B#
178  Programación / Programación C/C++ / Ejemplo de virtualización de código con CPU imaginaria en: 27 Octubre 2021, 17:18 pm
Buenas gente del foro, hice este código simple en un par de horas en C++ para 32 bits en Windows y lo quería compartir para que pueda servirle a alguién o quién quiera colaborar en este proyecto y podemos hacerlo completo... :P

La idea de virtualización de código es hacer complicado el análisis de ingeniería inversa de cualquier programa, creando una CPU imaginaria con sus propios conjunto de instrucciones y reemplazando el código original de assembler de la CPU real por la CPU imaginaria.

Código
  1. #include <iostream>
  2. #include "BloodVM.h"
  3.  
  4. int __declspec(naked) __stdcall Sumar()
  5. {
  6.    __asm
  7.    {
  8.        call BloodVM_Init;
  9.  
  10.        //MOV_R_N => mov eax, 4;
  11.        _emit 0x02; //OPCODE::MOV_R_N
  12.        _emit 0x05; //EAX offset
  13.        _emit 0x04; //number 4 bytes
  14.        _emit 0x00;
  15.        _emit 0x00;
  16.        _emit 0x00;
  17.        //ADD_R_N => add eax, 5;
  18.        _emit 0x04; //OPCODE::ADD_R_N
  19.        _emit 0x05; //EAX offset
  20.        _emit 0x05; //number 4 bytes
  21.        _emit 0x00;
  22.        _emit 0x00;
  23.        _emit 0x00;
  24.        //ADD_R_R => add eax, eax;
  25.        _emit 0x03; //OPCODE::ADD_R_R
  26.        _emit 0x05; //EAX offset
  27.        _emit 0x05; //EAX offset
  28.        //QUIT => Exit VM
  29.        _emit 0x00;
  30.  
  31.        call BloodVM_End;
  32.        ret;
  33.    }
  34. }
  35.  
  36. int main()
  37. {
  38.    std::cout << "Suma virtualizada (4 + 5) + (4 + 5) = " << Sumar() << std::endl;
  39.    std::cin.ignore();
  40. }



El código de ejemplo tiene apenas 5 instrucciones pero se podría implementar más. Al verse en un desamblador la función virtualizada se vería algo como esto:



Lo cuál forzaría al que quiera ver como funciona realmente el programa a analizar toda la CPU imaginaria siendo usualmente una tarea bastante compleja. Se podría crear también un programa que detecte las llamadas del inicio y fin de la virtualización y reemplazar el código real por el imaginario pero esa es una tarea bastante compleja que llevaría mucho tiempo.

Dejo el resto del código por si a alguien le interesa:

BloodVM.cpp
Código
  1. #include "BloodVM.h"
  2.  
  3. BloodVM gBloodVM;
  4.  
  5. uint32_t __declspec(naked) __stdcall GetCaller()//uint32_t dwESP)
  6. {
  7.    //return *(uint32_t*)(dwESP+4);
  8.    __asm
  9.    {
  10.        mov eax, [esp + 4];
  11.        ret;
  12.    }
  13. }
  14.  
  15. void __declspec(naked) __stdcall BloodVM_Init()
  16. {
  17.    __asm
  18.    {
  19.        pushad;
  20.        pop gBloodVM.EDI;
  21.        pop gBloodVM.ESI;
  22.        pop gBloodVM.EBP;
  23.        pop gBloodVM.ESP;
  24.        pop gBloodVM.EBX;
  25.        pop gBloodVM.EDX;
  26.        pop gBloodVM.ECX;
  27.        pop gBloodVM.EAX;
  28.  
  29.        //push gBloodVM.ESP;
  30.        call GetCaller;
  31.        mov gBloodVM.EIP, eax;
  32.        lea ecx, gBloodVM;
  33.        call BloodVM::RunVirtualMachine;
  34.        mov eax, gBloodVM.EIP;
  35.        mov [esp], eax;
  36.        ret;
  37.    }
  38. }
  39.  
  40. void __declspec(naked) __stdcall BloodVM_End()
  41. {
  42.    __asm
  43.    {
  44.        mov edi, gBloodVM.EDI;
  45.        mov esi, gBloodVM.ESI;
  46.        mov ebx, gBloodVM.EBX;
  47.        mov edx, gBloodVM.EDX;
  48.        mov ecx, gBloodVM.ECX;
  49.        mov eax, gBloodVM.EAX;
  50.        mov ebp, gBloodVM.EBP;
  51.        mov esp, gBloodVM.ESP;
  52.        ret;
  53.    }
  54. }
  55.  
  56. void BloodVM::RunVirtualMachine()
  57. {
  58.    do
  59.    {
  60.        this->currentOpcode = (uint8_t)(*((uint8_t*)this->EIP));
  61.        uint32_t nextEIP = this->vInstructions[this->currentOpcode].sizeOfInstruction;
  62.        (this->*vInstructions[this->currentOpcode].operate)();
  63.        this->EIP += nextEIP;
  64.    } while (this->currentOpcode != OPCODE::QUIT);
  65. }
  66.  
  67. void BloodVM::QUIT()
  68. {
  69.  
  70. }
  71.  
  72. void BloodVM::MOV()
  73. {
  74.    uint32_t* firstRegister;
  75.    uint32_t* secondRegister;
  76.    uint32_t firstNumber;
  77.    switch (this->currentOpcode)
  78.    {
  79.        case OPCODE::MOV_R_R:
  80.            firstRegister = &this->EDI + *(uint8_t*)(this->EIP + 1);
  81.            secondRegister = &this->EDI + *(uint8_t*)(this->EIP + 2);
  82.            *firstRegister = *secondRegister;
  83.            break;
  84.        case OPCODE::MOV_R_N:
  85.            firstRegister = &this->EDI + *(uint8_t*)(this->EIP + 1);
  86.            firstNumber = *(uint32_t*)(this->EIP + 2);
  87.            *firstRegister = firstNumber;
  88.            break;
  89.    }
  90. }
  91.  
  92. void BloodVM::ADD()
  93. {
  94.    uint32_t* firstRegister;
  95.    uint32_t* secondRegister;
  96.    uint32_t firstNumber;
  97.    switch (this->currentOpcode)
  98.    {
  99.        case OPCODE::ADD_R_R:
  100.            firstRegister = &this->EDI + *(uint8_t*)(this->EIP + 1);
  101.            secondRegister = &this->EDI + *(uint8_t*)(this->EIP + 2);
  102.            *firstRegister += *secondRegister;
  103.            break;
  104.        case OPCODE::ADD_R_N:
  105.            firstRegister = &this->EDI + *(uint8_t*)(this->EIP + 1);
  106.            firstNumber = *(uint32_t*)(this->EIP + 2);
  107.            *firstRegister += firstNumber;
  108.            break;
  109.    }
  110. }

BloodVM.h
Código
  1. #pragma once
  2. #include <cstdint>
  3. #include <vector>
  4.  
  5. enum OPCODE
  6. {
  7. QUIT,
  8. MOV_R_R,
  9. MOV_R_N,
  10. ADD_R_R,
  11. ADD_R_N,
  12. };
  13.  
  14. class BloodVM
  15. {
  16. public:
  17. BloodVM()
  18. {
  19. vInstructions =
  20. {
  21. /*
  22. All opcodes sizes are always 1 byte
  23. All registers (R) sizes are also 1 byte
  24. All numbers (N) sizes are always 4 bytes
  25. */
  26. {OPCODE::QUIT, 1, &BloodVM::QUIT},
  27. {OPCODE::MOV_R_R, 3, &BloodVM::MOV},
  28. {OPCODE::MOV_R_N, 6, &BloodVM::MOV},
  29. {OPCODE::ADD_R_R, 3, &BloodVM::ADD},
  30. {OPCODE::ADD_R_N, 6, &BloodVM::ADD},
  31. };
  32. }
  33.        uint32_t EDI, ESI, EBX, EDX, ECX, EAX, EBP, EIP, ESP;
  34. uint8_t currentOpcode;
  35. void RunVirtualMachine();
  36.  
  37. void MOV();
  38. void ADD();
  39. void QUIT();
  40.  
  41. struct INSTRUCTION
  42. {
  43. uint8_t opcode;
  44. uint8_t sizeOfInstruction;
  45. void (BloodVM::* operate)() = nullptr;
  46. };
  47.  
  48. std::vector<INSTRUCTION> vInstructions;
  49. };
  50.  
  51. void __stdcall BloodVM_Init();
  52. void __stdcall BloodVM_End();


B#
179  Seguridad Informática / Hacking / Re: Cómo saber si una persona se conecta desde un PC o un celular? en: 27 Octubre 2021, 03:12 am
Básicamente solo quiero saber si utiliza un pc o un celular...

Se conecta pero, ¿A que lugar te referís? ¿Un servidor web? ¿Un modem/router? ¿Cuál es el dispositivo de destino al cuál te estás preguntando?


B#
180  Foros Generales / Foro Libre / Re: Terraplanistas en: 25 Octubre 2021, 03:10 am
Los hecho de menos DONDE ESTAN?  :-\
Han mudado de foro? que pasoooó?

Ahora se dicen llamar Terradonistas algunos...  :laugh:




B#
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 92
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines