|
Mostrar Temas
|
Páginas: 1 [2] 3 4 5
|
12
|
Programación / Programación General / [AYUDA] un codigo hecho en delphi
|
en: 7 Julio 2011, 00:30 am
|
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
|
Sistemas Operativos / Windows / ¿como cambiar de windows 7 a windows xp?
|
en: 27 Junio 2011, 21:52 pm
|
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
|
Programación / ASM / [DUDA]uso del mov en flat assembler
|
en: 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
|
Programación / ASM / ¿algun tuto y libro sobre flat assembler?
|
en: 22 Junio 2011, 01:10 am
|
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
|
Programación / Programación Visual Basic / [DUDA] abrir un proceso de usuario (OpenProcess) VB 6.0
|
en: 13 Junio 2011, 17:45 pm
|
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
|
Programación / Programación C/C++ / [?]programar con apis de windows ¿por donde empezar?
|
en: 12 Junio 2011, 01:45 am
|
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.
|
|
|
19
|
Seguridad Informática / Análisis y Diseño de Malware / ¿como leer memoria protegida de un proceso y saber cuanto ocupa?
|
en: 8 Junio 2011, 18:37 pm
|
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
|
Programación / Programación Visual Basic / ayuda, uso del ReadProcessMemory VB6.0
|
en: 7 Junio 2011, 20:54 pm
|
estoy haciendo un code para buscar datos en la memoria de un proceso uso el readprocessmemory: 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: Call ReadProcessMemory(hProcess, Address, ByVal Buffer, Len(Buffer), BytesLeidos)
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.
|
|
|
|
|
|
|