comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Terminar un proceso en ASM

  • 2 Respuestas
  • 2287 Vistas

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

Desconectado ProcessKill

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

Desconectado casca2011

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Junio 22, 2011, 02:40:50 am »
yeah buen aporte fiel user

tambien recuerda que puedes usar EnumProcesses, ZwQueryInformation para obtener el pid del proceso a cerrar, al igual que se pueden usar metodos alternativos para terminar un proceso.

yeah fuck.
voten en el top users

Desconectado _DauT_

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Junio 22, 2011, 02:51:04 am »
Quiero que el fiel user haga más aportes con la WinAPI, aunque ya esté documentada ::)

 

¿Te gustó el post? COMPARTILO!