Título: [ayuda]con un codigo asm,
Publicado por: ny0x en 19 Mayo 2009, 04:47 am
Hola tengo un problema, este programa pide el nombre de un proceso y despues procede a terminarlo, pero no lo hace la funcion Process32First me devuelve nul y no se porque, yo creo que pase bien los parametros, por favor ayudenme a encontrar el error, esta un poco enredado porque soy novato, lo organize lo mejor que pude format pe console entry main include 'c:\fasm\include\win32ax.inc' .data ;Data begin--------------------------------------------------\ struct PROCESSENTRY32 ; dwSize dd ? ; cntUsage dd ? ; th32ProcessID dd ? ; th32DefaultHeapID dw ? ; th32ModuleID dd ? ; cntThreads dd ? ; th32ParentProcessID dd ? ; pcPriClassBase dd ? ; dwFlags dd ? ; szExeFile rb MAX_PATH ; ends ; pInfo PROCESSENTRY32 ; hProcess dd ? ; hProcesses dd ? ; TH32CS_SNAPPROCESS equ 0x00000002 ; NORM_IGNORECASE equ 0x00000001 ; LOCALE_USER_DEFAULT equ 0x0400 ; CSTR_EQUAL equ 0x2 ; PROCESS_TERMINATE equ 0x0001 ; lpExe db 256 dup(0) ; ;Data ends---------------------------------------------------/ .code ;Code Begins-------------------------------------------------\ main: ; invoke printf,"Escriba el proceso a terminar: " ; invoke scanf,"%s",addr lpExe ; xor eax,eax ; push eax ; push TH32CS_SNAPPROCESS ; call [CreateToolhelp32Snapshot] ; cmp eax,INVALID_HANDLE_VALUE ; jne NoE1 ; push 1 ; call ErrorReport ; jmp main@Salir ; NoE1: ; mov [hProcesses],eax ; push pInfo ; push [hProcesses] ; call [Process32First] ; cmp eax,FALSE ; jne NoE2 ; push 2 ; call ErrorReport ; jmp main@Salir ; NoE2: ; bucle1: ; push 0xFFFFFFFF ; push lpExe ; push 0xFFFFFFFF ; push pInfo.szExeFile ; push NORM_IGNORECASE ; push LOCALE_USER_DEFAULT ; call [CompareString] ; cmp eax,CSTR_EQUAL ; jne Next ; push pInfo.th32ProcessID ; push FALSE ; push PROCESS_TERMINATE ; call [OpenProcess] ; cmp eax,0 ; je Next ; mov [hProcess],eax ; push 0 ; push [hProcess] ; call [TerminateProcess] ; push [hProcess] ; call [CloseHandle] ; ; Next: ; push pInfo ; push [hProcesses] ; call [Process32Next] ; cmp eax,FALSE ; je FinBucle1 ; jmp bucle1 ; FinBucle1: ; push [hProcesses] ; call [CloseHandle] ; main@Salir: ; ; leave ; ret ; ;Main Ends'''''''''''''''''''''''''''''''''''''''''''''''''''; ;ErrorReport Begins''''''''''''''''''''''''''''''''''''''''''; ; proc ErrorReport,raz ; call [GetLastError] ; cmp [raz],1 ; je @0 ; cmp [raz],2 ; je @1 ; cmp [raz],3 ; je @2 ; jmp @def ; @0: ; invoke printf,"Error Handle Invalido code %d ",eax ; jmp Error@Salir ; @1: ; invoke printf,"Error cannot open the process ",eax ; jmp Error@Salir ; @2: ; jmp Error@Salir ; @def: ; invoke printf,"Error desconocido code %d ",eax ; Error@Salir: ; call [GetLastError] ; invoke printf,"%d",eax ; leave ; ret ; endp ; ;ErrorReports ends'''''''''''''''''''''''''''''''''''''''''''; ;.code ends--------------------------------------------------/ section '.idata' import data readable library k32,'kernel32.dll',msv,'msvcrt.dll' import k32,CreateToolhelp32Snapshot,'CreateToolhelp32Snapshot',\ GetLastError,'GetLastError',Process32First,'Process32First',\ CompareString,'CompareStringA', OpenProcess,'OpenProcess',\ TerminateProcess,'TerminateProcess', \ CloseHandle,'CloseHandle',Process32Next,'Process32Next' import msv,printf,'printf',scanf,'scanf'
saludos
Título: Re: [ayuda]con un codigo asm,
Publicado por: Hesp en 19 Mayo 2009, 08:07 am
dwSize
The size of the structure, in bytes. Before calling the Process32First function, set this member to sizeof(PROCESSENTRY32). If you do not initialize dwSize, Process32First fails.
Creo k hay puede estar el error por k lo tienes sin inicializar, ami parecer xD
sldos.
Título: Re: [ayuda]con un codigo asm,
Publicado por: YST en 19 Mayo 2009, 08:27 am
.
Título: Re: [ayuda]con un codigo asm,
Publicado por: ny0x en 19 Mayo 2009, 20:16 pm
muchas gracias a los dos por responder, si era el problema de la estructura, el unico problema que tengo ahora es, que no termina el proceso, pero eso debe ser un error de logica (me perdi entre tantos saltos :P ). De eso me encargo yo.
saludos y de nuevo gracias ;D
Título: Re: [ayuda]con un codigo asm,
Publicado por: YST en 19 Mayo 2009, 20:18 pm
muchas gracias a los dos por responder, si era el problema de la estructura, el unico problema que tengo ahora es, que no termina el proceso, pero eso debe ser un error de logica (me perdi entre tantos saltos :P ). De eso me encargo yo.
saludos y de nuevo gracias ;D
El codigo que yo te pase me termina perfectamente los procesos , aswegurate de escribirlo bien con mayusculas y todo.
Título: Re: [ayuda]con un codigo asm,
Publicado por: ny0x en 19 Mayo 2009, 20:31 pm
tienes razon, ya lo cheque es que tenia mal un salto :-X , por fin termina bien los procesos, solo es cuestion que lo organize un poco para que no paresca espagueti, Y si aprendo un poco mas de asm :¬¬ a lo mejor lo convierto en un mini administrador de tareas en modo consola. saludos
|