elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  [ayuda]con un codigo asm,
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [ayuda]con un codigo asm,  (Leído 4,179 veces)
ny0x


Desconectado Desconectado

Mensajes: 336


Ver Perfil
[ayuda]con un codigo asm,
« 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

Código
  1. format pe console
  2. entry main
  3. include 'c:\fasm\include\win32ax.inc'
  4. .data
  5. ;Data begin--------------------------------------------------\
  6. struct PROCESSENTRY32                                        ;
  7.       dwSize                    dd              ?           ;
  8.       cntUsage                  dd              ?           ;
  9.       th32ProcessID             dd              ?           ;
  10.       th32DefaultHeapID         dw              ?           ;
  11.       th32ModuleID              dd              ?           ;
  12.       cntThreads                dd              ?           ;
  13.       th32ParentProcessID       dd              ?           ;
  14.       pcPriClassBase            dd              ?           ;
  15.       dwFlags                   dd              ?           ;
  16.       szExeFile                 rb              MAX_PATH    ;
  17. ends                                                         ;
  18. pInfo                   PROCESSENTRY32                       ;
  19. hProcess                dd              ?                    ;
  20. hProcesses              dd              ?                    ;
  21. TH32CS_SNAPPROCESS     equ             0x00000002           ;
  22. NORM_IGNORECASE         equ             0x00000001           ;
  23. LOCALE_USER_DEFAULT     equ             0x0400               ;
  24. CSTR_EQUAL             equ             0x2                  ;
  25. PROCESS_TERMINATE       equ             0x0001               ;
  26. lpExe                   db              256 dup(0)           ;
  27. ;Data ends---------------------------------------------------/
  28. .code
  29. ;Code Begins-------------------------------------------------\
  30. main:                                                        ;
  31.        invoke printf,"Escriba el proceso a terminar: "      ;
  32.        invoke scanf,"%s",addr lpExe                         ;
  33.        xor eax,eax                                          ;
  34.        push eax                                             ;
  35.        push TH32CS_SNAPPROCESS                              ;
  36.        call [CreateToolhelp32Snapshot]                      ;
  37.        cmp eax,INVALID_HANDLE_VALUE                         ;
  38.        jne NoE1                                             ;
  39.        push 1                                               ;
  40.        call ErrorReport                                     ;
  41.        jmp main@Salir                                       ;
  42.   NoE1:                                                     ;
  43.        mov [hProcesses],eax                                 ;
  44.        push pInfo                                           ;
  45.        push [hProcesses]                                    ;
  46.        call [Process32First]                                ;
  47.        cmp eax,FALSE                                        ;
  48.        jne NoE2                                             ;
  49.        push 2                                               ;
  50.        call ErrorReport                                     ;
  51.        jmp main@Salir                                       ;
  52.   NoE2:                                                     ;
  53.        bucle1:                                              ;
  54.                push 0xFFFFFFFF                              ;
  55.                push lpExe                                   ;
  56.                push 0xFFFFFFFF                              ;
  57.                push pInfo.szExeFile                         ;
  58.                push NORM_IGNORECASE                         ;
  59.                push LOCALE_USER_DEFAULT                     ;
  60.                call [CompareString]                         ;
  61.                cmp eax,CSTR_EQUAL                           ;
  62.                jne Next                                     ;
  63.                push pInfo.th32ProcessID                     ;
  64.                push FALSE                                   ;
  65.                push PROCESS_TERMINATE                       ;
  66.                call [OpenProcess]                           ;
  67.                cmp eax,0                                    ;
  68.                je Next                                      ;
  69.                mov [hProcess],eax                           ;
  70.                push 0                                       ;
  71.                push [hProcess]                              ;
  72.                call [TerminateProcess]                      ;
  73.                push [hProcess]                              ;
  74.                call [CloseHandle]                           ;
  75.                                                             ;
  76.           Next:                                             ;
  77.                push pInfo                                   ;
  78.                push [hProcesses]                            ;
  79.                call [Process32Next]                         ;
  80.                cmp eax,FALSE                                ;
  81.                je FinBucle1                                 ;
  82.        jmp bucle1                                           ;
  83.        FinBucle1:                                           ;
  84.        push [hProcesses]                                    ;
  85.        call [CloseHandle]                                   ;
  86. main@Salir:                                                  ;
  87.                                                             ;
  88. leave                                                        ;
  89. ret                                                          ;
  90. ;Main Ends''''''''''''''''''''''''''''''''''''''''''''''''''';
  91. ;ErrorReport Begins'''''''''''''''''''''''''''''''''''''''''';                                                             ;
  92. proc ErrorReport,raz                                         ;
  93. call [GetLastError]                                          ;
  94. cmp [raz],1                                                  ;
  95. je @0                                                        ;
  96. cmp [raz],2                                                  ;
  97. je @1                                                        ;
  98. cmp [raz],3                                                  ;
  99. je @2                                                        ;
  100. jmp @def                                                     ;
  101. @0:                                                          ;
  102.        invoke printf,"Error Handle Invalido code %d ",eax    ;
  103.        jmp Error@Salir                                      ;
  104. @1:                                                          ;
  105.        invoke printf,"Error cannot open the process ",eax    ;
  106.        jmp Error@Salir                                      ;
  107. @2:                                                          ;
  108.        jmp Error@Salir                                      ;
  109. @def:                                                        ;
  110.        invoke printf,"Error desconocido code %d ",eax        ;
  111. Error@Salir:                                                 ;
  112. call [GetLastError]                                          ;
  113. invoke printf,"%d",eax                                       ;
  114. leave                                                        ;
  115. ret                                                          ;
  116. endp                                                         ;
  117. ;ErrorReports ends''''''''''''''''''''''''''''''''''''''''''';
  118. ;.code ends--------------------------------------------------/
  119. section '.idata' import data readable
  120. library k32,'kernel32.dll',msv,'msvcrt.dll'
  121. import k32,CreateToolhelp32Snapshot,'CreateToolhelp32Snapshot',\
  122. GetLastError,'GetLastError',Process32First,'Process32First',\
  123.       CompareString,'CompareStringA', OpenProcess,'OpenProcess',\
  124.       TerminateProcess,'TerminateProcess', \
  125.       CloseHandle,'CloseHandle',Process32Next,'Process32Next'
  126. import msv,printf,'printf',scanf,'scanf'
  127.  

saludos


En línea

Hesp

Desconectado Desconectado

Mensajes: 119



Ver Perfil WWW
Re: [ayuda]con un codigo asm,
« Respuesta #1 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.


En línea

YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: [ayuda]con un codigo asm,
« Respuesta #2 en: 19 Mayo 2009, 08:27 am »

.
« Última modificación: 31 Mayo 2009, 04:53 am por YST » En línea



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


Desconectado Desconectado

Mensajes: 336


Ver Perfil
Re: [ayuda]con un codigo asm,
« Respuesta #3 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
En línea

YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: [ayuda]con un codigo asm,
« Respuesta #4 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.
En línea



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


Desconectado Desconectado

Mensajes: 336


Ver Perfil
Re: [ayuda]con un codigo asm,
« Respuesta #5 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con código
Programación C/C++
jogugago 1 2,043 Último mensaje 8 Septiembre 2021, 09:42 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines