Mover .inc que esta siendo utilizado por otro programa.

Iniciado por YagamiIori2002, 22 Octubre 2011, 08:50 AM

0 Miembros y 3 Visitantes están viendo este tema.

YagamiIori2002

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.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

_Enko

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.

YagamiIori2002

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  :)

Eternal Idol

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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

YagamiIori2002

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:



Eternal Idol

UNICODE_STRING es otra estructura:

Código (asm) [Seleccionar]
UNICODE_STRING STRUCT
_Length WORD ?
MaximumLength WORD ?
Buffer PWSTR ?
UNICODE_STRING ENDS


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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

YagamiIori2002

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

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón