En fait j’avais dit précédemment que le membre HandleTableList pointé sur la liste des handes du process, en fait c’est une double liste chainée sur les _HANDLE_TABLE des autres process. La table des handes, si je ne me trompe pas et pointé par TableCode… à confirmer mais ca semble être ca :’
[...] le handle. On ne va pas s’amuser à énumérer tous les handles du process, cela est trop compliqué et prendrait trop de temps. On va ruser comme des renards, sachant qu’un handle n’est [...]
5.
Régis | février 29th, 2008 at 17:08
Salut,
Tu sembles bien t’y connaitre en process et handle.
Bien que je cherche activement, je trouve pas trop d’infos, de fil en aiguile, je suis tombé sur ton blog fort intéressant !
Je souhaite réaliser une petite application qui saurait copier un fichier alors que celui-ci est en cours d’utilisation et avec des droits bloquants sur ce fichier.
D’autant plus, ce fichier est un fichier temporaire et l’application qui l’utilise l’efface régulièrement et le supprime avant de se fermer.
Donc il est toujours locker.
Avec un application comme unlocker (http://ccollomb.free.fr/unlocker/) on peut copier ce fichier et sans que l’application qui l’utilise ne se coupe.
Unlocker est une application dont le code source n’est pas libre, j’ai donc pas trouvé comment il faisait.
Aurais tu les compétences pour me conseiller dans la réalisation de cette fonction de copie de fichier ?
[...] comment laissé sur mon blog récemment a attiré mon attention, j’ai donc décidé de répondre par mail à son auteur. Après [...]
8.
Régis | mars 3rd, 2008 at 09:59
Re,
J’attends avec impatience ton prochain article et merci pour tes réponses instructives.
Surtout que la plupart des codes trouvés sur le net pour par exemple avoir la liste des handles demandent d’utiliser une bibliothèque externe si on veut aussi les hadles de fichier.
Bibliothèque écrite en C du nom de kernelmemory.sys
Bjr à tous !
Régis, c’est étrange, je souhaite faire exactement la même chose !
Copier un fichier (bloqué exclusif) du temp vers ailleurs pour ensuite le filtrer et enfin l’enregistrer dans un format compatible avec mon pendentif à écouteurs.
Pour l’instant, unlocker me permet de le faire, à la main, merci encore à Cedrick, mais la programmation système comme vous la décrivez ici m’effraie un peu.
En plus, y’a pas la lumière dans les pages, fait bien sombre…
auriez vous l’amabilité d’héberger ou d’inclure des liens vers des kits complets avec les point-hash et/ou les point-déhellhell pour que les sources publiés ici puissent être aménagés et recompilés ?
Au fait ? Compilateur préféré pour faire cela ?Visual Studio : ya goude ou pagoude ?
Merci !
Yo, pour compiler il faut avoir Visual Studio, soit le 2005 soit le 8, en version express ca suffit. Il faut aussi le Windows Plaform SDK que vous pourrez trouver içi .
A la lecture de Windows Internals 4th ed (page 139), j’ai cru comprendre que la figure 3-21 que tu as reprise plus haut n’était valable que pour Windows 2000, il semblerait que pour Windows XP le bit #31 ne serve plus au lock, donc ton code
handle|=0×80000000; handle&=0xfffffff8;
serait à revoir pour XP..
Qu’en penses-tu?
Yo,
En fait c’est l’architecture de la table de handles qui change de Win2K à XP. La structure HANDLE_TABLE_ENTRY elle ne change pas.
15.
curieux | novembre 25th, 2008 at 18:05
C’est vrai que la structure de HANDLE_TABLE a changé, mais il me semble que les flags dans HANDLE_TABLE_ENTRY ont également subi quelques modifs:
Dans une Entry effective de la Table
W2K: (1er double word- object header pointer)
Bit#31: lock bit
BIt#2 : flag audit
Bit#1: flag inherit
Bit#0: flag protect on close
XP: (1er double word- object header pointer)
BIt#2 = flag audit
Bit#1: flag inherit
Bit#0: lock bit
(2ième double word- access mask)
Bit#25: flag protect on close
15 Comments
1. admin | janvier 13th, 2007 at 17:53
Mea culpa, une petite erreur c’était glissée, j’en est profité pour rajouter qques trucs
2. Nelio | janvier 13th, 2007 at 23:47
Elle se situait à quel niveau ?
3. admin | janvier 14th, 2007 at 13:54
En fait j’avais dit précédemment que le membre HandleTableList pointé sur la liste des handes du process, en fait c’est une double liste chainée sur les _HANDLE_TABLE des autres process. La table des handes, si je ne me trompe pas et pointé par TableCode… à confirmer mais ca semble être ca :’
Ivanlef0u
4. Ivanlef0u’s Blog &r&hellip | novembre 24th, 2007 at 16:22
[...] le handle. On ne va pas s’amuser à énumérer tous les handles du process, cela est trop compliqué et prendrait trop de temps. On va ruser comme des renards, sachant qu’un handle n’est [...]
5. Régis | février 29th, 2008 at 17:08
Salut,
Tu sembles bien t’y connaitre en process et handle.
Bien que je cherche activement, je trouve pas trop d’infos, de fil en aiguile, je suis tombé sur ton blog fort intéressant !
Je souhaite réaliser une petite application qui saurait copier un fichier alors que celui-ci est en cours d’utilisation et avec des droits bloquants sur ce fichier.
D’autant plus, ce fichier est un fichier temporaire et l’application qui l’utilise l’efface régulièrement et le supprime avant de se fermer.
Donc il est toujours locker.
Avec un application comme unlocker (http://ccollomb.free.fr/unlocker/) on peut copier ce fichier et sans que l’application qui l’utilise ne se coupe.
Unlocker est une application dont le code source n’est pas libre, j’ai donc pas trouvé comment il faisait.
Aurais tu les compétences pour me conseiller dans la réalisation de cette fonction de copie de fichier ?
Merci
@+
6. dora | février 29th, 2008 at 19:45
Et après on dit que l’opensource c’est à chier
7. Ivanlef0u’s Blog &r&hellip | mars 2nd, 2008 at 15:30
[...] comment laissé sur mon blog récemment a attiré mon attention, j’ai donc décidé de répondre par mail à son auteur. Après [...]
8. Régis | mars 3rd, 2008 at 09:59
Re,
J’attends avec impatience ton prochain article et merci pour tes réponses instructives.
Surtout que la plupart des codes trouvés sur le net pour par exemple avoir la liste des handles demandent d’utiliser une bibliothèque externe si on veut aussi les hadles de fichier.
Bibliothèque écrite en C du nom de kernelmemory.sys
Je te donne les liens :
http://www.cppfrance.com/codes/LSOF-LISTE-HANDLES-OUVERTS-PROCESSUS-COMME-SOUS-UNIX_39050.aspx
http://www.csharpfr.com/codes/LISTER-HANDLES-FICHIERS-CLE-REGISTRES-OUVERTS-PROGRAMME-NT_40231.aspx
@+
9. Art60 | mars 18th, 2008 at 08:11
Bjr à tous !
Régis, c’est étrange, je souhaite faire exactement la même chose !
Copier un fichier (bloqué exclusif) du temp vers ailleurs pour ensuite le filtrer et enfin l’enregistrer dans un format compatible avec mon pendentif à écouteurs.
Pour l’instant, unlocker me permet de le faire, à la main, merci encore à Cedrick, mais la programmation système comme vous la décrivez ici m’effraie un peu.
En plus, y’a pas la lumière dans les pages, fait bien sombre…
auriez vous l’amabilité d’héberger ou d’inclure des liens vers des kits complets avec les point-hash et/ou les point-déhellhell pour que les sources publiés ici puissent être aménagés et recompilés ?
Au fait ? Compilateur préféré pour faire cela ?Visual Studio : ya goude ou pagoude ?
Merci !
10. admin | mars 18th, 2008 at 23:36
Yo, pour compiler il faut avoir Visual Studio, soit le 2005 soit le 8, en version express ca suffit. Il faut aussi le Windows Plaform SDK que vous pourrez trouver içi .
11. newsoft | mars 26th, 2008 at 23:18
Je me suis laissé dire que Visual Studio 6 avait été le meilleur compilateur de tous les temps
12. newsoft | avril 5th, 2008 at 15:02
@Regis
Petite astuce pour copier un fichier ouvert en mode exclusif : utiliser la fonction Volume Shadow Copy de Windows.
Tous les détails ici :
http://blogs.msdn.com/adioltean/archive/2005/01/05/346793.aspx
13. curieux | novembre 23rd, 2008 at 23:53
A la lecture de Windows Internals 4th ed (page 139), j’ai cru comprendre que la figure 3-21 que tu as reprise plus haut n’était valable que pour Windows 2000, il semblerait que pour Windows XP le bit #31 ne serve plus au lock, donc ton code
handle|=0×80000000; handle&=0xfffffff8;
serait à revoir pour XP..
Qu’en penses-tu?
14. admin | novembre 25th, 2008 at 10:57
Yo,
En fait c’est l’architecture de la table de handles qui change de Win2K à XP. La structure HANDLE_TABLE_ENTRY elle ne change pas.
15. curieux | novembre 25th, 2008 at 18:05
C’est vrai que la structure de HANDLE_TABLE a changé, mais il me semble que les flags dans HANDLE_TABLE_ENTRY ont également subi quelques modifs:
Dans une Entry effective de la Table
W2K: (1er double word- object header pointer)
Bit#31: lock bit
BIt#2 : flag audit
Bit#1: flag inherit
Bit#0: flag protect on close
XP: (1er double word- object header pointer)
BIt#2 = flag audit
Bit#1: flag inherit
Bit#0: lock bit
(2ième double word- access mask)
Bit#25: flag protect on close
Trackback this post