Malware que se autocopia sobre sí mismo - Pregunta [C++]

Iniciado por zikotik, 18 Febrero 2014, 17:58 PM

0 Miembros y 1 Visitante están viendo este tema.

zikotik

Hola qué tal, estaba aburro y decidí hacer algo así como un malware, virus, o como lo quieran llamar, que lo que hace es autocopiar su mismo código al final del mismo, de tal manera que se vaya duplicando su tamaño cada vez más y más.

El problema es que se me ocurrió hacerlo en batch ya que quería hacer un concepto base, y la verdad es que no tengo ni idea de cómo pasarlo a lenguage C++ (se programar en este).

No sé si pueden tirarme una idea aunque sea para ver cómo me las puedo arreglar.

Código (dos) [Seleccionar]
@echo off
type archivo.bat >> archivo.bat


Básicamente lee su mismo código y se autocopia al final del mismo archivo, y como no reconoce fin de línea, se sigue copiando, pero en C++ tiraría error ya que no se puede modificar el mismo archivo si está en ejecución, por éso pregunto para saber si se les ocurre algo.

Gracias de antemano.

x64core

Cita de: zikotik en 18 Febrero 2014, 17:58 PM
Hola qué tal, estaba aburro y decidí hacer algo así como un malware, virus, o como lo quieran llamar, que lo que hace es autocopiar su mismo código al final del mismo, de tal manera que se vaya duplicando su tamaño cada vez más y más.

El problema es que se me ocurrió hacerlo en batch ya que quería hacer un concepto base, y la verdad es que no tengo ni idea de cómo pasarlo a lenguage C++ (se programar en este).

No sé si pueden tirarme una idea aunque sea para ver cómo me las puedo arreglar.

Código (dos) [Seleccionar]
@echo off
type archivo.bat >> archivo.bat


Básicamente lee su mismo código y se autocopia al final del mismo archivo, y como no reconoce fin de línea, se sigue copiando, pero en C++ tiraría error ya que no se puede modificar el mismo archivo si está en ejecución, por éso pregunto para saber si se les ocurre algo.

Gracias de antemano.

Injectar en algún proceso, terminar el proceso del archivo a modificar, desde el código remoto modificar el archivo.

zikotik

No encontré cómo inyectar el proceso en otro, así que hice algo mucho más fácil...

Escribir un batch desde el ejecutable, ejecutar este batch y listo, pero para no dar mucho lío de código, dejo este mismo pero acortado.

NOTA: YA SÉ QUE LO SIGUIENTE NO SE DEBE HACER Y QUE MUCHOS ME VAN A RETAR SEGURAMENTE O ME DIRAN PEDAZO DE HIJO DE..., PERO LO HICE PORQUE NO ME DIO MUCHO LA CABEZA...

Código (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <stdlib.h>

using namespace std;

int main(){
fstream file("tmp.bat", ios::out);
file << "taskkill /F /IM arch.exe\necho PROBANDO 123>>arch.exe\ndel %0\nexit";
file.close();

ifstream tmp("tmp.bat");
while(!tmp){
ifstream tmp("tmp.bat");
}
tmp.close();

system("tmp.bat");
}

x64core

Pues si lo vas a hacer desde un bat recomiendo dejar unos segundos de retraso antes de ejecutar el resto.

zikotik

Para el retraso de ejecución, directamente utilicé el While para que intente abir batch en modo input para saber si ya existe o aún no, en cuyo caso de existir, cierra la lectura y ejecuta el batch.