Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - ccjrocks

#1
Muy buenas gente, resulta que estoy haciendo un mod de un crypter, y ya he quitado bastantes firmas (18 para ser exactos), y todas ellas las he hecho modificando algún offset, cambiando el entrypoint, las tables, etc.

El problema viene conque un antivirus me detecta la string "RtlMoveMemory", por lo que no puedo hacer el método RIT.

He intentado hacer el método XOR y el MEEPA (mejor que el XOR, ya que edito la dirección y pongo lo que quiera) y ninguno de los dos me funciona, me rompe el ejecutable y me pone: "Acess Violation Error" al hacer debug con el olly. Si lo pruebo sin esas instrucciones tira perfectamente, osea que no se por qué es, es como si no pudiera escribir esa zona del fichero. Ah, y no está pasado por un packer ni nada, he modificado directamente el source compilado. Os dejo una capturilla a ver si me ayudáis  :rolleyes:



(ignorad que esté en rojo y la dirección del entrypoint, estuve haciendo modificaciones. El entrypoint está en el MOV)
#2
Muy buenas cracks, tengo un problemilla que me está frustrando bastante, os dejo el code para que veáis que falla, seguro que es una chorrada:


long tellFileSizeSTREAM(ifstream& FileToAnalize){
long startpoint=FileToAnalize.tellg();
long retorno=0;
FileToAnalize.seekg(0,ios_base::end);
retorno=FileToAnalize.tellg();
FileToAnalize.seekg(0,startpoint);
return retorno;
}


//A PARTIR DE AQUÍ ESTE CODE ESTÁ DENTRO DEL MAIN
ifstream readfile;
readfile.open(readpath.c_str(),ios::binary); //readpath es un string con la ruta
long readfilesize=tellFileSizeSTREAM(readfile);
while(readfile.good()){
char writebuffer;
readfile.read(&writebuffer,1);
outputfile.write(&writebuffer,1);
}


Lo extraño esque me da error en tiempo de ejecucción de violación de acceso a memoria, he probado a cambiar el código de mil maneras posibles pero no tengo ni idea de qué puede ser :-( A alguno os ha pasado esto?

Ah, y tengo que ir char a char porque quiero hacer una manipulación en ellos. A ver si alguno sabe lo que es. Gracas de antemano :silbar:
#3
He diseñado este code para devolver la ruta del fichero que ejecutó la aplicación:

char* GetMainExecutablePath() {
TCHAR szEXEPath[2048];
int counter = 0;
GetModuleFileName ( NULL, szEXEPath, 2048 );
for(int j=0; szEXEPath[j]!=0; j++)
{
counter=counter+1;
}

char *actualpath;
actualpath=new char[counter];

for(int j=0; szEXEPath[j]!=0; j++)
{
actualpath[j]=szEXEPath[j];

}

return actualpath;
}


Teóricamente no debería haber ningún problema, pero es que en el retorno se muestran algunos caracteres extraños al final de la cadena que devuelve la función, no sé por qué- :huh:

Me gustaría que me explicaran por qué sucede ésto (no quiero soluciones alternativas para obtener el ejecutable). Gracias de antemano  ;D