[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
pequeno dump de memoria em c++
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
- Código:
//autor: hacker fts315
//exemplo: ftsdump.exe "prompt de comando" 500 1000
//obs: os endereço de memoria deve ser em decimal
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include <windows.h>
using namespace std;
void slogan(void);
int main(int argc, char *argv[])
{
//variaveis
HWND janela;
long int end_ini, end_fin;
DWORD pid;
HANDLE han;
int loop, cont, tam;
char st[2000], titulo[500];
slogan();
//procurar janela
janela = FindWindow(0,argv[1]);
if(!janela)
{
cout << "erro: janela nao encotrado!!!" << endl;
exit(0);
}
//endereçamento
end_ini = atoi(argv[2]);
end_fin = atoi(argv[3]);
loop = end_fin - end_ini;
//pega o pid e abre o processo
GetWindowThreadProcessId(janela,&pid);
han = OpenProcess(PROCESS_ALL_ACCESS,0,pid);
if(!han)
{
cout << "erro: processo nao pode ser aberto";
exit(0);
}
//cria o arquivo o arquivo
strcat(titulo,argv[1]);
strcat(titulo,".txt");
fstream arq(titulo,ios::out|ios::app);
arq << "===================================" << endl;
arq << "autor: hacker fts315" << endl;
arq << "site: http://endoffile.umforum.net" << endl;
arq << "programa: " << argv[1] << endl;
arq << "endereço: " << end_ini << " - " << end_fin << endl;
arq << "===================================" << endl << endl;
//ler a memoria
for(cont = 0; cont <= loop; cont++)
{
ReadProcessMemory(han,(LPVOID)end_ini,(LPVOID)st,sizeof(st),0);
arq << end_ini << ": ";
arq << st << endl << endl;
tam = strlen(st);
end_ini += tam + 1;
}
cout << "dump gerado com sucesso!!!" << endl;
//finalizaçao
CloseHandle(han);
return 0;
}
void slogan(void)
{
cout << "=========================================" << endl;
cout << " FTS STRING DUMP " << endl;
cout << "=========================================" << endl << endl;
}