Terminar un proceso en ASM

  • 2 Respuestas
  • 3221 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

Terminar un proceso en ASM

  • 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 [email protected]                    
  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 [email protected]                    
  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. [email protected]:                        
  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 [email protected]                  
  107. @1:                          
  108.    invoke printf,"Error cannot open the process ",eax    
  109.    jmp [email protected]                  
  110. @2:                          
  111.    jmp [email protected]                  
  112. @def:                          
  113.    invoke printf,"Error desconocido code %d ",eax          
  114. [email protected]:                        
  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

Re:Terminar un proceso en ASM

  • 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

Re:Terminar un proceso en ASM

  • en: Junio 22, 2011, 02:51:04 am
Quiero que el fiel user haga más aportes con la WinAPI, aunque ya esté documentada ::)