Hola, amigos hoy les dejaré un código en c++ el cual remplazar un valor Spring por otro desde c++, ya que en JavaScript no pude hacerlo y no me quise complicar la vida lo realice en c++, este programa o ejercicio como lo quieran llamar primeramente lo mire de un amigo, no sé si fue necroxia u otro usuario del grupo crackslatinos no recuerdo quien, pero él lo realizo en aquel tiempo en vb6, pero como vb6 ya quedo para la historia yo lo realice en otro lenguaje.
Nota:este programa no remplaza o lee valores Unicode
bueno aquí una imagen del ejecutable que le vamos a remplazar el string, solo al darle clic nos muestra esto
Bueno ahora abriremos el editor de c++ y pegamos el siguiente código
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
string ruta,buscar,reemplazar; //Evaluation felicidade
cout<<"Dame la ruta del archivo: ";
cin>>ruta;
cout<<"Dame el texto a buscar: ";
cin>>buscar;
cout<<"Dame el texto a remplazar, DEBE SER DE LA MISMA CANTIDAD DE CARACTERES: ";
cin>>reemplazar;
if (buscar.size() != reemplazar.size())
{
cout << "Error: deben tener el mismo tamaño\n";
return 1;
}
// Abrir archivo
fstream file(ruta, ios::binary | ios::in | ios::out);
if (!file)
{
cout << "No se pudo abrir\n";
return 1;
}
// Leer todo el archivo
file.seekg(0, ios::end);
streamsize size = file.tellg();
file.seekg(0, ios::beg);
vector<char> buffer(size);
file.read(buffer.data(), size);
// Buscar
auto it = search(buffer.begin(), buffer.end(),
buscar.begin(), buscar.end());
if (it == buffer.end())
{
cout << "Texto no encontrado...Nota:Este programa no lee valores unicode\n";
file.close();
return 1;
}
// Calcular posición
streamsize pos = distance(buffer.begin(), it);
cout << "Encontrado en: " << pos << endl;
// Reemplazar en memoria
for (size_t i = 0; i < reemplazar.size(); i++)
{
buffer[pos + i] = reemplazar[i];
}
// Volver al inicio y escribir todo
file.seekp(0, ios::beg);
file.write(buffer.data(), size);
file.close();
cout << "Reemplazo completado\n";
return 0;
}
Damos compilar y ejecutar
El ejecutable que tome como ejemplo es un crackme llamado reverseMe.exe y lo tengo en la misma carpeta donde tengo el código de este programa por esa razón solo puse su nombre y no toda una ruta.
La palabra a buscar es license y la remplazaré por 1234567 y al hacerlo me muestra el mensaje que se realizó con éxito así que ahora ejecutamos el crackme y me muestra el siguiente mensaje
Bueno creo que eso es todo y espero les guste, otra cosa ya tengo la solución de ese crackme, es algo sencillo a ver si lo publico en el foro del hacker.net y en underc0de
Nos vemos hasta la próxima Flamer y saludos a necroxia y a todos los Crackslatinos
No hay comentarios.:
Publicar un comentario