Título: Mover .inc que esta siendo utilizado por otro programa. Publicado por: YagamiIori2002 en 22 Octubre 2011, 08:50 am Hola a todos, bueno he estado viendo en unas webs y no encuentro nada, mi problema es que estoy intentando mover un archivo que esta siendo utilizado por un procesos y me sale un error al mover, bueno yo se que para saber los procesos que estan corriendo se utiliza CreateToolhelp32Snapshot, Process32First, openprocess , el archivo es un"archivo.inc" para moverlo utilizo MoveFileEx y la funcion falla porque esta siendo utlizado por mi un programa , como moveria ese archivo claro terminando el el programa padre como saber que procesos es el padre? con alguna API se puede? o necesitas DRIVER para lograr el objetivo.
Título: Re: Mover .inc que esta siendo utilizado por otro programa. Publicado por: Eternal Idol en 22 Octubre 2011, 11:25 am Se puede hacer con la NTDLL. Aca tenes un par de enlaces con explicaciones y codigo fuente:
http://forum.sysinternals.com/topic18892.html http://stackoverflow.com/questions/733384/how-to-enumerate-process-handles http://www.codeguru.com/Cpp/W-P/system/processesmodules/article.php/c2827/ Título: Re: Mover .inc que esta siendo utilizado por otro programa. Publicado por: _Enko en 22 Octubre 2011, 21:48 pm Segun entiendo, ese "archivo.inc" (importante ocultar el nombre) no esta tirado en algun lado por ahi...
...si lo utiliza algun proceso, es que evidentemente se encuentra en un contexto, en un directorio, acompañado de otros archivos, a lo mejor hasta alguna dll o ejecutable. Sabiendo ese contexto, creo que se podria deducir bastante qeu aplicacion lo utiliza. Hasta filemonitor podria ayudar. Digo, porque hacer un driver, mas en asm puede ser bastante complicado por la poca documentacion, al menos que se sepa C/Cpp a un nivel suficinete para traducir. Título: Re: Mover .inc que esta siendo utilizado por otro programa. Publicado por: YagamiIori2002 en 23 Octubre 2011, 02:28 am Bueno estaba observando y la documentacion se refiere a que puedo mandar llamar las funciones como NtQuerySystemInformation, NtQueryInformationThread entre otras, sacar la posicion de memoria del INtDll guardar la direccion. puedo usar a mi manera la funcion? si es asi pues que bien, si me equivoco pues nimodo, voy a probar la informacion luego les digo si obtube, de antemano gracias por la informacion :)
Título: Re: Mover .inc que esta siendo utilizado por otro programa. Publicado por: Eternal Idol en 23 Octubre 2011, 08:12 am Si, podes obtener con GetProcAddress las direcciones de las funciones de la NTDLL.dll que esta cargada en todo programa y llamarla perfectamente. Y no, no hace falta hacer un driver.
Título: Re: Mover .inc que esta siendo utilizado por otro programa. Publicado por: YagamiIori2002 en 25 Octubre 2011, 05:55 am Se me esta complicando un poco el asunto, traduci la mayoria pero ya me quede sin saber que pasa, no puedo traducir las estructuras a ensamblador por ejemplo para usar la funcion NtQueryObject nesecitamos una estructura pero debemos hacerla y definirla, si he hecho estructuras pero estas deberdad que no puedo traducirla para usarlas en esta funcionr como lo es "OBJECT_TYPE_INFORMATION" si hay mucha informacion pero para C y solo se lo basico. yo la verdad no uso las estructuras en ensamblador por que ya estan difinidas pero esta pues no.
para ensamblado esta estructura es la de FindData estas estan basicas y faciles. ---------------------------------------------------------------------------------------------- w32finddata struct WFD_dwFileAttributes dd ? WFD_ftCreationTime filetime <?> WFD_ftLastAccessTime filetime <?> WFD_ftLastWriteTime filetime <?> WFD_nFileSizeHigh dd ? WFD_nFileSizeLow dd ? WFD_dwReserved0 dd ? WFD_dwReserved1 dd ? WFD_szFileName db maxpath dup (?) WFD_szAlternateFileName db 13 dup (?) w32finddata ends win32_find_data w32finddata <?> ----------------------------------------------------------------------------------------------- lo que no se es esto _OBJECT_TYPE_INFORMATION typedef struct { UNICODE_STRING TypeName; :huh: este pues ni idea TotalNumberOfHandles ULONG; este seria un dword TotalNumberOfObjects ULONG; este seria un dword WCHAR Unused1 [8]; este seria db 8 dup (0) HighWaterNumberOfHandles ULONG; dword HighWaterNumberOfObjects ULONG; dword WCHAR Unused2 [8]; este seria db 8 dup (0) InvalidAttributes ACCESS_MASK; <-------------esto ni idea como traducir GENERIC_MAPPING GenericMapping; <-------------esto ni idea como traducir ValidAttributes ACCESS_MASK; <-------------esto ni idea como traducir BOOLEANA SecurityRequired; <-------------esto ni idea como traducir BOOLEANA MaintainHandleCount; <-------------esto ni idea como traducir USHORT MaintainTypeList; <-------------esto ni idea como traducir POOL_TYPE PoolType; <-------------esto ni idea como traducir DefaultPagedPoolCharge ULONG; dword DefaultNonPagedPoolCharge ULONG; dword OBJECT_TYPE_INFORMATION}, * POBJECT_TYPE_INFORMATION; la verda no quiero que me digan todo si no como hacerle para traducir, algunos ejemplos de estructuras en ensamblador para irme familiarisando :huh: Título: Re: Mover .inc que esta siendo utilizado por otro programa. Publicado por: Eternal Idol en 25 Octubre 2011, 09:15 am UNICODE_STRING es otra estructura:
Código
Un USHORT es un WORD, ACCESS_MASK es un DWORD, BOOLEAN es un BYTE, POOL_TYPE es un DWORD y GENERIC_MAPPING es una estructura buscala. Título: Re: Mover .inc que esta siendo utilizado por otro programa. Publicado por: YagamiIori2002 en 4 Noviembre 2011, 04:12 am Disculapas por no haber contestado a tiempo pero no habia podido visitar el foro. Ok ahora me que mas claras las estructuras gracias, luego pongo mis resultados ;D
Título: Re: Mover .inc que esta siendo utilizado por otro programa. Publicado por: Eternal Idol en 4 Noviembre 2011, 08:59 am De nadas ::)
|