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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Temas
Páginas: [1] 2
1  Seguridad Informática / Análisis y Diseño de Malware / [Dudas] Información profundizada sobre Troyanos y Rootkits en: 26 Julio 2015, 12:40 pm
Buenos días,

Primeras aclaraciones:
  No vengo a preguntar cómo hacer un troyano, ni a pedir un source code de uno de ellos, ni a preguntar como funciona un troyano ya desarrollado.

Segundas aclaraciones. Conocimientos:
  Avanzados en programación en distintos lenguajes. Utilizaré para este proyecto C++ y ASM.
  Básicos de criptografía (Diferenciación entre distintos tipos de criptografía, como por ejemplo simetrica y asimetrica, y conocimientos básicos del funcionamiento de éstos).
  En seguridad, tanto de redes como de aplicaciones (He realizado varias pruebas de concepto. Considero básicas para éste proyecto: Reversing, DLL Injection, API Hooking, Social Engineering - Phising, MiTM, ...)
  Y seguro que alguna cosa más me dejo que necesite para llevar a cabo este proyecto.

Terceras y últimas aclaraciones:
  El proyecto del que voy a haceros unas preguntas trata del desarrollo de un troyano medianamente avanzado. Incluiría rootkit, sistemas de propagación, sistemas de espionaje y sistemas de control. Algo que si en un futuro se pusiera en marcha y tuviera éxito, se pudiera considerar algo como una botnet.

Una vez hechas éstas tan necesarias aclaraciones, voy al grano;
  Quiero empezar a desarrollar malware por cuenta propia (inicialmente para sistemas windows), y tengo una serie de dudas al respecto:
    1. Localización del malware: ¿Cual es la mejor localización de un malware dentro de un sistema? ¿Sistema de arranque, drivers, archivos temporales, ...? ¿Porque?
    2. Antivirus: ¿Cómo un antivirus identifica un proceso malicioso? ¿Que reglas siguen los antivirus más modernos?
    3. ¿Que "estructura o diseño" consideráis la mejor para este tipo de malware? ¿Porque?

He de decir que me he estado mirando las preguntas más frecuentes y sí que es verdad que algunas responderían a mis dudas, pero los posts o se han eliminado o están incompletos y no me dan la información que necesito.

Muchas gracias por leeros el tostón y espero que alguien pueda responderme :)
Un saludo!
2  Programación / Programación General / Algoritmos de búsqueda de comunidades. en: 12 Abril 2015, 21:45 pm
Buenas noches,
estoy buscando información acerca de los inputs, outputs y como recorre el grafo (por nodos, aristas o ambos) de los algoritmos de búsqueda de comunidades Girvan-Newman, Clique Percolation y Louvain, pero no encuentro nada sobre ello, la información es muy difusa y lo máximo a lo que accedo es a proyectos de decenas de clases que no se ni por donde empezar a mirar.
¿Alguien podría echarme una mano con esto?

Muchas gracias.
3  Programación / Programación C/C++ / Problema con read/write system calls en: 8 Junio 2014, 00:10 am
Buenas noches,
estoy haciendo un programa para aprovechar la característica del EOF para ocultar archivos dentro de otros, pero tengo un problema un tanto extraño al escribir en el archivo "objetivo". Cuando hago una pequeña modificación en uno de los while del programa, deja de escribirme el archivo completo y escribe solo unos pocos bytes. Concretando:

Código fuente (funcionando)
http://pastebin.com/ygNq6K1t

La modificación que estoy realizando es substituir el código del while de la línea 31 por el siguiente:
Código
  1.  while(read(src_fc, buffer, strlen(buffer)) > 0)
  2.  {
  3.    if(write(obj_fd, buffer, strlen(buffer)) < 0)
  4.    {
  5.      strcpy (buffer, "Error in write.\n");
  6.      write (1, buffer, strlen (buffer));
  7.    }
  8.  }
  9.  

Como se puede ver, la única diferencia es que elimino el mensaje de "512b.", pero aun asi la aplicación deja de leer/escribir a los pocos bytes copiados.

¿Alguna idea?

¡Muchas gracias!
4  Programación / Programación C/C++ / C++ - Problema con implementación del QuickSort. en: 24 Marzo 2014, 21:00 pm
Buenas, estoy intentando implementar QuickSort para ordenar un vector cualquiera, pero estoy teniendo problemas.
La función ordena correctamente, pero una vez el vector está ordenado mi función recursiva sigue ejecutandose en un bucle infinito, y no logro encontrar el error.
El código del QuickSort es el siguiente:
Código
  1. int splitArray(vector<int>&v, int l, int r)
  2. {
  3.  int pivot = r;
  4.  int leftInd = l;
  5.  while(leftInd < pivot)
  6.  {
  7.    if(v[leftInd] > v[pivot])
  8.    {
  9.      swap(v, leftInd, pivot-1);
  10.      swap(v, pivot-1, pivot);
  11.      if(pivot>0) --pivot;
  12.    }
  13.    else ++leftInd;
  14.  }
  15.  return pivot;
  16. }
  17.  
  18. void quickSort(vector<int>& v, int l, int r)
  19. {
  20.  if(r > l)
  21.  {
  22.    int pivot = splitArray(v, l, r);
  23.    quickSort(v, l, pivot);
  24.    quickSort(v, pivot+1, r);
  25.  }
  26. }
NOTA: las variables "l" y "r" significan "left" y "right". La función swap() es trivial, intercambia las dos variables que se le pasan por parametros (el primer parámetro es el vector, y los dos siguientes las posiciones de los valores a intercambiar).

Es muy probable que la implementación tampoco sea la más eficiente, ya que intenté entender un código de quicksort ya hecho y no lograba verlo, por lo que decidí implementarlo yo por mi cuenta. Acepto críticas y consejos :)

Muchas gracias.

Solucionado:
Código
  1. void quickSort(vector<int>& v, int l, int r)
  2. {
  3.  if(r > l)
  4.  {
  5.    int pivot = splitArray(v, l, r);
  6.    quickSort(v, l, pivot-1);  //AQUÍ EL ERROR, NO LE RESTABA 1 A PIVOT
  7.    quickSort(v, pivot+1, r);
  8.  }
  9. }

Saludos
5  Programación / Programación General / ¿Como seria la estructura de un servidor de un juego multijugador? en: 7 Marzo 2014, 19:27 pm
Estoy desarrollando un juego y estoy pensando en cómo estructurar el servidor para implementar el multijugador. El juego es un estilo arcade de partidas cortas, donde un jugador puede crear una partida (alojada en el servidor de momento) y el resto de jugadores unirse a ella.
Tengo pensado crear una clase Servidor, desde la que se gestionarán las partidas mediante multithreading. Es decir, existirá una clase Partida que se ejecutará en un nuevo thread, y desde la cual se gestionarán también las conexiones de sus distintos jugadores mediante nuevos threads (un thread por jugador, que contendrá un socket a su vez).
Podríamos decir entonces, que la estructura del servidor que estoy describiendo sería algo como:

Código:
                       -> Jugador > Socket
          -> Partida  -> Jugador > Socket
                      -> Jugador > Socket

                      -> Jugador > Socket
Servidor  -> Partida  -> Jugador > Socket
                      -> Jugador > Socket

                      -> Jugador > Socket
          -> Partida  -> Jugador > Socket
                      -> Jugador > Socket
Donde cada objeto perteneciente al esquema sería un nuevo thread (excepto los sockets, que pertenecen al objeto Jugador).

La verdad, no creo que esta sea la mejor forma ya que en caso de que haya varias partidas llenas la cantidad de threads sería altisima, por eso me gustaría que me dierais opinión y consejo sobre esto.

Gracias.
6  Programación / Java / ¿Como pasar un objeto a una constructora sin crear una copia? en: 28 Febrero 2014, 11:46 am
Buenas, estoy aprendiendo java y me he propuesto crear un TicTacToe como ejercicio de entrenamiento.
He desarrollado dos clases, la clase Jugador y la clase Tablero. El esquema que tengo pensado es crear una instancia de Tablero y posteriormente pasar un puntero a cada Jugador para que puedan operar directamente con el, pero no se como hacer esto.
Les pongo un ejemplo:
Código
  1. public class Tablero
  2. {
  3. ...
  4. }
  5.  
  6. public class Jugador
  7. {
  8.  private Tablero tablero;
  9.  Jugador(Tablero tablero)
  10.  {
  11.    this.tablero = tablero;
  12.  }
  13. }

Entonces, si hiciera:
Código
  1. Tablero tab = new Tablero();
  2. Jugador jug = new Jugador(tab);

El objeto jug contendrá una copia de tab, o un puntero a tab?
7  Programación / Programación C/C++ / Compilar en 32bits desde linux 64bits en: 19 Febrero 2014, 11:09 am
Buenos dias

Estoy programando un crackme sencillo para practicar ingenieria inversa, pero no consigo que se me compile correctamente en 32bits (Estoy usando un Linux 64bits). Compilo mediante g++ y usando la opción -m32 de la siguiente manera:
Código:
g++ -c -m32 crackme1.cpp
g++ -o crackme1.exe -m32 crackme1.o

El programa compila perfectamente y puedo ejecutarlo desde linux, pero cuando intento ejecutarlo desde un Windows 7 64bits o abrirlo con OllyDBG me dice que no es una aplicación de 32bits, sinó de 64. En Windows me sale un error también del estilo.

Ya he compilado antes en 32bits desde el mismo ordenador y sistema operativo y no he tenido problemas, así que no creo que sea tema de librerias o algo parecido :S

Os adjunto el código por si alguien se anima a intentar compilarlo bajo un sistema de 32 bits y a ver si alguien se le ocurre que puede estar pasando.

Código del crackme:
http://pastebin.com/hPSUHR4u

Gracias.
8  Programación / Programación C/C++ / Consulta sobre bucles, timers y multithreading. en: 12 Febrero 2014, 23:16 pm
Buenas noches.
Estoy desarrollando una DLL para hookear una serie de procesos de una aplicación conectada a un servidor (es un cliente en lo que seria una conexión cliente-servidor). Pues bien, el hecho es que estoy controlando los paquetes que entran y salen mediante esta DLL y he implementado una pequeña función que envía paquetes legítimos a través del propio cliente.
El problema que tengo es que hay una serie de paquetes que necesitan una cierta diferencia de tiempo entre ellos, pero no puedo congelar la aplicación mientras espero ese tiempo (Por lo tanto, Sleep() y cualquier bucle que congele la aplicación quedan descartados), por lo que me estoy planteando utilizar multithreading, pero antes quería preguntaros si se os ocurre alguna otra forma de hacer esto. ¿Quizás una cola de paquetes y alguna manera de controlar cuándo se mandan a la función SendPacket?

Gracias :)
9  Programación / Programación C/C++ / Aporte C++ - Clases Pila y Cola. en: 21 Diciembre 2013, 17:52 pm
He desarrollado una clase Pila y una Clase cola para estudiar de cara a la universidad y se me ha ocurrido publicarla aquí, ya que estoy viendo publicaciones en las que se hacen preguntas sobre la implementación de estas clases y podrían ayudar a más de uno. Si alguien encuentra algún error que lo comente, por favor.

Aquí los archivos:

Stack.h
Código
  1. #include <cstddef>
  2.  
  3. template <class T>
  4. class Stack
  5. {
  6.  private:
  7.    struct Node
  8.    {
  9.      Node* nextNode;
  10.      T data;
  11.    };
  12.  
  13.    Node* topNode = NULL;
  14.    int dataSize = 0;
  15.  
  16.    static Node* copyNode(Node* node)
  17.    {
  18.      Node* newNode = NULL;
  19.      if (node)
  20.      {
  21. newNode = new Node;
  22. newNode->data = node->data;
  23. newNode->nextNode = copy(node->nextNode);
  24.      }
  25.      return newNode;
  26.    }
  27.    static void deleteNode(Node* node)
  28.    {
  29.      if (node)
  30.      {
  31. deleteNode(node->nextNode);
  32. delete node;
  33.      }
  34.    }
  35.  
  36.  public:
  37.    Stack();
  38.    Stack(const Stack& original);
  39.    ~Stack();
  40.  
  41.    T top() const;
  42.    bool empty() const;
  43.    int size() const;
  44.  
  45.    void push(const T& data);
  46.    void pop();
  47.    void clear();
  48.  
  49.    Stack& operator =(const Stack& original);
  50. };
  51.  
  52. template <class T>
  53. Stack<T>::Stack() {}
  54.  
  55. template <class T>
  56. Stack<T>::Stack(const Stack &original)
  57. {
  58.  if (this != &original)
  59.  {
  60.    dataSize = original.dataSize;
  61.    topNode = copy(original.topNode);
  62.  }
  63. }
  64.  
  65. template <class T>
  66. Stack<T>::~Stack()
  67. {
  68.  deleteNode(this->topNode);
  69. }
  70.  
  71. template <class T>
  72. Stack<T>& Stack<T>::operator =(const Stack& original)
  73. {
  74.  if (this != &original)
  75.  {
  76.    dataSize = original.dataSize;
  77.    deleteNode(topNode);
  78.    topNode = copyNode(original.topNode);
  79.  }
  80.  return *this;
  81. }
  82.  
  83. template <class T>
  84. T Stack<T>::top() const
  85. {
  86.  return topNode->data;
  87. }
  88.  
  89. template <class T>
  90. void Stack<T>::push(const T& data)
  91. {
  92.  Node* newTop = new Node;
  93.  newTop->data = data;
  94.  newTop->nextNode = topNode;
  95.  topNode = newTop;
  96.  
  97.  dataSize = dataSize + 1;
  98. }
  99.  
  100. template <class T>
  101. void Stack<T>::pop()
  102. {  
  103.  Node* auxNode = topNode;
  104.  topNode = topNode->nextNode;
  105.  delete auxNode;
  106.  
  107.  dataSize = dataSize - 1;
  108. }
  109.  
  110. template <class T>
  111. bool Stack<T>::empty() const
  112. {
  113.  return (topNode == NULL);
  114. }
  115.  
  116. template <class T>
  117. int Stack<T>::size() const
  118. {
  119.  return dataSize;
  120. }
  121.  
  122. template <class T>
  123. void Stack<T>::clear()
  124. {
  125.  deleteNode(topNode);
  126.  topNode = NULL;
  127.  dataSize = 0;
  128. }

Queue.h
Código
  1. #include <cstddef>
  2.  
  3. template <class T>
  4. class Queue
  5. {
  6.  private:
  7.    struct Node
  8.    {
  9.      T data;
  10.      Node* prevNode;
  11.    };
  12.  
  13.    int dataSize;
  14.    Node* frontNode;
  15.    Node* lastNode;
  16.  
  17.    static Node* copyNode(Node* node, Node* last)
  18.    {
  19.      Node* newNode = NULL;
  20.      if(node)
  21.      {
  22. newNode = new Node;
  23. newNode->data = node->data;
  24. newNode->prevNode = copyNode(node->prevNode);
  25. if (newNode->nextNode == NULL) last = newNode;
  26.      }
  27.      return newNode;
  28.    }
  29.  
  30.    static void deleteNode(Node* node)
  31.    {
  32.      if(node)
  33.      {
  34. deleteNode(node->prevNode);
  35. delete node;
  36.      }
  37.    }
  38.  
  39.  public:
  40.    Queue();
  41.    Queue(const Queue& original);
  42.    ~Queue();
  43.  
  44.    T front() const;
  45.    bool empty() const;
  46.    int size() const;
  47.  
  48.    void push(const T &data);
  49.    void pop();
  50.    void clear();
  51.  
  52.    Queue& operator =(const Queue& original);
  53. };
  54.  
  55. template <class T>
  56. Queue<T>::Queue()
  57. {
  58.  dataSize = 0;
  59.  frontNode = NULL;
  60.  lastNode = NULL;
  61. }
  62.  
  63. template <class T>
  64. Queue<T>::Queue(const Queue& original)
  65. {
  66.  if (this != &original)
  67.  {
  68.    dataSize = original.dataSize;
  69.    frontNode = copyNode(original.frontNode);
  70.  }
  71. }
  72.  
  73. template <class T>
  74. Queue<T>::~Queue()
  75. {
  76.  deleteNode(frontNode);
  77. }
  78.  
  79. template <class T>
  80. T Queue<T>::front() const
  81. {
  82.  return frontNode->data;
  83. }
  84.  
  85. template <class T>
  86. bool Queue<T>::empty() const
  87. {
  88.  return (frontNode == NULL);
  89. }
  90.  
  91. template <class T>
  92. int Queue<T>::size() const
  93. {
  94.  return dataSize;
  95. }
  96.  
  97. template <class T>
  98. void Queue<T>::push(const T &data)
  99. {
  100.  Node* newNode = new Node;
  101.  newNode->data = data;
  102.  newNode->prevNode = NULL;
  103.  if (!frontNode) frontNode = newNode;
  104.  else lastNode->prevNode = newNode;
  105.  lastNode = newNode;
  106.  
  107.  dataSize = dataSize + 1;
  108. }
  109.  
  110. template <class T>
  111. void Queue<T>::pop()
  112. {
  113.  Node* aux = frontNode;
  114.  frontNode = frontNode->prevNode;
  115.  delete aux;
  116.  
  117.  dataSize = dataSize - 1;
  118. }
  119.  
  120. template <class T>
  121. void Queue<T>::clear()
  122. {
  123.  deleteNode(frontNode);
  124.  frontNode = NULL;
  125.  lastNode = NULL;
  126.  dataSize = 0;
  127. }
  128.  
  129. template <class T>
  130. Queue<T>& Queue<T>::operator =(const Queue& original)
  131. {
  132.  if (this != &original)
  133.  {
  134.    dataSize = original.dataSize;
  135.    deleteNode(frontNode);
  136.    frontNode = copyNode(original.frontNode);
  137.  }
  138.  return *this;
  139. }

Saludos.
10  Programación / Programación C/C++ / C++ - Problema con operador delete en: 13 Diciembre 2013, 18:50 pm
Estoy desarrollando una clase Matriz, en la que le he incluido varias sobrecargas de operadores para poder trabajar con estas matrices de una manera más cómoda. El problema viene dado cuando entra en juego el operador de asignación, cuando usa la operación delete para liberar la memoria de la matriz y crear una copia del parámetro, que me da el siguiente error, además de un mapeado de memoria:
Código:
*** glibc detected *** ./test.exe: free(): invalid pointer: 0x0000000000401662 ***

Os adjunto el código de la clase y el código de test.exe:

Matriz.h
Código
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. class Matriz {
  7.  
  8. private:
  9.  
  10.  int nfilas;
  11.  int ncolumnas;
  12.  int **matr;
  13.  
  14. public:
  15.  
  16.  //Constructoras
  17.  Matriz();
  18.  Matriz(int filas, int columnas);
  19.  
  20.  //Destructora
  21.  ~Matriz();
  22.  
  23.  //Consultoras
  24.  int filas() const;
  25.  int columnas() const;
  26.  int consultar(int fila, int columna) const;
  27.  
  28.  //Modificadora
  29.  void modificar(int fila, int columna, int x);
  30.  
  31.  //Entrada / Salida
  32.  void leer();
  33.  void escribir();
  34.  
  35.  //Operadores
  36.  Matriz operator +(const Matriz &b) const;
  37.  Matriz operator -(const Matriz &b) const;
  38.  Matriz operator *(const Matriz &b) const;
  39.  Matriz operator =(const Matriz &b);
  40.  
  41.  bool operator ==(const Matriz &mat) const;
  42.  bool operator !=(const Matriz &mat) const;
  43. };
  44.  
  45. Matriz::Matriz() {}
  46.  
  47. Matriz::Matriz(int filas, int columnas)
  48. {
  49.  this->nfilas = filas;
  50.  this->ncolumnas = columnas;
  51.  
  52.  matr = new int* [filas];
  53.  for (int i = 0; i < filas; ++i)
  54.  {
  55.    matr[i] = new int [columnas];
  56.  }
  57. }
  58.  
  59. Matriz::~Matriz()
  60. {
  61.  delete matr;
  62. }
  63.  
  64. int Matriz::filas() const
  65. {
  66.  return nfilas;
  67. }
  68.  
  69. int Matriz::columnas() const
  70. {
  71.  return ncolumnas;
  72. }
  73.  
  74. int Matriz::consultar(int fila, int columna) const
  75. {
  76.  return matr[fila][columna];
  77. }
  78.  
  79. void Matriz::modificar(int fila, int columna, int x)
  80. {
  81.  matr[fila][columna] = x;
  82. }
  83.  
  84. void Matriz::leer()
  85. {
  86.  for (int i = 0; i < nfilas; ++i)
  87.    for (int j = 0; j < ncolumnas; ++j) cin >> matr[i][j];
  88. }
  89.  
  90. void Matriz::escribir()
  91. {
  92.  for (int i = 0; i < nfilas; ++i)
  93.  {
  94.    for (int j = 0; j < ncolumnas; ++j) cout << matr[i][j] << " ";
  95.    cout << endl;
  96.  }
  97. }
  98.  
  99. Matriz Matriz::operator +(const Matriz &b) const
  100. {
  101.  int filas = this->nfilas;
  102.  int columnas = this->ncolumnas;
  103.  
  104.  Matriz res(filas, columnas);
  105.  
  106.  for (int i = 0; i < filas; ++i)
  107.    for (int j = 0; j < columnas; ++j)
  108.      res.matr[i][j] = this->matr[i][j] + b.matr[i][j];
  109.  
  110.  return res;
  111. }
  112.  
  113. Matriz Matriz::operator -(const Matriz &b) const
  114. {
  115.  int filas = this->nfilas;
  116.  int columnas = this->ncolumnas;
  117.  
  118.  Matriz res(filas, columnas);
  119.  
  120.  for (int i = 0; i < filas; ++i)
  121.    for (int j = 0; j < columnas; ++j)
  122.      res.matr[i][j] = this->matr[i][j] - b.matr[i][j];
  123.  
  124.  return res;
  125. }
  126.  
  127. Matriz Matriz::operator *(const Matriz &b) const
  128. {
  129.  if (this->ncolumnas == b.nfilas)
  130.  {
  131.    int pos = this->ncolumnas;
  132.    int filas = this->nfilas;
  133.    int columnas = b.ncolumnas;
  134.  
  135.    Matriz res(filas, columnas);
  136.    for (int i = 0; i < filas; ++i)
  137.    {
  138.      for (int j = 0; j < columnas; ++j)
  139.      {
  140. int value = 0;
  141. for (int k = 0; k < pos; ++k) value += this->matr[i][k] * b.matr[k][j];
  142. res.matr[i][j] = value;
  143.      }
  144.    };
  145.    return res;
  146.  }
  147. }
  148.  
  149. Matriz Matriz::operator =(const Matriz &mat)
  150. {
  151.  if (this != &mat)
  152.  {
  153.    cout << "flag1" << endl;
  154.    delete this->matr;
  155.    cout << "flag2" << endl;
  156.    if (mat.matr)
  157.    {
  158.      this->nfilas = mat.nfilas;
  159.      this->ncolumnas = mat.ncolumnas;
  160.  
  161.      matr = new int* [nfilas];
  162.      for (int i = 0; i < nfilas; ++i)
  163.      {
  164. matr[i] = new int [ncolumnas];
  165.      }
  166.  
  167.      for (int i = 0; i < nfilas; ++i)
  168.      {
  169. for (int j = 0; j < ncolumnas; ++j)
  170. {
  171.  matr[i][j] = mat.matr[i][j];
  172. }
  173.      }
  174.    }
  175.    else this->matr = NULL;
  176.  }
  177.  return *this;
  178. }
  179.  
  180. bool Matriz::operator ==(const Matriz &mat) const
  181. {
  182.  for (int i = 0; i < nfilas; ++i)
  183.    for (int j = 0; j < ncolumnas; ++j)
  184.      if (this->matr[i][j] != mat.matr[i][j]) return false;
  185.  
  186.  return true;
  187. }
  188.  
  189. bool Matriz::operator !=(const Matriz &mat) const
  190. {
  191.  for (int i = 0; i < nfilas; ++i)
  192.    for (int j = 0; j < ncolumnas; ++j)
  193.      if (this->matr[i][j] != mat.matr[i][j]) return true;
  194.  
  195.  return false;
  196. }
  197.  

Código
  1. #include "Matriz.h"
  2.  
  3. int main()
  4. {
  5.  int f1, c1, f2, c2;
  6.  
  7.  cout << "Introduce el tamaño de la primera matriz:" << endl;
  8.  cin >> f1 >> c1;
  9.  Matriz mat1(f1, c1);
  10.  cout << "Introduce los valores de la matriz:" << endl;
  11.  mat1.leer();
  12.  
  13.  cout << "Introduce el tamaño de la segunda matriz:" << endl;
  14.  cin >> f2 >> c2;
  15.  Matriz mat2(f2, c2);
  16.  cout << "Introduce los valores de la matriz:" << endl;
  17.  mat2.leer();
  18.  
  19.  
  20.  if (c1 == f2)
  21.  {
  22.    Matriz res;
  23.    res = mat1 * mat2;
  24.  
  25.    res.escribir();
  26.  }
  27. }
  28.  

He probado varias cosas, como cambiar delete por delete[], o intentar eliminar los vectores individualmente, pero ninguna ha dado resultado. Algo debo estar haciendo mal, pero no encuentro el error. Si le pudierais echar un ojo me haríais un favor.

Muchas gracias.
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines