|
Mostrar Temas
|
Páginas: [1] 2 3 4 5
|
1
|
Programación / Programación General / [RESUELTO]¿como funciona windows?
|
en: 2 Septiembre 2011, 02:22 am
|
al encontrar algunas apis he encontrado algunas palabras y temas que desconocia o no sabia para que eran por ejemplo no sabia lo de memoria virtual hasta que hace 3 años por casualidad encontre un documento relacionado con asm y apis (mencionaba sobre memoria virtual) y recien me entere, DC HWND ni sabia, y asi cada ves que me encuentro con algo que no se tengo que ir a google a buscar cosa por cosa y de diferentes fuentes, esto es algo desordenado y peor es que no queda muy claro el tema buscando cosa por cosa. tengo algunos libros sobre windows pero que son superficiales donde trata cosas como: -¿que es un SO? -archivos,apicaciones utilitarios,antivirus -hardware -panel de control,configuracion -etc
lo que me interesaria saber es como trabaja windows pero por dentro a nivel de programacion, donde trate cosas como: -como maneja la memoria (primaria, cache) -teorias sobre el subsistema de apis -¿como se carga un programa o archivo en memoria? (creo que era algo de mapeado de archivo, o archivo proyectado en memoria) -sobre las ventanas y sus dispositivos de contextos -sockets -y demas cosas que tenga windows relacionadas a apis
kizas sepan de algun libro o documentos que traten sobre esto (de preferencia windows XP)
|
|
|
3
|
Seguridad Informática / Análisis y Diseño de Malware / [RESUELTO]codigos de las instrucciones en memoria ¿donde conseguirlas?
|
en: 29 Agosto 2011, 20:19 pm
|
he visto algunos ejemplos de inyeccion de codigo hechos en lenguajes de alto nivel como C para interceptar algunas apis o para hacer que el programa victima haga algo para lo que no fue programado, y vi que usan "creo que usan" los codigo de las instrucciones de asm pero cuando se cargan en memoria por mencionar algunos esta el RET creo que su codigo en memoria era C3 o el JMP que tiene varios codigos pero el que vi era E9 , en esos documentos mencionaban algo de opcodes googleando di con http://es.wikipedia.org/wiki/C%C3%B3digo_de_operaci%C3%B3nsegui googleando pero no encuentro mas de esos valores-codigos. ¿saben donde podria obtener una lista de esos valores-codigos y su sintaxis? ¿me recomiendan algun documento para aprender sobre este tema? -lo busque como "lista de opcodes" ¿esta bien como lo estoy buscando?
|
|
|
4
|
Programación / Programación Visual Basic / [RESUELTO]¿como comprobar varios resultados en un solo valor? - GetFileAttribute
|
en: 23 Agosto 2011, 06:58 am
|
el api GetFileAttributes en un solo resultado devuelve todos los atributos de un archivo ejem : +s +r / +s +r +h o lo que sea, para comprobar cada atributo que devuelva en ese UNICO resultado lo hago de esta forma if res = FILE_ATTRIBUTES_SYSTEM then atributos = atributos & "+S " if res = FILE_ATTRIBUTES_HIDDEN then atributos = atributos & "+H" if res = FILE_ATTRIBUTES_READONLY + FILE_SYSTEMHIDDEN then atributos = atributos & "+R +H "[ weno y asi se hace todo como en 30 lineas :S, ¿habra alguna manera mas simplificada de comprobar sin tanto codigo? ¿podrian dar alguna explicacion? o url donde expliquen.
|
|
|
5
|
Programación / Programación General / duda sobre apis de windows de 32 bits
|
en: 17 Agosto 2011, 18:36 pm
|
estoy haciendo un TREMENDO copy/paste de las apis de windows que hay en la web de la msdn para imprimirlo, muchas de las apis que estoy copiando ya son conocidas y funcionan bien en windows xp de 32 bits (por ejemplo): kernel32, user32 gdi32 etc, ¿saben si estas apis funcionaran en los windows de 64 bits? o ¿tendran algun reemplazo en esos sistemas de 64 bits? , es que quiero que mis aplicaciones corran sin problemas en todos los windows y no se si deba buscar buscar funciones especificas para sistemas de 64 bits.
-ese numero 32 que va en las DLL :kernel32 user32 supongo indica el tipo de sistema si es 32 o 64 bits ¿o no?
edicion: ¿que pasara con las aplicaciones ya hechas y que funcionan bien en windows xp de 32 bits si las ejecuto en windows xp de 64 bits? ¿fallaran?
|
|
|
6
|
Seguridad Informática / Análisis y Diseño de Malware / ¿alguna forma de modificar el resultado de una ejecucion?
|
en: 1 Agosto 2011, 17:38 pm
|
hola no se bien como llamar esto asi que puse ese titulo que es lo unico que se me ocurrio, para aclarar mas lo que quiero hacer expongo un caso: tengo un codigo en vb6 que al ingresar un numero, este lo evalua si es menor a 500 muestra el mensaje "Fallido", sino muestra "Exito". Private Sub Command1_Click() Dim Numero As Long Numero = Val(Text1.Text) If Numero < 500 Then MsgBox "Fallido", vbCritical, "" Exit Sub End If MsgBox "Exito", vbInformation, "" End Sub
quisiera detectar la ejecucion de esa rutina y de alguna manera interrumpirla y obtener la direccion donde se estaba realizando esa ejecucion para redireccionar la ejecucion y se salte ese If y el resultado sea siempre exito, en codigo seria asi: Private Sub Command1_Click() Dim Numero As Long Numero = Val(Text1.Text) MsgBox "Exito", vbInformation, "" End Sub
weno este es solo un ejemplo para que quede claro lo que quiero hacer, porque en realidad quisiera aplicar esto para haer malwares que por ejemplo detengan una ejecucion y despues de un rato continue, o cambiar la ejecucion del explorer.exe para evitar que el usuario cree una carpeta o copie un archivo, y asi muchas cosas se me ocurren. ¿tendran algun enlace sobre el tema? o ¿que apis debo buscar?, lo que sea se los agradecere.
|
|
|
7
|
Programación / Programación General / ¿alguna forma de ordenar codigos escritos en delphi 7?
|
en: 20 Julio 2011, 23:01 pm
|
en VB6 al escribir algo como: despues de pasar a la siguiente linea con enter, VB6 se encarga automaticamente de ordenar el codigo y lo anterior lo dejaria asi: mientras q en delphi se queda igual. o cuando quiero usar alguna propiedad de un objeto en VB6 por ejemplo escribo: luego VB6 me muestra la lista de propiedades que coninciden con ese texto escrito "Cap" y nada mas pulso TAB y pues se completa la linea de codigo: O si por ejem escribo una nombre de una funcion en minusculas/mayusculas: VB6 lo pone tal cual es: no se si se pueda hacer algo asi en delphi 7, es decir quizas agregarle algun programa o configurar algo, he estado viendo las opciones del entorno que esta en ingles y no encuentro una solucion, o kizas sepan algun enlace de algun otro delphi mas moderno que traiga esas opciones para "ordenar codigo automatico" o no se como llamar a esto que hace VB6, pero que hace la escritura de codigo bastante facil, comoda y facilita la lectura del codigo.
|
|
|
8
|
Programación / Programación Visual Basic / otra forma de llamar a una funcion de una DLL
|
en: 12 Julio 2011, 16:33 pm
|
consiste en escribir una funcion de usuario publica con los parametros que tendria la funcion api, luego sobreescribir el inicio de esa funcion con la instruccion en ensablador "jmp" (salto a una direccion) para saltar a una direccion que seria la direccion de la api que queremos llamar, luego al llamar a esa funcion de usuario ejecutariamos la api, ejemplo de como llamar a ShowWindow sin haberlo puesto en la sección Declaraciones: en un form1: (abrir el notepad para ocultarlo y volverlo visble) form1 'form1 'agregar controles: '1 command1 '1 command2 Option Explicit Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long) Private Declare Function VirtualProtect Lib "kernel32" (lpAddress As Any, ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long Dim hModule As Long Dim DirProc As Long Dim DirMiFun As Long Dim Codigo(1 To 20) As Byte Dim Distancia As Long Dim ViejaProte As Long Const jmp = &HE9 Const PAGE_EXECUTE_READWRITE As Long = &H40 Private Sub Command1_Click() Dim hwnd As Long hwnd = FindWindow("notepad", vbNullString) If hwnd = 0 Then MsgBox "No se encontro el notepad", vbCritical, "" Exit Sub Else Call MostrarVentana(hwnd, 5) End If End Sub Private Sub Command2_Click() Dim hwnd As Long hwnd = FindWindow("notepad", vbNullString) If hwnd = 0 Then MsgBox "No se encontro el notepad", vbCritical, "" Exit Sub Else Call MostrarVentana(hwnd, 0) End If End Sub Private Sub Form_Load() hModule = GetModuleHandle("user32") DirProc = GetProcAddress(hModule, "ShowWindow") DirMiFun = ObtenerMiDir(AddressOf MostrarVentana) Distancia = DirProc - DirMiFun - Len(Distancia) - 1 'intenta cambiar los atributos de esa zona de memoria para sobreescribirlo 'si se sobreescribe sin cambiar los atributos la aplicacion se cerrara If VirtualProtect(ByVal DirMiFun, 1 + Len(Distancia), PAGE_EXECUTE_READWRITE, ViejaProte) <> 0 Then Codigo(1) = jmp Call CopyMemory(Codigo(2), Distancia, Len(Distancia)) Call CopyMemory(ByVal DirMiFun, Codigo(1), 1 + Len(Distancia)) MsgBox "Listo", vbInformation, "" Else MsgBox "No se pudo cambiar los atributos de la region de memoria: " & DirMiFun & " (MostrarVentana)", vbCritical, "" End If Command1.Caption = "notepad visible" Command2.Caption = "notepad oculto" End Sub Private Function ObtenerMiDir(FunAddress As Long) As Long ObtenerMiDir = FunAddress End Function
module1.bas Option Explicit Public Function MostrarVentana(ByVal hwnd As Long, ByVal nCmdShow As Long) As Long 'esto es nada mas para que tenga un sitio donde sobreescribir, por 'seguridad sin que vaya afectar a otras instrucciones Dim algo As Boolean algo = True algo = False End Function
edit: para que funcione compilen el proyecto.
|
|
|
9
|
Programación / Programación Visual Basic / [DUDA] paso por valor o por referencia (byval/ byref)
|
en: 10 Julio 2011, 02:32 am
|
en varios codigos he visto que al momento de llamar a una funcion los parametros se pasan de manera distinta que la de su declaracion, si un `parametros esta como byref al llamar lo pasan como byval: 'en el parametro buffer esta sin nada (por ahi lei que si no se indica es ByRef por defecto) Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
'pasa el parametro buffer como byval Dim Buffer As String Buffer = Space(5000) Call ReadProcessMemory(hProcess, Direccion, ByVal Buffer, Len(Buffer), BytesLeidos)
otra api: 'ambas apis son por valor Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long
'pasa el windowname - titulo sin nada (por defecto seria ByRef) Dim Titulo As String Titulo = "Google" Call FindWindow(vbNullString, Titulo)
weno al final cual es el que vale? el ByVal/ByRef indicado en la declaracion de funcion o el ByVal/ByRef usado al momento de llamar a esa funcion? si pudieran explicarme mejor esto del ByVal/ByRef se los agradeceria . me lei : http://foro.elhacker.net/programacion_vb/memoria_en_vb-t114052.0.htmlno me kedo muy claro.
|
|
|
10
|
Programación / Programación General / ¿hay alguna web que contenga las APIS de windows para delphi?
|
en: 8 Julio 2011, 19:00 pm
|
hola estoy practicando delphi (el entorno : delphi 7) y pues queria centrarme en el manejo de las apis de windows pero hay poquisima informacion sobre esto , no se si quiizas alguien conosca alguna web/documento donde las expongan (el prototipo algun ejemplo, como declararlas) algo asi como la web y programa "apiguide" de visual basic 6.0 que tiene ufff como 900 apis.
|
|
|
|
|
|
|